可以先看下官网说明文档
http://caffe.berkeleyvision.org/gathered/examples/cifar10.html
cifar10是什么?
CIFAR-10 是一个包含60000张图片的数据集。
其中每张照片为32*32的彩色照片,每个像素点包括RGB三个数值,数值范围 0 ~ 255。
所有照片分属10个不同的类别,分别是 ‘airplane’, ‘automobile’, ‘bird’, ‘cat’, ‘deer’, ‘dog’, ‘frog’, ‘horse’, ‘ship’, ‘truck’
数据集的数据存在一个10000*3072 的 numpy数组中,单位是uint8s,3072是存储了一个32*32的彩色图像。(3072=1024*3)。前1024位是r值,中间1024是g值,后面1024是b值。就像下图这样:
cifar10 工程的作用是一个将彩色的 32X32 图片辨认出来。
默认已经配置好caffe环境,各种工具都编译好了的,下面就进行训练和测试,上一篇对于mnist的训练采用的leveldb格式,这次我们用lmdb来试试。
1、下载数据集
进入官网链接下载
http://www.cs.toronto.edu/~kriz/cifar.html
解压后会得到二进制文件,直接拷贝到./caffe/data/cifar10下就可以了:
其中五万张图片被划分为训练集,剩下的一万张图片属于测试集。
2、数据格式处理
使用 convert_cifar_data.exe 工具,具体源码工程里可以看到。
建立一个批处理文件,比如名字叫 create_cifar10_lmdb.bat
echo "Creating lmdb..."
rd /s /q cifar10_train_lmdbrd /s /q
cifar10_test_lmdbe:/caffe/Build/x64/Release/convert_cifar_data.exe
e:/caffe/data/cifar10 e:/caffe/examples/cifar10 lmdb
echo "Done."
pause
双击运行后会生成数据库文件 cifar10_train_lmdb 和 cifar10_test_lmdb
3、计算均值
使用compute_image_mean.exe工具,具体源码工程里可以看到。
建立一个批处理文件,比如名字叫 mean_image.bat
echo "Computing image mean..."
E:/caffe/Build/x64/Release/compute_image_mean.exe -backend=lmdb e:/caffe/examples/cifar10/cifar10_train_lmdb e:/caffe/examples/cifar10/mean.binaryprotoecho
"Done."
pause
注意::-backend=lmdb参数一定要加上,虽然默认是lmdb,如果要编译leveldb的时候忘了就会报错。
双击运行后生成数据库图像均值二进制文件./mean.binaryproto
4、网络配置
在网络文件 cifar10_quick_train_test.prototxt 中设置数据路径
说明:
1)均值和模型路径修改为绝对值
2)注意backend:LMDB 的数据库类型要用大写,无空格,我就是卡在这儿很久。
5、求解设置
cifar10_full_solver.prototxt
说明:
1)网络路径设置为绝对路径
2)指定模型输出路径,创建一个cifar10_quick文件夹
3)定位到最后一行:solver_mode: GPU,默认是GPU,如你没有GPU则改为CPU
6、训练数据
使用caffe.exe训练,具体源码工程里可以看到。
建立一个批处理文件,比如名字叫 train_quick.bat
echo "Start Train..."
e:/caffe/Build/x64/Release/caffe train --solver=e:/caffe/examples/cifar10/cifar10_quick_solver.prototxt
pause
开始训练过程:
训练完成就可以得到:
cifar10_quick_iter_4000.solverstate.h5
cifar10_quick_iter_4000.caffemodel.h5
7、测试模型
工具采用classification.exe,具体源码工程里可以看到。
先建立一个分类文本,比如叫 synset_words.txt
airplane
automobile
bird
cat
deer
dog
frog
horse
ship
truck
创建一个测试的批处理文件,比如叫 test_quick.bat
echo "Start Test..."
e:/caffe/Build/x64/Release/classification.exe ^
e:/caffe/examples/cifar10/cifar10_quick.prototxt ^
e:/caffe/examples/cifar10/cifar10_quick_iter_4000.caffemodel.h5 ^
e:/caffe/examples/cifar10/mean.binaryproto ^
e:/caffe/examples/cifar10/synset_words.txt ^
e:/caffe/examples/images/cat.jpg
pause
双击运行就可以开始分类测试了,下面是分类结果。
用的自带图片.\caffe\examples\images\cat.jpg,测试结果不是很准啊。