caffe——MNIST手写数字识别(一)

一.数据下载及了解数据

mnist是一个手写数字数据库,由Google实验室的Corinna Cortes和纽约大学柯朗研究院的Yann LeCun等人建立,它有60000个训练样本集和10000个测试样本集。mnist数据库官方网址为:http://yann.lecun.com/exdb/mnist/ 。可直接下载四个解压文件,分别对应:训练集样本、训练集标签、测试集样本和测试集标签,均以二进制文件形式保存。将文件下载至caffe文件中的\data\mnist\中
在这里插入图片描述
以下为训练集信息介绍,Label文件中,第一个为32字节整数型magic,第二个表示该文件包含60000张图片,接下来就是每张图片所贴标签,标签:0-9;Image文件中,第一个为32字节整数型magic,第二个为60000张图片,第三和第四代表图片像素,本文件所含图片像素为28*28,接下来就是所存具体图片信息。
在这里插入图片描述
以下为测试集文件信息介绍,其内容与训练集一样,测试集包含10000张图片。
在这里插入图片描述
同时所存图片均为黑底白字(此处的图片是通过转换二进制文件而得到,将在下一篇博客里面讲述如何转换图片)
在这里插入图片描述

二.数据前期准备

1.修改文件格式

在对数据进行一个初步认识了解之后,因为caffe不能用所下文件直接训练,需要将其转换caffe能用的文件格式,比如lmdb、leveldb。
在caffe-master根目录下,新建一个文本文档,写入如下脚本,并将其改名create-mnist.bat(我的格式是lmdb格式)

.\Build\x64\Release\convert_mnist_data.exe  .\data\mnist\train-images.idx3-ubyte .\data\mnist\train-labels.idx1-ubyte .\examples\mnist\mnist_train_lmdb //训练集
.\Build\x64\Release\convert_mnist_data.exe  .\data\mnist\t10k-images.idx3-ubyte .\data\mnist\t10k-labels.idx1-ubyte .\examples\mnist\mnist_test_lmdb //测试集

运行上述脚本之后,会在\examples\mnist\路径下产生如下文件
在这里插入图片描述

2.修改lenet_solver.prototxt

接下来是修改\examples\mnist\lenet_solver.prototxt文件,修改第25行,因为我是用CPU运行,所以将其修改为CPU
在这里插入图片描述

3.修改lenet_train_test.prototxt

打开\examples\mnist\路径下lenet_train_test.prototxt文件,修改source,分别改为自己mnist_train_lmdb,mnist_test_lmdb具体路径,修改backend,为lmdb(如果你用leveldb格式,请在上面 二.1.修改文件格式 处生成相对应的leveldb格式的文件)

4.产生均值文件mean.binaryproto

产生均值文件的方法是利用解决方案中的compute_image_mean.exe,位于目录\Build\x64\Release下。回到caffe-master根目录下创建一个mnist_mean.txt,写入如下脚本,最后将文件名修改为mnist_mean.bat,点击运行,最后会在\examples\mnist\路径下产生mean.binaryproto文件

.\Build\x64\Release\compute_image_mean.exe .\examples\mnist\mnist_train_lmdb mean.binaryproto --backend=lmdb

pause

然后在lenet_train_test.prototxt的transform_param里面添加mean.binaryproto,如下图
在这里插入图片描述
**注意:source的路径一定要使用“/”符号,否则会出现问题

三.训练数据

经过一系列准备工作之后,接下来就是正式训练数据。
首先,训练Train data,在caffe-master根目录下新建一个文本文档,写入如下脚本,保存之后修改文件名为train_minist.bat,然后运行脚本文件

.\Build\x64\Release\caffe.exe train --solver=./examples/mnist/lenet_solver.prototxt

Pause

下图为训练集运行的部分日志记录截图(CPU下全部运行完成大概需要十几分钟左右,配置不同运行速度也会不同)
在这里插入图片描述
其次,训练Test data,在caffe-master根目录下新建一个文本文档,写入如下脚本,保存之后修改文件名为test_minist.bat,然后运行脚本文件

.\Build\x64\Release\caffe.exe test --solver=./examples/mnist/lenet_solver.prototxt

Pause

全部运行之后,会在\examples\mnist\路径下产生如下四个文件
在这里插入图片描述
下图为测试数据的日志记录
在这里插入图片描述
自此,训练和测试mnist自带数据,已经全部完成。从运行结果来看,该模型总体效果还是可以的,平均正确率达到:0.96

四.参考

1.caffe学习(二):利用mnist数据集训练并进行手写数字识别(windows)
2.MNIST机器学习入门

**下一篇博客将介绍如何将自己手写数字进行识别测试,将通过两种途径进行测试,一是通过caffe自带的classification.exe直接测试,二是通过编写程序,将自己的数据以二进制形式存储,模型使用的是用mnist自带数据生成lenet_iter_10000.caffemodel文件进行测试。

此篇博客为本人第一篇博客,其内容可能有一些漏洞及错误,欢迎大家指出本文出现的错误,如果有些什么问题,也可以提出来,我们可以一起讨论研究,一起学习!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值