Mnist模型识别自己手写数字正确率低的原因
问题背景:
有的同学用官方的训练数据mnist训练好自己的模型后,自己制作数字图片给训练好的模型识别,结果正确率只有40%多,甚至用原来训练的数据集识别正确率都低于50%.
解决方法:
可以从下面几个方面入手,把自己手写的数字识别率提高到80%不难:
原因1:西方手写体和东方手写体造成的样本差异
具体操作:我们把训练集的ubyte文件转成图片可以看到如下图
我们训练的时候用到的是 外国人写的数字,你可以看到 2 ,4 ,6 和中国人写的区别很大。找了一个图方便对比:
很明显,我们自己写出来的一些数字和原来用于训练的数字差别太大,导致识别率低,可以模仿西方数字书写提高一点识别率。
原因2:做了不恰当的图片预处理操作
如果有的同学用训练集去测试原来的模型识别率也低,那你应该是图像预处理模块出了问题。
举个例子:
我有一张训练模型时候用到的图,叫做test_0.jpg, 如下图:
,这里我们用7做测试,然后我把图片读进来测试模型的识别率,第一次我把图像做一次归一化,第二次我不做归一化,分别送给模型去识别。两次结果如下图:
做了归一化结果:
可以看到把训练数据的7识别成了8
未做归一化结果:
可以看到我们把归一化那一行注释掉了之后,就识别正确了,很多训练集识别率都出了问题的,都是自己加了错误的预处理造成的,为什么?
因为:我们把图片读到matlab中,此时未做归一化处理,结果如下图
,很明显,这是一个 数字 7 的轮廓。现在我把它进行归一化,这里我使用其中一个同学的归一化代码演示,代码如下
他是用255减去每个像素值/(max(pixel)-min(pixel)) 的方式进行归一化。
归一化之数据和图形如下:
用imshow() 显示为 ,归一化之后变成了白底黑字,为什么?因为如果原来是黑色,假如像素值为0, (255-0)/255,变成了1, 然后0~1之间1最大,所以颜色反转了,你用这个7去给模型识别,自然而然识别不出来,识别结果如下:
把7认成了8
这个例子不是说不能做图片预处理,是说要进行正确的预处理。
建议用photoshop的柔性画笔制作自己的样本,我测了,识别率很高。
总结:
1、尽量模仿西方数字的书写,书写的位置尽量位与28*28的*,建议用photoshop的柔性画笔书写。
2、小心你的图片预处理过程,这可能是你识别率低的罪魁祸首
3、你可以把所有的训练图片处理成2值图,然后给模型训练,测试图片也用2值图,就是只有0和1,没有0~1之间的任何数,避免了图片预处理导致的识别率下降,识别率会极大提升。
<li class="tool-item tool-active is-like "><a href="javascript:;"><svg class="icon" aria-hidden="true">
<use xlink:href="#csdnc-thumbsup"></use>
</svg><span class="name">点赞</span>
<span class="count">5</span>
</a></li>
<li class="tool-item tool-active is-collection "><a href="javascript:;" data-report-click="{"mod":"popu_824"}"><svg class="icon" aria-hidden="true">
<use xlink:href="#icon-csdnc-Collection-G"></use>
</svg><span class="name">收藏</span></a></li>
<li class="tool-item tool-active is-share"><a href="javascript:;" data-report-click="{"mod":"1582594662_002"}"><svg class="icon" aria-hidden="true">
<use xlink:href="#icon-csdnc-fenxiang"></use>
</svg>分享</a></li>
<!--打赏开始-->
<!--打赏结束-->
<li class="tool-item tool-more">
<a>
<svg t="1575545411852" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5717" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M179.176 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5718"></path><path d="M509.684 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5719"></path><path d="M846.175 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5720"></path></svg>
</a>
<ul class="more-box">
<li class="item"><a class="article-report">文章举报</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div class="person-messagebox">
<div class="left-message"><a href="https://blog.csdn.net/xiqi4145">
<img src="https://profile.csdnimg.cn/1/4/E/3_xiqi4145" class="avatar_pic" username="xiqi4145">
<img src="https://g.csdnimg.cn/static/user-reg-year/1x/4.png" class="user-years">
</a></div>
<div class="middle-message">
<div class="title"><span class="tit"><a href="https://blog.csdn.net/xiqi4145" data-report-click="{"mod":"popu_379"}" target="_blank">独孤的大山猫</a></span>
</div>
<div class="text"><span>发布了79 篇原创文章</span> · <span>获赞 84</span> · <span>访问量 5万+</span></div>
</div>
<div class="right-message">
<a href="https://im.csdn.net/im/main.html?userName=xiqi4145" target="_blank" class="btn btn-sm btn-red-hollow bt-button personal-letter">私信
</a>
<a class="btn btn-sm bt-button personal-watch" data-report-click="{"mod":"popu_379"}">关注</a>
</div>
</div>
</div>
</article>