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

编译配置好caffe的环境后,下一步做什么的,直接看什么几层网络,太抽象了,第一步先把流程跑起来,看它能做些什么。

在caffe源码中,自带了三个例子:

mnist
cifar10
ilsvrc12

一个一个来吧,本文先从mnist开始,熟悉caffe的模型训练和测试步骤。

mnist是什么?

MNIST手写数字数据库是另外一个更大的手写体数据库NIST的子集,现在已成为图像识别领域用来测试自己的算法的一个基准数据库,它的训练集由60000张手写数字图片样本组成,测试集包含了10000个样本,其中所有的图片样本都经过了尺寸标准化和中心化,图片的大小固定为28*28。

据说该数据集中的图片是由美国中学生手写的数字,所以非常贴近实际。
这里写图片描述

还是先看官网的说明:
http://caffe.berkeleyvision.org/gathered/examples/mnist.html

下面就是基本的训练步骤:

1、下载数据。

程序本身不带测试数据,需要去下载,正常步骤应该是用
.\caffe\data\mnist\get_mnist.sh
下载数据,然后用
./examples/mnist/create_mnist.sh
转换格式就可以了
:Windows下的sh运行方法,就是将后缀名改成“bat”,就可以双击运行。

实际情况,这个脚本自动下载数据,但一般都不成功,可能里面的网址被墙了。

可以直接到此下载:http://pan.baidu.com/s/1hry1f4g

下载好后直接解压,得到两个文件夹

mnist-train-leveldb
mnist-test-leveldb

然后,将这两个文件夹直接拷贝到目录下

.\examples\mnist\

2、修改网络结构文件

lenet_train_test.prototxt

这里写图片描述
说明:
1)在此给出用于训练的MNIST数据mnist-train-leveldb以及mnist-test-leveldb的路径,路径都改为绝对路径
2)在此定义这个网络都有哪些层,给出每一层的定义
3)数据类型改为LEVELDB

3、设置网络求解文件

lenet_solver.prototxt

这里写图片描述

说明:
1)在此指明我们要训练的网络是lenet_train.prototxt,给出lenet_train.prototxt的路径,这里要用绝对路径;
2)指定模型输出路径,mnist下的lenet文件夹必须存在,如果不存在就会报错
3)定位到最后一行:solver_mode: GPU,默认是GPU,如你没有GPU则改为CPU

4、修改训练脚本

train_lenet.sh改为 train_lenet.bat
这里写图片描述

说明:
1)删除# !/user/bin/env sh
2)使用绝对路径

5、训练数据

这里写图片描述

双击train_lenet.bat开始训练,如果是GPU,会很快完成,用CPU的话就需要多等一段时间。

说明
1)运行代码初始化时,出现的信息包括每一层的详细信息,其连接和输出形状,该信息有助于debugging.初始化之后,开始training,基于solver setting,根据设置,每100次iterations将会打印出training loss function,每1000次iterations将会测试network,出现的信息中,对于每一次training iteration lr是iteration的learning rate, loss是training function,对于testing phase的输出,score 0 是精确度, scorce 1是 testing loss function.

2)经过几分钟后,Optimization Done信息出现表明训练完成,最终的model,以二进制protobuf file存储在 lenet_iter_10000, 接下来你可以将此训练模型用于实际的数据集。

训练完成后目录下会生成结果:

lenet_iter_10000.caffemodel
lenet_iter_10000.solverstate
lenet_iter_5000.caffemodel
lenet_iter_5000.solverstate

6、用脚本测试

有三种接口可以进行测试数据,命令行、Python、MATLAB,本例中采用命令行进行测试。
1)创建测试命令脚本
新建一个脚本文件,比如命名为 test_lenet_mnist.bat
里面内容为:

e:/caffe/Build/x64/Release/caffe.exe test
–weights=e:/caffe/examples/mnist/lenet_iter_10000.caffemodel -gpu=0

pause

说明
1)先是test表明是要评价一个已经训练好的模型。
2)然后指定模型prototxt文件,这是一个文本文件,详细描述了网络结构和数据集信息。

2)双击执行批处理测试
这里写图片描述
模型lenet_iter_10000.caffemodel测试结果,准确率为 0.9868

更换成 5000次迭代的模型测试,修改脚本双击运行
这里写图片描述

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