Windows Caffe(三) 图像数据转化为Caffe可以运行的数据

在运行Caffe自带的两个例子的时候,我们的数据都来自互联网,是直接下载的二进制文件。

但我们大多数情况下使用的是原始的图片数据(如.jpg .png等),接下来研究如何将原始的图片数据转化为caffe可以运行的数据。

1、准备图片数据

caffe安装完成之后,在example/images文件下会有四张.jpg图片,cat.jpg, cat gray,jpg, cat_gray.jpg, fish-back.jpg

2、生成图片清单

我们写需要一个sh脚本,调用Linux命令生成图片的清单。Windows下如何运行shell脚本,第一个实验有说。

编写脚本的原因是我们有大量的训练数据和测试数据,手写清单不大现实。

具体操作

在example/images文件夹下创建一个create_filelist.sh 文件,文件内容如下:

# /usr/bin/env sh
DATA=D:/Caffe/Caffe_BVLC/examples/images
echo "Create train.txt..."
exec 2>>log.txt
rm -rf $DATA/train.txt
find $DATA -name *cat.jpg | cut -d ‘/‘ -f6 | sed "s/$/ 1/">>$DATA/train.txt
find $DATA -name *bike.jpg | cut -d ‘/‘ -f6 | sed "s/$/ 2/">>$DATA/tmp.txt
cat $DATA/tmp.txt>>$DATA/train.txt
rm -rf $DATA/tmp.txt
echo "Done.."

这里对脚本做下大致的解释

DATA=D:/Caffe/Caffe_BVLC/examples/images 图片所在位置

exec 2>>log.txt 将执行期间所遇到的错误写入log.txt文件夹下

rm -rf递归强制删除

find $DATA -name *cat.jpg | cut -d ‘/‘ -f6 | sed "s/$/ 1/">>$DATA/train.txt 在$DATA目录下,查找*cat.jpg文件,cut表示截取路径,-f6表示第六层目录下(根据自己的情况修改)。sed表示在每行后面加上标注。

cat $DATA/tmp.txt>>$DATA/train.txt 将temp.txt文件中的内容写到train.txt文件后面,相当于两个文件合并。

运行该文件,会生成一个train.txt的文件。

3、生成lmdb格式的文件

将图片数据转化为lmdb格式的文件需要使用caffe提供的convert_imageset文件

该文件所在目录:

D:\Caffe\Caffe_BVLC\Build\x64\Release

该文件的使用格式:

convert_imageset [FLAGS] ROOTFOLDER/ LISTFILE DB_NAME

分析一下convert_imageset的四个参数

FLAGS

-gray: 是否以灰度图的方式打开图片。程序调用opencv库中的imread()函数来打开图片,默认为false

-shuffle: 是否随机打乱图片顺序。默认为false

-backend:需要转换成的db文件格式,可选为leveldb或lmdb,默认为lmdb

-resize_width/resize_height: 改变图片的大小。在运行中,要求所有图片的尺寸一致,因此需要改变图片大小。 程

序调用opencv库的resize()函数来对图片放大缩小,默认为0,不改变

-check_size: 检查所有的数据是否有相同的尺寸。默认为false,不检查

-encoded: 是否将原图片编码放入最终的数据中,默认为false

-encode_type: 与前一个参数对应,将图片编码为哪一个格式:‘png‘,‘jpg‘......

ROOTFOLDER

图片存放的路径

LISTFILE

文件清单

DB_NAME

最终生成的lmdb或leveldb所存放的路径

具体操作

在example/images文件夹下创建一个create_lmdb.sh 脚本,脚本内容如下:

DATA=D:/Caffe/Caffe_BVLC/examples/images
rm -rf $DATA/img_train_lmdb
D:/Caffe/Caffe_BVLC/Build/x64/Release/convert_imageset.exe --shuffle --resize_height=256 --resize_width=256 $DATA $DATA/train.txt $DATA/img_train_lmdb

执行该脚本,会在该目录下生成一个新的文件,如下图所示:

至此,将原始的图片数据转化为caffe能够执行的lmdb数据实验 完成。

如有疑问,欢迎一起探讨!

时间: 2024-07-30 10:17:28

Windows Caffe(三) 图像数据转化为Caffe可以运行的数据的相关文章

使用Caffe完成图像目标检测 和 caffe 全卷积网络

