一、CIFAR-10数据模型训练
1.下载二进制的cifar文件
cd $CAFFE_ROOT
./data/cifar10/get_cifar10.sh
说明:该脚本会下载二进制的cifar,并解压,会在/data/cifar10中出现很多batch文件,如下图所示:
2.生成数据集库和数据集图像均值文件
cd $CAFFE_ROOT
./examples/cifar10/create_cifar10.sh
说明:运行后将会在examples中出现数据集cifar10_xxx_lmdb和数据集图像均值mean.binaryproto,如下图所示:
3.选择CPU或GPU训练方式
CIFAR-10比较小,可以用GPU训练,当然也可以用CPU训练。为了比较CPU和GPU的训练速度,通过修改cifar*solver.prototxt中的一行代码来实现。
4.以“quick”模型进行训练,生成模型
cd $CAFFE_ROOT
./examples/cifar10/train_quick.sh
说明:先以0.001的学习率迭代4000次,再以0.01的学习率接着再迭代1000次,共5000次。训练后生成模型文件:
cifar10_quick_iter_4000.caffemodel.h5、ifar10_quick_iter_4000.solverstate.h5,
结果如下图所示,生成
二、在终端使用python接口应用模型预测
方法:caffe开发团队实际上也编写了一个python版本的分类文件,路径为python/classify.py,也即是:使用python/classify.py代码进行图像文件预测。但是,该文件有两个问题:第一、均值计算错误。第二、预测结果保存至文件中看不到。因此,先解决这两个问题:
1.修改均值计算错误
在classify.py文件找到
mean = np.load(args.mean_file)
在下面加上一行:
mean=mean.mean(1).mean(1)
如图:
2.添加在终端命令行中显示结果代码,代码太长,如下图所示:
3.根据上述代码,修改分类标签文件内容,如下图所示:
标签文件主目录下caffe/data/clfar10下,名字为:batches.meta.txt
4.找到测试图片
测试图片为主目录/caffe/examples/images下cat.jpg文件,如下图所示:
5.使用classify.py对caffe自带的测试图片cat.jpg进行分类预测。
python python/classify.py --print_results --model_def examples/cifar10/cifar10_quick.prototxt --pretrained_model examples/cifar10/cifar10_quick_iter_5000.caffemodel.h5 --labels_file data/cifar10/batches.meta.txt --center_only examples/images/cat.jpg foo
执行命令如下图所示:
执行结果如下图所示:
命令行参数说明:--print_results 输入出结果
--model_def 模型定义文件
--pretrained_model 训练后的文件
--labels_file 标签文件
Foo 测试结果存放文件
三、小结
本文档是对CIFAR-10数据集在caffe平台下进行训练生成模型,以及根据数据模型对图像数据进行分类预测的完整文档。目前,互联网上这样的完整文档较少,其中,结果分类文件和标签文件花费了本人将近一天的时间。因此,制作该详细文档,以利于后来的小伙伴们。
四、参考资料
http://www.cnblogs.com/alexcai/p/5468164.html
http://blog.csdn.net/dcxhun3/article/details/52021296