Windows玩转Caffe(二):训练cifar10模型,并用其模型分类图片【附:多图】
欲练此功,必先自攻Windows玩转Caffe(一):http://blog.****.net/u012958854/article/details/78123610
1. 下载cifar10数据
http://www.cs.toronto.edu/~kriz/cifar-10-binary.tar.gz
下载数据到caffe-master\data\cifar10,并解压;
其数据为binary格式,需要转换为leveldb(或lmdb)。
2. 转换cifar10数据格式
编译convert_cifar_data项目,生成convert_cifar_data.exe;
打开cmd,cd到caffe-master根目录(后续所有命令都是在这个路径下),输入命令:
Build\x64\Release\convert_cifar_data.exe data\cifar10\cifar-10-batches-binexamples\cifar10 leveldb
在caffe-master\ examples\cifar10文件夹下生成cifar10_test_leveldb和cifar10_train_leveldb文件夹。
3. 求数据图像均值
编译compute_image_mean项目,生成compute_image_mean.exe;
cmd输入命令:
Build\x64\Release\compute_image_mean.exe examples\cifar10\cifar10_train_leveldbexamples\cifar10\mean.binaryproto --backend=leveldb
在caffe-master\examples\cifar10文件夹下生成mean.binaryproto文件。
4. 训练cifar10模型
编译caffe项目,生成caffe.exe;【详见:http://blog.****.net/u012958854/article/details/78123610】
打开caffe-master\examples\cifar10\cifar10_full_train_test.prototxt文件:(不用quick,否则你总会觉得准确度是不是能再高点啊,终会用full;用quick能暂时省点时间,最后还是浪费了时间,相信我,一步到位吧)
修改backend: LMDB 为backend: LEVELDB(两处)
修改source:"examples/cifar10/cifar10_train_lmdb" 为 source:"examples /cifar10/cifar10_train_leveldb"
修改source:"examples/cifar10/cifar10_test_lmdb" 为 source:"examples /cifar10/cifar10_test_leveldb"
(若用CPU,修改cifar10_full_solver.prototxt文件最后一行为:solver_mode:CPU)
cmd输入命令:
Build\x64\Release\caffe.exe train--solver=examples/cifar10/cifar10_full_solver.prototxt
N久之后,训练结果:
训练完成后caffe-master/examples/cifar10文件夹下生成若干caffemodel和solverstate文件。
(其中caffemodel是训练完毕得到的模型参数文件,solverstate是训练中的snapshot文件)
附:caffe用法
5. 对图像进行分类
在caffe-master\data\cifar10下新建文本文件synset_words.txt。
文件内容是cifar10里面包含的分类种类,如下:
编译classification项目,生成classification.exe
命令行输入:
Build\x64\Release\classificationexamples/cifar10/cifar10_full.prototxtexamples/cifar10/cifar10_full_iter_70000.caffemodel.h5examples/cifar10/mean.binaryproto examples/cifar10/synset_words.txtexamples/images/cat.jpg
Build\x64\Release\classification examples/cifar10/cifar10_full.prototxt examples/cifar10/cifar10_full_iter_70000.caffemodel.h5 examples/cifar10/mean.binaryproto examples/cifar10/synset_words.txt examples/images/fish-bike.jpg
就会出来分类结果,如下: