1 引言
1-1 以example_mnist为例,如何加载属于自己的测试集?
首先抛出一个问题:在example_mnist这个例子中,测试集是人家给好了的。那么如果我们想自己试着手写几个数字然后验证识别效果又当如何呢?
观察CAFFE_ROOT/examples/mnist/下的lenet_train_test.prototxt文件,发现里面既给出了训练集的路径,又给出了测试集的路径。因此答案很显然了,我们可以把自己的测试集做成leveldb(或lmdb)格式的,然后在lenet_train_test.prototxt中给出它的路径,然后按照上一次博客说的那样做即可。
1-2 如何将自己数据转成leveldb/lmdb格式?几个参考资料
如何将自己的训练集和测试集(比方说一些写着我们自己写的数字的图像)做成leveldb格式?
之所以需要转格式,是因为我之后有一个想做的小实验《用简单的神经网络来实现二元二次函数的拟合》,如此一来输入的数据就得是leveldb或者lmdb格式,需要把这一点搞清楚才能获取训练集和测试集。这个问题我还没有尝试过,不过网上有很多博客有相关的说明,现在列几个我觉得可以研读一下的:
[1]CSDN博客《caffe神经网络框架的辅助工具(将图片转为leveldb格式)》(该博客里面附有C++源码,但是非常难懂);
[2]知乎问题《caffe下如何把自己的数据转成lmdb或者leveldb-beanfrog的回答》(里面有python代码,但牵扯到更多不熟悉的问题,还要先研究一下caffe怎么在python中用,比如被import的caffe包如何生成?)。
[3]薛开宇《学习笔记3用自己的数据训练和测试“CaffeNet”》(本次博客我就是参考他的内容,他的这个博客是[4]的详细版,写的很好)。
[4]caffe官网《Caffe|ImageNet tutorial》(其开头有这么一段话:This guide is meant to get you ready to train your own model on your own data.)
2 动手将自己的图像数据转成lmdb格式
2-1 获取一个文件夹内全部图像的名称
(1)首先新建一个文件夹叫“批量名称”,然后在里面放上若干图片:
(2)接下来开始菜单→cmd,一路cd索引路径直到目录“批量名称”下:
(3)输入命令“dir/s/on/b>d:/train.txt”,则会在D盘生成一个名为train的文本文件,里面存放着“批量名称”中全部图像的路径。
(4)可以使用查找与替换功能,使得上面的内容被修改为“文件名 label”的形式:
①索引“C:\Users\LJJ\Desktop\测试图\caffe实验\批量名称\”替换成空。
相当于把这些路径去掉,只保留文件名;
②索引“jpg”替换成“jpg 1”。这里1是labelÿ