勉强算升2级吧----用mnist训练好的model对自己手写的数字进行分类识别

        这个命题感觉接近《21天实战caffe》这本书里第6天的课后作业,但又有一点区别。小新是打算将其分类识别,这样可以更直观的看出LeNet-5对于数字识别的效果。现在来记录一下这个过程。

        1.先写下几个数字。这个嘛,自己写,然后拍照。手机拍成的照片肯定比较大,这时候我们需要对图片做一些剪裁、压缩工作。这个嘛。。小新作为理工眼镜女并没有美图秀秀这种属性软妹的软件,所以我用的是windows自带的画图,是不是很高端哈哈。由于mnist数据集里图片大小都是28x28像素的,所以我们也应该把图片大小改为28x28的。还有一点,尽量在剪裁的时候把数字放在中间,因为mnist数据集里的数字图片都是经过尺寸归一化以及数字居中处理的。处理了几个数字如下:

                                                                                                                          

        前面的6和9是单纯剪裁并压缩过的,这个9有点不乖没有待在正中间。后面的数字是用malab二值化后的图像。

        2.新建文件夹,把相关的东西都放进去。如小新新建的文件夹为F:\caffe\caffe-master\data\handwriting,这些图片小新在此文件夹下再建了一个放了进去,然后把之前训练好的模型,classification.exe等感觉能用上的东西一股脑放了进去。以后的脚本啊什么的都在这个文件夹下写。

        3.给出均差文件。这是由于用classification.exe分类的时候程序所要求的。均差文件可以用脚本给出,脚本的内容如下:

compute_image_mean.exe F:\caffe\caffe-master\Build\x64\Debug\example2\mnist_train_lmdb mean.binaryproto 

pause 

依旧是注意空格,还有中间的地址是自己放mnist_rain_lmdb文件夹的地址。

                                         

最后生成这个

                                   

这个文件生成的时候没有指定文件夹,所以之前的脚本在哪里,这个就会生成在哪里。像小新的就在自己建的F:\caffe\caffe-master\data\handwriting文件夹里找到的。

4.给出标签。这个很好给,用文本文档就行了,标签文件的作用是告诉我们分的类每个类名字叫什么,数字识别本质上也是分类,这个也同样是调用classification.exe所需要的。里面长这样:

                                                   勉强算升2级吧----用mnist训练好的model对自己手写的数字进行分类识别_第1张图片

CNN是有监督学习,所以在之前训练的时候数据也是打了标签的,所以给出标签文件就不难理解了。

5.写运行脚本。基本的是这样

classification.exe F:\caffe\caffe-master\data\handwriting\lenet.prototxt F:\caffe\caffe-master\data\handwriting\lenet_iter_10000.caffemodel F:\caffe\caffe-master\data\handwriting\mean.binaryproto F:\caffe\caffe-master\data\handwriting\mine.txt F:\caffe\caffe-master\data\handwriting\handwriting\6.jpg

pause

分别是:exe文件地址,网络,训练出的模型,均差文件,标签文件,图的地址和名字。

可以吧脚本堆起来写,一次把这些识别完。

         勉强算升2级吧----用mnist训练好的model对自己手写的数字进行分类识别_第2张图片

保存为.bat文件,双击运行。

6.结果

                     勉强算升2级吧----用mnist训练好的model对自己手写的数字进行分类识别_第3张图片

剩下的:

                  勉强算升2级吧----用mnist训练好的model对自己手写的数字进行分类识别_第4张图片


                  勉强算升2级吧----用mnist训练好的model对自己手写的数字进行分类识别_第5张图片


                 

明明的时候写成2222.bmp纯粹是因为为了matlab处理后保存好区分。

这里可以看到9的效果明显不好,分类成了8,而其余的都正确。

据小新猜想,这是因为原本训练的数据都是居中的,而这个9不乖,没有待在中间,所以导致分类层层提取特征的时候出了问题,所以错误吧。并且3通道的RGB不如二值图像准确率高。



你可能感兴趣的:(深度学习)