《智能系统与技术丛书 深度学习实践:基于Caffe的解析》—3.4Caffe简单训练分类任务
3.4 Caffe简单训练分类任务
1.需要准备的数据集
到官网上下载cifar10数据集,如果使用的是C++,那么下载.bin文件。官网对该数据集的介绍已经很详细了,这里就不再说明了。下载完成之后,解压,会看到共有6个“.bin”文件,前面5个是训练集,最后一个是测试集,如图3-3所示。
图 3-3
2.将数据集转换为LevelDB
第一步,生成convert_cifar_data.exe文件。将examples/cfar10目录下的convert_cifar_data.cpp文件加入到工程中,如图3-4和图3-5所示。
图 3-4
然后,运行编译,在相应的文件夹中将生成的exe文件重命名为convert_cifar_data.exe。
第二步,产生数据集。
首先,在convert_cifar_data.exe所在的文件夹目录下,新建两个文件夹,分别命名为input_folder和output_folder。在input_folder中放入第一阶段准备好的cifar10数据,output_folder为转换数据之后的存储位置。
然后,在同级目录下新建一个批处理文件,使其后缀名为“.bat”,输入以下内容并保存:
convert_cifar_data.exe input_folder output_folders leveldb
pause
接着,运行“.bat”,如图3-6所示。
图 3-6
运行完成后,output_folders文件夹中将会产生两个新的文件夹,如图3-7所示。
这两个文件夹中的内容如图3-8和图3-9所示。
图 3-7
图 3-8
图 3-9
至此已经成功将数据集转换为LevelDB。
3. 生成均值文件
将tools文件夹中的compute_image_mean.cpp文件导入工程中,如图3-10所示。
编译成功后,相应的文件夹目录下将会生成exe文件,将其命名为compute_image_mean.exe,如图3-11所示。
图 3-10 图 3-11
然后,在当前目录下新建一个bat文件,内容如下:
compute_image_mean.exe
output_folders/cifar10_train_leveldb ./mean.binaryproto
--backend=leveldb pause
最后,运行“.bat”,如图3-12所示。
图 3-12
运行之后,当前文件夹下会生成一个mean.binaryproto文件(如图3-13所示),该文件即为均值文件。
图 3-13
4. 训练cifar10数据集
首先,将examples\cifar10文件下的cifar10_quick_trian_test.prototxt和cifar10_quick_solver.prototxt复制到均值文件所在的目录之下,如图3-14所示。
图 3-14
然后,修改cifar10_quick_train_test.prototxt文件中的mean_file和source的路径,即将backend修改为LevelDB,如图3-15所示。
之后,修改cifar10_quick_solver.prototxt文件中的net和snapshot prefix的路径,如图3-16所示。
图 3-15
图 3-16
接下来就可以编译caffe.exe了。
将caffe.cpp文件加入到工程项目下并编译,然后将生成的caffe.exe文件移动到均值文件目录下(如图3-17所示)。
图 3-17
现在,新建一个bat文件,其内容具体如下:
Caffe.exe train
--solver=D:/CaffeeLibs/Data/cifar-10/cifar10_quick_solver.prototxt
pause
执行上述命令,开始训练,如图3-18所示。
图 3-18
训练完成后的截图如图3-19所示。
图 3-19
此时,当前目录下将会生成一个cifar10_quick_iter_4000.caffemodel.h5文件,这表明cifar10的训练已经顺利完成。
在这一节中,大家需要学习的是,在已知的各种标注信息的情况下如何训练一个数据,并生成LevelDB和LMDB的脚本。
- 点赞
- 收藏
- 关注作者
评论(0)