从一到二:利用mnist训练集生成的caffemodel对mnist测试集与本身手写的数字进行测试

    经过从零到一的教程,咱们已经获得了经过mnist训练集生成的caffemodel,主要包含下面四个文件:python

1

      接下来就能够利用模型进行测试了。关于测试方法按照上篇教程仍是选择bat文件,固然python、matlab更为方便,好比能够迅速把识别错误的图片显示出来。git

1、均值文件mean.binaryproto程序员

    在进行分类以前首先须要产生全部图片的平均值图片,真正分类时的每一个图片都会先减去这张平均值图片再进行分类。这样的处理方式可以提高分类的准确率。github

   产生均值文件的方法是利用解决方案中的compute_image_mean.exe,位于目录\caffe-windows\Build\x64\Release下。回到caffe-windows根目录下建立一个mnist_mean.txt,写入以下内容:windows

6

   将后缀名改成bat后双击运行(其实写了那么多bat文件也应该有体会了,只要指定的路径正确就行,不必定非要放在caffe-windows根目录下)。正确运行的话会在根目录下产生一个mean.binaryproto,也就是咱们所须要的均值文件。接着为了使用均值文件须要稍微修改下层的定义。因此打开\examples\mnist\lenet_train_test.prototxt,作以下修改:网络

7

    到此为止,均值文件的预处理部分处理完毕,下面就能够进行测试了。学习

2、利用mnist测试集进行测试测试

   这部分比较简单,由于以前生成的Caffe.exe就能够直接用来进行测试。一样地在caffe-windows目录下新建mnist_test.txt,并写入以下内容(其中的间断处都为一个空格)。ui

2

   意思也显而易见,首先指定为测试模式,随后指定模型和训练出来的参数。spa

   将后缀名改成bat后双击运行,结果以下所示:

3   左侧的内容依旧是GLOG的记录日志,右侧中的Batch须要和网络参数初始中的batch_size一块儿理解。每一个Batch中包含了batch_size张测试图片,因此每一个Batch的准确率是对这batch_size张测试图片总体而言的。而不是像我最初同样先入为主地觉得准确率应该是对每张测试图片而言,故只有0和1两种状况。

   这边我的也有个小问题,Batch之因此为0-49共50个是由caffe.cpp中一个叫作FLAGS_iterations的变量指定的,可是找来找去实在没法肯定这个变量是不是由网络参数肯定的,以后再好好看一下代码。

   这个准确率不能说特别好,由于我有空也尝试过Tensorflow,Tensorflow官方文档中的一个多层卷积网络对mnist测试集的准确率为99.2%左右。不过到此为止咱们已经完成了mnist测试集在caffe上的运行和测试。

3、利用本身的手写数字进行测试

   主要参考了http://blog.csdn.net/zb1165048017/article/details/52217772这篇文章,不过仍是有些细节须要更改。

(1)首先能够按照上面网址教程中的第六和第七步在\examples\mnist目录下生成手写的一个28*28像素数字的bmp文件和一个标签文件label.txt。好比我手写的数字以下图所示:
test1

   这里须要注意的是上述教程中的matlab代码最后一句须要更改。例如我已经将matlab的工做目录设为\caffe-windows\examples\mnist,就能够直接输入(test1为个人手写数字文件名):

4

(2)以后就能够调用以前生成的classification.exe进行分类。一样的在caffe-windows目录下新建test_personaldig.txt并写入以下内容:

5

    中间的三行实际上是每一个加一个空格后跟在examples\mnist\lenet.prototxt的后面,这里为了显示地更加清楚而进行了换行。更改后缀为bat后就能够双击运行,会出现相似下面的内容:

8

   可见分类结果正确。让咱们再来测试一个下图写得一个比较飘逸的5。

im

   分类结果仍是正确的。

9

4、后记

   到此为止咱们已经完成了利用mnist测试集对生成的模型进行准确率测试,并成功对本身手写的数字进行了识别,总之效果还不差。然而至此教程甚至根本没有说起过卷积神经网络,可见caffe的确可让一个彻底不懂卷积神经网络原理的人经过不断手动调整参数完成学习,实现分类等目标,甚至还能取得很是不错的效果。就像程序员和数学的关系同样,知晓了卷积神经网络的详细原理对咱们使用caffe只有好处没有坏处,而且要真正作到看懂caffe的每一个模块必须了解卷积神经网络。博主本身也正在深刻学习卷积神经网络,这里推荐一个很是好的入门资料CS231n Convolutional Neural Networks for Visual Recognition

http://cs231n.github.io/convolutional-networks/

   上面网址中的教程对卷积神经网络的基础知识讲述得很是透彻清楚。但若是想继续了解其中的数学推导的话,建议再看下面这篇文章:

Notes on Convolutional Neural Networks, Jake Bouvrie

相关文章
相关标签/搜索