【caffe 深度学习】1. mnist手写体数字识别

mnist数据集分类大致分为9步:

1.下载数据集
    http://yann.lecun.com/exdb/mnist/
2.下载的原始数据集为二进制文件,需要转换为LEVELDB或LMDB
3.修改网络模型描述文件caffe-windows\examples\mnist\lenet_train_test.prototxt
4.修改超参数文件caffe-windows\examples\mnist\lenet_solver.prototxt
5.开始训练模型
6.等待模型训练好,准备要测试的图片
7.生成均值文件
8.准备标签

9.测试分类效果

下面分别进行操作:

1.分别下载这四个数据集:

【caffe 深度学习】1. mnist手写体数字识别【caffe 深度学习】1. mnist手写体数字识别

2.下载的原始数据集为二进制文件,需要转换为LEVELDB或LMDB

  (1)转换训练数据

    创建一个windows批处理文件,我这里命名为convert_train_lmdb.bat。用Notepad++修改为:

【caffe 深度学习】1. mnist手写体数字识别

(批处理文件加参数有两种方法:1.不同参数在同一行用空格隔开。2.如图所示,用空格加^加回车)

    在图示位置新建一个lmdb文件夹(train_lmdb文件夹不能存在),然后运行批处理文件,运行结束后再lmdb文件夹里生产以下文件夹:

【caffe 深度学习】1. mnist手写体数字识别

打开后:

【caffe 深度学习】1. mnist手写体数字识别

  (2)转换测试数据

    新建一个批处理文件,这里命名为convert_test_lmdb.bat。用Notepad++修改为:

【caffe 深度学习】1. mnist手写体数字识别

    运行批处理文件,在lmdb文件夹下生成了以下文件夹:

【caffe 深度学习】1. mnist手写体数字识别

    打开后:

    【caffe 深度学习】1. mnist手写体数字识别


3.修改网络模型描述文件caffe-windows\examples\mnist\lenet_train_test.prototxt

   (1)把刚才生成的mdb训练数据导入模型(注意斜杠方向):

【caffe 深度学习】1. mnist手写体数字识别

    (2)把刚才生成的mdb测试数据导入模型(注意斜杠方向):

【caffe 深度学习】1. mnist手写体数字识别


4.修改超参数文件caffe-windows\examples\mnist\lenet_solver.prototxt

传入网络模型描述文件(注意斜杠方向):

【caffe 深度学习】1. mnist手写体数字识别

在图上位置新建一个model文件夹,生成的网络模型保存到此文件夹,注意:modle后面一定要加反斜杠,博主这里就是开始几次没加反斜杠网络模型一直没生成。下图意思是迭代一万次,每五千次生成网络模型,cpu计算:

   【caffe 深度学习】1. mnist手写体数字识别


5.开始训练模型

    首先创建一个批处理文件用来进行模型训练,我这里取名叫train.bat用来调用caffe.exe文件。修改为(注意两行斜杠方向不一样):

    【caffe 深度学习】1. mnist手写体数字识别

   执行批处理文件:

【caffe 深度学习】1. mnist手写体数字识别

等待一段时间后(cpu训练大约得一个小时),在超参数文件里设置好的目标文件夹model里生成以下四个文件:

【caffe 深度学习】1. mnist手写体数字识别


6.等待模型训练好,准备要测试的图片。

    我这里准备了9张图片放在文件夹里:

【caffe 深度学习】1. mnist手写体数字识别

    

7.生成均值文件。

    创建一个批处理文件用来调用计算均值的程序computer_image_mean.exe,我这里取名为:mniat_mean.bat。修改为:

【caffe 深度学习】1. mnist手写体数字识别

    在目标位置创建mean_file文件夹。运行批处理文件后最终会生成mean.binaryproto文件.

    【caffe 深度学习】1. mnist手写体数字识别


8.准备标签。

    新建一个txt文件,我这里命名为label.txt。如图所示写入0-9:

【caffe 深度学习】1. mnist手写体数字识别


9.测试分类效果。

    写一个批处理文件调用我们刚刚训练好的模型对我们准备好的0-9图片进行测试。批处理文件我这里取名为:mnist_classilifcation.bat。修改为:

【caffe 深度学习】1. mnist手写体数字识别

运行批处理文件,我这里把数字3传入模型,得到的结果如下图:

【caffe 深度学习】1. mnist手写体数字识别

上图意思是可能性最大的为“3”。