前言:
经过痛苦的编译过程,相信你终于编译成功了,第一次编译caffe基本上会出现关于libcaffe的问题,如有其它问题,可能是你下载的vs2013或者某些配置有问题。可以搜集一些资料进行解决。接下来就要训练一下模型了。
我们这里训练的是caffe自带的cifar模型。
参考博客:
http://blog.csdn.net/zb1165048017/article/details/51476516
http://blog.csdn.net/sinat_27403413/article/details/53129467
第一步:
下载cifar数据集。
百度云:(链接:http://pan.baidu.com/s/1mh7BwIc 密码:bydp)。
第二步:
在caffe-master\Build\x64\Debug\文件夹下新建文件夹input_folder(需要重新在debug模式下编译caffe)。
将上一步下载的数据集copy进来,如下图所示:
第三步:
返回上一级目录,在debug文件夹下新建bat文件,命名为convert.bat(名称随意)
在convert.bat文件内写入以下命令
convert_cifar_data.exe input_folder output_folders leveldb
pause
运行此bat文件,会生成一个文件夹output_folders,里面包含两个文件夹,如下图所示
第四步
生成均值文件:
在DEBUG文件夹下新建bat文件,名称随意,我这里是mean.bat
写入以下命令:
compute_image_mean.exe output_folders/cifar10_train_leveldb mean.binaryproto --backend=leveldb
pause
双击mean.bat文件,会生成均值文件:mean.binaryproto
第五步:
将debug文件夹下的mean.binaryproto以及output_folders下的两个文件夹拷贝到caffe-master\examples\cifar10
路径如下图:
第六步:
在模型训练之前,需要先修改配置文件:
caffe-master\examples\cifar10文件夹下
1、cifar10_quick_solver.prototxt文件最后一行:
2、cifar10_quick_train_test.prototxt文件修改数据格式为leveldb:
第七步:
在caffe-master文件夹下新建train.bat文件,用来训练模型(这里我们用到的是release模式下编译的caffe)。
.\Build\x64\Release\caffe.exe train --solver=examples/cifar10/cifar10_quick_solver.prototxt
pause
(在这里,一定要核对一下自己的路径名和文件名,这里很容易出错)
双击train.bat,出现以下界面:
静等。。。。。。
训练完成后,会得到如下两个文件:
第八步:
模型的测试,在caffe-master文件夹下新建bat文件,test.bat用于模型测试:
.\Build\x64\Release\caffe.exe test --model=examples/cifar10/cifar10_quick_train_test.prototxt -weights=examples/cifar10/cifar10_quick_iter_4000.caffemodel.h5
pause
双击test.bat,出现如下情况:
第九步:
在examples\cifar10文件夹中新建一个代表cifar10数据标签的txt文件,命名为synset_words.txt。
在caffe-master文件夹里新建一个bat文件,cifar_classification.bat。
Build\x64\Release\classification.exe examples\cifar10\cifar10_quick.prototxt examples\cifar10\cifar10_quick_iter_4000.caffemodel.h5 examples\cifar10\mean.binaryproto examples\cifar10\synset_words.txt examples\cifar10\dog4.png
pause
第一行代码中的最后是图片的路径
dog4.png
您可以修改路径指向你下载的图片。(为了准确率,建议你下载标签上面的图片,比如猫、狗等)
双击 cifar_classification.bat,可以得到如下结果:
这个准确率很低,因为50000张图片的数据集数据量还很小,虽然不容易得到正确结果,但至少说明你走通了。继续学习!