caffe入门学习(3):Exmaple cifar10训练和测试步骤

可以先看下官网说明文档
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_lmdbcifar10_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,测试结果不是很准啊。

这里写图片描述

发布了155 篇原创文章 · 获赞 59 · 访问量 22万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章