Caffe基础系列【一】MNIST数据集的测试

环境:win10 64位+VS2013+Caffe【无GPU】

昨天晚上和今天一上午终于将win10上的Python接口的Caffe配置好了,同时配置好了VS+Caffe+Opencv2.4.10可以在VS中进行Caffe+Opencv的开发,期待后期的学习。可谓厉了种种困难终成正果。先将MNIST测试的过程作一总结,后期忘了也好回顾。MNIST就像学习编程语言中的“Hello World!”,运行这个就意味了开启了Caffe时代,哈哈,菜鸟我目前水平有限,仅作记录之用!

简单介绍:本文采用的是LeNet5模型,这是CNN卷积神经网络中很经典的paper,有需要的可以网盘下载http://pan.baidu.com/s/1kVom7HH 密码:8mez

第一部分:MNIST数据集训练测试部分

1、下载MNIST数据集,网盘http://pan.baidu.com/s/1qYv3W4G 密码:zual
将下载的两个文件夹放到examples\mnist目录下,如下图所示:
一个训练,一个测试文件夹

2、在测试之前需要修改一些参数,还是在examples\mnist目录下的lenet_solver.prototxt,这个是用于计算的。将最后一行改成——CPU:如图:
这里写图片描述
红色方框里看下是否是对应位置,如果不是请修改下!因为本实例是无GPU的,所以后面必须改为CPU,不然会报错!同时可以看到图片中定义了网络的一些参数,比如最大迭代次数为10000,max_iter = 10000;
接下来再打开examples\mnist目录下的lenet_train_test.prototxt(可以用VS直接打开进行修改),这个是设置Lenet网络的训练和测试源,也就是具体的文件位置,如下图所示:
这里写图片描述
上面照片中都是论文的核心所在,后期要好好研究了。

3、以上步骤完成后就可以编写脚本文件进行训练了,手写在Caffe-window的根目录下新建一个mnist_train.txt并写入如下图所示的代码;
这里写图片描述
台式机没下载Sublime,就直接用了文本编辑器,有点苍白哈;哈哈,这不是重点啦,文件保存后修改下扩展名为bat,这是Windows批处理文件,可以直接运行。有的扩展名隐藏起来了,win10系统下直接在查看中修改设置就好了。然后接下来就直接你们都知道了哈,双击mnist_train.bat这个文件就好了,我的电脑运行了大概几分钟左右,就会出现下面的界面:
这里写图片描述
当迭代次数达到10000次时就结束了,这在之前的lenet_solver.prototxt中可以查看相关参数。通过这一步,在examples\mnist目录下就会生成四个文件,扩展名为caffemodel和solverstate,这就是训练产生的模型文件,如下图:
这里写图片描述

4、经过了以上几个步骤大家是不是还是感觉像是黑箱,不知道为什么这样设置,哈哈,这就是以后要深入理解Caffe啦,我也在学习的过程中,加油啦!上面的步骤仅仅是通过训练数据对模型进行训练,接下来需要通过测试数据对模型进行测试。首先在这之前需要经过一个重要的步骤,就是生成均值文件,让每张测试图数据减去均值,这样能提升分类的效果,在编译完Caffe后在caffe-window根目录下会生成一个Build文件夹,在这里面需要用compute_image_mean.exe文件,具体位置Build\x64\Release目录下,然后再根据之前生成bat的方式来制作mnist_mean.bat。具体的代码为;
这里写图片描述
双击运行完后在Caffe-window根目录下生成一个mean.binaryproto文件,这就是所需要的均值文件,然后再次打开examples\mnist\lenet_train_test.prototxt,修改如下:
这里写图片描述
接下来就可以进行测试集进行测试啦!

5、同样在Caffe-window根目录下建一个mnist_test.txt文件,具体内容为:
这里写图片描述
更改扩展名为bat,运行结果如下所示:
这里写图片描述
准确率不是太高0.875,目前最高的能达到0.992了,模型参数还有待改进!

第二部分:MNIST训练生产的模型进行手写数字进行测试

在这一部分需要准备一张28*28的图片,还有一个lable.txt文件,需要用到的是classification.exe文件,在Build\x64\Release\classification.exe,然后在Caffe-window根目录下建一个mnist_class.txt文件,修改为:
这里写图片描述
图片和lable.txt文件一同在之前提供的数据集链接里,这里需要注意的是有人打开lable.txt发现有0-9十个数,而图片只有一张就把1-9给删了,以为是0.jpg对应的标签,这种理解是错误的,这里就已经是对自己的图片进行识别了,所以lable.txt里是分类类别而已!就是要对0.jpg进行0-9分类的。具体结果如下:
这里写图片描述
第一个1后面的那个就是分类结果。正确分类了,可以自己用PS多制作几张图进行测试!

第三部分:总结

通过今天的实验,感觉对Caffe还不是很了解,所以接下来的主要任务就是快速熟悉Caffe框架的具体结构!不知不觉都十一点多了,洗洗睡啦!

猜你喜欢

转载自blog.csdn.net/att0206/article/details/76794856
今日推荐