需要以下文件
- 訓練好的 model 文件。文件已存在,假設(shè)所在路徑為 ~/caffe/model/iter120.caffemodel
- 訓練 model 時用到的均值文件。文件已存在,假設(shè)所在路徑為 ~/caffe/examples/myfile/mean.binaryproto
- 新編寫一份清單文件 words.txt
- 一個由 train_val.prototxt 修改而來的 deploy.prototxt 模型文件
- 待分類圖像,假設(shè)路徑為 ~/caffe/image/unknow.jpg
編寫清單文件
在 ~/caffe/examples/myflie 下新建 words.txt。文檔第一行為訓練模型標號 0 號的分類名,第二行為模型標號 1 號的分類名,等等。
例如,訓練模型貼標簽時,將大象標記為 3 號,將馬標記為 4 號,將花標記為 5 號,將 車標記為 6 號,將恐龍標記為 7 號,那么在編寫清單文件 words.txt 時,第一行填 0,第二行填 1,第三行填 2,第四行填大象,第五行填馬,第六行花,第七行車,第八行恐龍,第九行填8,...。最后總行數(shù)為模型文件 train_val.prototxt 中 fc8 層 num_output 數(shù)。

train_val.prototxt的fc8層num_output: 15

分15類(其實是分5類,其他用數(shù)字湊數(shù))
修改模型文件
若訓練模型時用的 caffe 自帶模型 ~/caffe/models/bvlc_reference_caffenet 下的 solver.prototxt 和 train_val.prototxt ,那么直接使用該文件夾下的 deploy.prototxt 即可。
注意,deploy.prototxt 中 fc8 層的num_output值應與 train_val.prototxt 的相同,其為所分類數(shù)。

deploy的fc8層num_output也為15
進行分類
在~/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
五個參數(shù):
第一個參數(shù):deploy 配置文件
第二個參數(shù):caffemodel 文件
第三個參數(shù):均值文件
第四個參數(shù):標簽清單文件
第五個參數(shù):待分類的圖片
分類結(jié)果如下。

分類結(jié)果

unknow.jpg
參考資料
http://www.cnblogs.com/denny402/p/5111018.html
http://www.datakit.cn/blog/2015/08/03/caffe_introduction.html