在上次搭建好Caffe环境的基础上我们进行第一次实验,将Caffe自带的一个Mnist example跑一跑,对其在处理图像方面的能力有个初步了解。
如果还没有搭建好环境的朋友可以看看我的上一篇文章:
http://blog.csdn.net/AkashaicRecorder/article/details/71016942
MNIST简介
MNIST手写数字数据库是另外一个更大的手写体数据库NIST的子集,现在已成为图像识别领域用来测试自己的算法的一个基准数据库,它的训练集由60000张手写数字图片样本组成,测试集包含了10000个样本,其中所有的图片样本都经过了尺寸标准化和中心化,图片的大小固定为28*28。对于想要在实际数据上学习技巧和学习模式识别方法的人来说,这是一个很好的数据库,同时减少了人们在对素材进行预处理和格式化方面花费的时间。
以下是官网原文的描述:
The MNIST database of handwritten digits, available from this page, has a training set of 60,000 examples, and a test set of 10,000 examples. It is a subset of a larger set available from NIST. The digits have been size-normalized and centered in a fixed-size image.
It is a good database for people who want to try learning techniques and pattern recognition methods on real-world data while spending minimal efforts on preprocessing and formatting.
官网地址,你可以在这里下载用于训练的数据集:
http://yann.lecun.com/exdb/mnist/
生成需要的文件及使用训练好的模型进行识别
1.要使用这个训练集,你需要编译以下几个项目并使用它们生产的exe
2.将之前在minist官网下载好的训练集解压并放到指定目录下,
注意一定要放到你caffe工程的data\minist目录下,不然后面会执行文件报错
3.在..\caffe\build\examples\mnist目录下新建bat文件夹并创建如下bat文件
下面我们一一来解释它们分别的作用:
convert_train_lmdb.bat
F:\OpenSource\caffe\build\examples\mnist\Release\convert_mnist_data.exe
::train-images训练图片路径
F:\OpenSource\caffe\data\mnist\train-images.idx3-ubyte
::训练标签路径
F:\OpenSource\caffe\data\mnist\train-labels.idx1-ubyte
::训练出来的lmdb文件存放的位置
F:\OpenSource\caffe\data\mnist\lmdb\train_lmdb
pause
注:
也就是说,这个程序的作用是为了将原始图片素材和标签对应转换成caffe中能够运行的lmdb文件。
convert_test_lmdb.bat
F:\OpenSource\caffe\build\examples\mnist\Release\convert_mnist_data.exe
F:\OpenSource\caffe\data\mnist\t10k-images.idx3-ubyte F:\OpenSource\caffe\data\mnist\t10k-labels.idx1-ubyte F:\OpenSource\caffe\data\mnist\lmdb\test_lmdb
pause
同上,convert_train_lmdb.bat是为了转换用于训练的lmdb文件这个则是为了转换用于测试的lmdb文件
注意,用于生产存放lmdb文件的文件夹一定要是不存在的,不然执行bat会报错——处理程序停止响应
执行完以上两个后,我们发现caffe\data\mnist\lmdb里多了两个文件夹
train.bat
F:\OpenSource\caffe\build\tools\Release\caffe.exe train -solver=F:/OpenSource/caffe/examples/mnist/lenet_solver.prototxt
pause
训练模型生成迭代model文件
必需文件》》》
一、网络模型文件 lenet_train_test.prototxt
二、训练超参数文件 lenet_solver.prototxt
在 lenet_train_test.prototxt修改
TRAIN source路径为训练图片的lmdb文件路径
TEST source路径为测试图片的lmdb文件路径
在 lenet_solver.prototxt中修改
net的path为网络模型文件 lenet_train_test.prototxt的地址,
snapshot_prefix为生产训练模型的地址caffe\data\mnist\model
迭代模型训练时间根据计算机性能决定,一般在15——45分钟
模型生产成功即意味着可以使用它来识别图片
mnist_mean.bat
F:\OpenSource\caffe\build\tools\Release\compute_image_mean.exe F:\OpenSource\caffe\data\mnist\lmdb\train_lmdb F:\OpenSource\caffe\data\mnist\mean_file\mean.binaryproto
pause
mean_file需要自己创建,用于存放计算均值文件mean.binaryproto
mnist_classification.bat
::分类执行文件
F:\OpenSource\caffe\build\examples\cpp_classification\Release\classification.exe
::网络模型配置文件,暂时不用改
F:\OpenSource\caffe\examples\mnist\lenet.prototxt
::训练好的Caffe Model模型
F:\OpenSource\caffe\data\mnist\model\_iter_10000.caffemodel
::均值文件的路径
F:\OpenSource\caffe\data\mnist\mean_file\mean.binaryproto
::训练图像label标签
F:\OpenSource\caffe\data\mnist\mnist_lable.txt
::要测试的图片文件
F:\OpenSource\caffe\data\mnist\binarybmp\XXX.bmp
pause
这里可以下载用于测试的Mnist图片库
http://pan.baidu.com/s/1hrXYLLi
执行mnist_classification.bat
显示出识别结果
源图片:
识别结果
第一行显示的是该图片为0的概率,可以看到它成功的识别出了数字0,经测试,这个模型识别数字的准确率大概为90%
下一次,我们将详细解析模型分析出这样结果的原因,及如何进一步提高识别率