一.[用Python学习Caffe]2. 使用Caffe完成图像目标检测 标签: pythoncaffe深度学习目标检测ssd 2017-06-22 22:08 207人阅读 评论(0) 收藏 举报  分类: 机器学习(22)  深度学习(12)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 2. 使用Caffe完成图像目标检测 本节将以一个快速的图像目标检测网络SSD作为例子,通过Python Caffe来进行图像目标检测. 必须安装windows-ssd版本的Ca

用caffe给图像的混乱程度打分

Caffe应该是目前深度学习领域应用最广泛的几大框架之一了,尤其是视觉领域.绝大多数用Caffe的人,应该用的都是基于分类的网络,但有的时候也许会有基于回归的视觉应用的需要,查了一下Caffe官网,还真没有很现成的例子.这篇举个简单的小例子说明一下如何用Caffe和卷积神经网络(CNN: Convolutional Neural Networks)做基于回归的应用. 原理 最经典的CNN结构一般都是几个卷积层,后面接全连接(FC: Fully Connected)层,最后接一个Softmax层输

『Caffe』图像检测程序(待续)

和图像分类不同,图像检测涉及更多的技术基础,本程序是基于传统的滑窗模式完成检测,当下已经有了最新的基于caffe的RCNN.Fast-RCNN.Faster-RCNN以及SSD框架 ,个中思路不同,不得叹惋前路漫漫.由于接触本部时走了很多弯路,所以给出几个关键词用于学习滑窗检测理论基础学习:overfeat:全卷积网络:图像金字塔:非极大值抑制,当然了,传统的卷积分类网络也要了解. 程序调用逻辑图如下: 库导入以及参数设置部分: 1 # coding=utf-8 2 import numpy a

Caffe使用step by step:caffe框架下的基本操作和分析

caffe虽然已经安装了快一个月了,但是caffe使用进展比较缓慢,果然如刘老师说的那样,搭建起来caffe框架环境比较简单,但是完整的从数据准备->模型训练->调参数->合理结果需要一个比较长的过程,这个过程中你需要对caffe中很多东西,细节进行深入的理解,这样才可以知道为什么能有这样的结果,在训练或者fine-tuning时知道针对调整的方法.下面针对caffe中的使用进行讲解. 在使用过程中,caffe官网上提供了详细的使用说明,如果感觉仍然存在一些困难,可以使用谷歌或百度搜索自

将图片数据转化为TFRecord格式与读取

将图片数据转化为TFRecord格式与读取 一.问题情景描述 目录下有一个叫做"Original"的文件夹,文件夹里有十个子文件,分别命名为1,2···一直到10(为了做10轮取平均),这10个子文件夹里还有四个子文件夹,分别命名为"train0","train1","test0","test1".其中含义如其命名所示.这四个子文件夹里一共有若干张JPG格式图像数据.现欲将这份图像数据转化为TFRecord

iOS开发之十六进制颜色数据转化为UIColor对象

1.若从服务器返回的颜色字符串数据为 hexColor:"09B57A" hexColor分为三部分:09.B5.7A 分别对应三色值 R.G.B 十六进制 十进制 00 0 01 1 ... ... 09 9 0A 10 0B 11 ... ... 0F 15 10 16 11 17 12 18 ... ... 1F 31 ...   FF 255         代码如下: 1 - (UIColor *)getColor:(NSString *)hexColor 2 { 3 uns

Python进阶(三十九)-数据可视化の使用matplotlib进行绘图分析数据

Python进阶(三十九)-数据可视化の使用matplotlib进行绘图分析数据 ??matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. ??它的文档相当完备,并且 Gallery页面 中有上百幅缩略图,打开之后都有源程序.因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定. ??在Linux下比较著名的数据图工具还有gnuplot

Windows Phone本地数据库(SQLCE):14、删除数据(翻译)

这是“windows phone mango本地数据库(sqlce)”系列短片文章的最后一篇第十四篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需要知道的知识点.我将谈谈在windows phone mango本地数据库里怎么删除数据. 从数据库里删除数据是一个三个步骤的过程.首先,从数据库里查询要删除的对象,然后,根据你要删除的一个或多个对象,调用DeleteOnSubmit方法或者DeleteAllOnSubmit 方法删除,分别使这些对

Windows Phone本地数据库(SQLCE):13、更新数据(翻译)

这是“windows phone mango本地数据库(sqlce)”系列短片文章的第十三篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需要知道的知识点.我将谈谈在windows phone mango本地数据库里怎么更新数据. 更新数据到数据库是一个三个步骤的过程.首先,查询要被更新的对象,然后更改数据,最后调用SubmitChanges 方法保存这些更改到数据库. 注释:如果你绑定在DataContext里的对象到页面上的控件,根据用户的