使用caffe制作自己的lmdb数据集

    新鸟最近在一家半导体公司实习,接触到的项目都是基于 caffe框架的深度学习方面的知识,前期对tensorflow比较熟,但是到了公司没办法啊!!!不会怎么办,只能硬着头皮上啊!!!!中途碰壁不少,写这篇博客只是想以后方便查阅资料,另外一方面是给同样在深度学习里面摸爬滚打的朋友一个参考吧!!!!

    公司提供的数据都是工程师切分好的数据集,但是图像的大小有大有小,不能直接拿过来用在神经网络上面使用,因此需要我这样的菜鸟对数据集进行必要的处理。首先,caffe的数据集一般为lmdb或levelmdb的文件。

    在caffe 中开发者为我们这样的新鸟提供了这样一个类:convert_imageset.cpp可以直接拿过来使用,该类存放在根目录下面的tools文件下。使用之前需要编译,编译生成的可执行文件放在build/tools下面,这个文件的作用就是将图片文件转换成caffe框架下直接使用的lmdb文件。下面开始数据集的制作,其中的数据是来自kaggle平台上面dog vs cat比赛的数据集,我只取用了其中的训练集和测试集,训练集10000张图片,测试集5000张图片,在这里首先感谢kaggle平台提供优秀的数据集。、

1.下载数据集

   kaggle平台数据集的链接为:

   我数据集的来源是:https://www.kaggle.com/siddarthareddyt/cats-and-dogs

2.将数据集转换为txt形式

  数据集存放的位置是:/home/work.caffe/examples/images/dataset,在该文件下创建一个create_filelist.sh文件,文件内容如下:

 使用caffe制作自己的lmdb数据集_第1张图片

    DATA表示生成train.txt和test.txt的路径,DATA_TRAIN表示训练集数据的路径,DATA_TEST表示测试集数据的路径。

  rm: 删除文件 

  find:寻找文件

  cut: 截取路径

  sed:在每行的最后面加上标注,找到cat.*.jpg文件在txt文件内添加1

 说明:cut是截取路径,这里截取的路径是DATA_TRAIN和DATA_TEST的路径,以  /  进行划分:

 如: examples/imges/dataset/train/cat.*.jpg此时划分后examples位置为1,images为2,dataset为3,train为4,cat.*.jpg为5

因此-f5的意思就很明显了。

通过回到caffe根目录:执行 ./examples/images/dataset/create_filelist.sh会生成train.txt和test.txt文件。温馨提示:examples前面是:点斜杠 “./” ,我加粗了,否则编译通不过。

打开train.txt文件内容如下:

使用caffe制作自己的lmdb数据集_第2张图片

3、生成lmdb数据集

在home/work.caffe/examples/images/dataset文件下创建一个create_lmdb.sh文件,内容如下:

使用caffe制作自己的lmdb数据集_第3张图片

build/tools/convert_imageset,通过调用convert_imageset函数将图片数据集转化为lmdb数据格式,

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

--resize_height --resize_width将图片切片为宽高均为32的新的数据集。

/home//zhaoyoubiao/caffe/examples/images/dataset/train和/home//zhaoyoubiao/caffe/examples/images/dataset/test为训练集合测试集图片的绝对路径。通过执行如下命令:

将在/examples/images/dataset目录下生成如下两个文件:img_train_lmdb和img_test_lmdb,至此在caffe框架下制作lmdb数据格式的数据集已经圆满完成。

你可能感兴趣的:(深度学习,linux)