需要以下文件
- 训练好的 model 文件。文件已存在,假设所在路径为 ~/caffe/model/iter120.caffemodel
- 训练 model 时用到的均值文件。文件已存在,假设所在路径为 ~/caffe/examples/myfile/mean.binaryproto
- 新编写一份清单文件 words.txt
- 一个由 train_val.prototxt 修改而来的 deploy.prototxt 模型文件
- 待分类图像,假设路径为 ~/caffe/image/unknow.jpg
编写清单文件
在 ~/caffe/examples/myflie 下新建 words.txt。文档第一行为训练模型标号 0 号的分类名,第二行为模型标号 1 号的分类名,等等。
例如,训练模型贴标签时,将大象
标记为 3 号,将马
标记为 4 号,将花
标记为 5 号,将 车
标记为 6 号,将恐龙
标记为 7 号,那么在编写清单文件 words.txt 时,第一行填 0,第二行填 1,第三行填 2,第四行填大象
,第五行填马
,第六行花
,第七行车
,第八行恐龙
,第九行填8,...。最后总行数为模型文件 train_val.prototxt 中 fc8 层 num_output 数。
修改模型文件
若训练模型时用的 caffe 自带模型 ~/caffe/models/bvlc_reference_caffenet 下的 solver.prototxt 和 train_val.prototxt ,那么直接使用该文件夹下的 deploy.prototxt 即可。
注意,deploy.prototxt 中 fc8 层的num_output值应与 train_val.prototxt 的相同,其为所分类数。
进行分类
在~/caffe目录输入以下命令:
./build/examples/cpp_classification/classification.bin \
examples/myfile/deploy.prototxt \
models/re/_iter_120.caffemodel \
examples/myfile/mean.binaryproto \
examples/myfile/words.txt \
examples/images/unknow.jpg
五个参数:
第一个参数:deploy 配置文件
第二个参数:caffemodel 文件
第三个参数:均值文件
第四个参数:标签清单文件
第五个参数:待分类的图片
分类结果如下。
参考资料
http://www.cnblogs.com/denny402/p/5111018.html
http://www.datakit.cn/blog/2015/08/03/caffe_introduction.html