本文讲解如何对网上下载的一个图片利用训练好的cifar模型进行分类
第一步
上一篇文章训练好以后会得到两个文件
从网上查阅资料解释来看,第一个caffemodel是训练完毕得到的模型参数文件,第二个solverstate是训练中断以后,可以用此文件从中断地方继续训练(具体使用方法目前尚未测试)
caffemodel的百度云地址:链接:http://pan.baidu.com/s/1sl6nPXb 密码:omow
第二步
新建一个代表cifar10数据标签txt文件,放在examples下的cifar10文件夹内,本文采用名称为synset_words的txt文件,内容如下:
从网上随便下载一个图片,但是注意,最好是cifar里面包含的种类,当然也可以下载其他的,不过分类得到的标签肯定不对,因为训练得到的模型不包含此种类。
比如我下载了一只猫:
第三步
使用模型进行分类,建立一个bat文件,比如我在E:\caffeDEV1\caffe-windows\Build\x64\Release下[同样可以在debug下]建立classification.bat,内容如下
classification.exe E:\caffeDEV1\caffe-windows\examples\cifar10\cifar10_quick.prototxt E:\caffeDEV1\caffe-windows\examples\cifar10\cifar10_quick_iter_4000.caffemodel.h5 E:\caffeDEV1\caffe-windows\examples\cifar10\mean.binaryproto E:\caffeDEV1\caffe-windows\examples\cifar10\synset_words.txt E:\caffeDEV1\caffe-windows\examples\cifar10\dog.jpg
pause
如果你建立在其他地方,请注意你的路径。bat的格式为XX/XX/classification.exe xx/xx/网络结构(cifar10_quick.prototxt) XX/XX/训练好的模型(.caffemodel.h5) XX/XX/均值文件 XX/XX/下载的图片(XX/XX代表路径 )
第四步
也就说最后一步,直接运行这个bat文件,双击就行,得到如下结果
【注】我在其中一个地方卡了很久,千万千万不要把modelcaffe.h5的后缀改为modelcaffe,也就是说,千万别删掉了h5,我一直以为调用cifar10_quick_iter_4000.caffemodel,结果呵呵了,卡了一下午
第五步
第四步实现得是单张图片的识别。第五步则对测试集进行准确率的分批测试
直接在E:\caffeDEV1\caffe-windows下建立一个bat文件(test_cifar.bat),内容如下:
.\Build\x64\Release\caffe.exe test --model=examples/cifar10/cifar10_quick_train_test.prototxt -weights=examples/cifar10/cifar10_quick_iter_4000.caffemodel.h5 -gpu=0
pause
【PS】注意,如果出现“cannot use GPU in CPU-only caffe :check mode.check failure stack trace.”问题,去掉后面的-gpu=0即可,代表使用CPU测试。运行之后效果如下:
【更新日志2017-9-25】
从此博客中发现caffe -test命令默认测试50次,也就是说可能并没有测试完全整个测试集, 所以我们需要自己计算一下应该计算多少次, 总样本数/ batchsize,然后再命令中使用-iterations=? 指定你的测试次数,比如我计算需要测试100次才能覆盖整个样本, 那么就使用
.\Build\x64\Release\caffe.exe test --model=examples/cifar10/cifar10_quick_train_test.prototxt -weights=examples/cifar10/cifar10_quick_iter_4000.caffemodel.h5 -gpu=0 -iterations=100
pause