MNIST如何真正起作用?

时间:2018-01-25 10:10:39

标签: python opencv canvas tensorflow mnist

我正在研究数字检测软件,我需要将MNIST数据集与TensorFlow一起使用。

要预测数字,我必须对图像进行一些预处理。网络上有很多脚本都有这个步骤(预处理)但是这些脚本中没有其中任何一个,至少我现在尝试的那些,做原始文档所说的。 或多或少,所有教程都基于一个理论:图像必须是28x28像素。哪个好......也许..

文档告诉我们如何制作MNIST数据集:

  

来自NIST的原始黑白(双层)图像是大小   标准化以适应20x20像素的盒子,同时保留它们的外观   比。由此产生的图像包含灰度级   归一化算法使用的抗锯齿技术。该   通过计算质心,图像以28x28图像为中心   像素,并平移图像以定位此点   位于28x28场地的中心。

在这一点上,这就是我在我的图片中尝试做的事情,将MNIST与我的投资回报率之比设为1:1。

我创建了一个28x28像素的空白画布。我拍摄了我的图像(可能是17x34,它是一个例子,表示都是矩形)并将其调整为20x20,而不保持高度和宽度之间的比例。 我计算这个新(平方)ROI的质心,然后将其粘贴到我的28x28画布的中心,使得质心和画布中心匹配。

1

上面有原始的ROI(作为裁剪过程的矩形),低于预处理的输出。注意:红色方块不存在,只是为了突出显示。

传递给TensorFlow的这些图像被很好地识别(~96%)。这些

我有其他数字......

2

蓝色被识别的百分比较低(从80%到30%不等),红色不被识别(或识别出错误率很高)。

示例:5,1,4被识别为7,2,6。

我的问题是:我做错了什么?质量中心是否正常工作(我问这个是因为,对于某些数字,它会将Yx轴上的20x20 ROI进行转换,我手动纠正这个问题?)

任何帮助都非常受欢迎和赞赏。

P.S:here你可以找到一些未经过预处理的数字,这样你就可以进行测试。

PPS:我问这个是因为,对于那些它无法识别的数字,如果我将它们移动/移动1/2/3像素(实际上,它很少)可以向上或向下移动,TF工作得很好。为什么?

0 个答案:

没有答案