关于 Mnist 数据集时候的问题

请问,我使用老师给的手写数字 0-9 图片时可以识别出来,但是为什么我使用自己写的手写数字就不行了呢?图片我是用手机相机拍摄的,图片中只有数字和白底,无杂质。这是什么问题?谢谢


提问人:筱墨, 2018-4-19 10:47:57

说明网络的泛化能力不够,在又有 MNIST 数据集上已经过拟合了,遇到新的数据集导致识别准确率较低。你的网络应该在 MNIST 数据集上的准确率很高。可以采用一些防止过拟合的方法试试。


atomwh,发表于 2018-4-19 11:00:49

假设你的模型没有问题,你可以考虑把模型输入数据转换为图片,确认你前面的图形数据处理没有问题。
具体说来,因为你说你使用手机拍照的,所以格式肯定跟 mnist 的图片不一样。我猜想你可能需要处理才能得到模型的输入数据,这样有可能导致处理过的图片效果不好。因此我建议你把输入模型的数据拿来转回成图片,然后跟 mnist 图片比较一下,看看能不能发现什么问题。


yunhai_luo,发表于 2018-4-19 12:07:06

我还是没能解决这个问题。当我把用手机拍摄的图片,像素设置成 28*28 后,需要自己再建一个数据集吗?
我看了一下 mnist 的数据集是不能识别 RGB 的图片吧。是不是跟这个也有关系呢?


筱墨(提问者),2018-4-25 15:40

mnist 数据集是黑白的,所以训练出来的模型也只能处理黑白图片(单通道)。另外重定位像素只是一步,这样处理后需要检查图片效果,如果不好还需要进一步处理。


yunhai_luo,2018-4-25 16:45

我也做过,原因在这里,你将图片要么没转换成 28*28 的,要么就是你图片转换的时候采样不够,导致失真。你可以关注一下这里。


M 丶 Sulayman,发表于 2018-4-19 12:58:49

mnist 提供的图片是

28×28=784

像素的图片,所以你的输入图片也要满足该格式

如果你知道多因子分析,那么你可以把 784 个像素点理解成 784 个因子,训练的实质就是找出各因子最优权重的过程
这样可以解释你的问题了。


Tsingliu,发表于 2018-4-19 17:30:00

可以发一下你处理后 28*28 的数据集样本吗?大家可以一起看看问题在哪里~


舟 3332,发表于 2018-4-19 20:35:26

筱墨(提问者)2018-4-21 10:28:

你好,这两天看了一下资料。有几个问题没搞懂。MNIST 是一个数据集,这个数据集是叫训练集吗?测试集又是指什么呢?

舟 3332: 回复 筱墨 :

训练集 和 测试集 只是用法不同而已。

比如说你上一门课,有 10 个例题,老师可以拿其中的任意 5 个讲解,再用另外 5 个作测验

筱墨: 回复 舟 3332 :

那也就是说,我要把自己的 10 张照片也想成功输出的话,就得要自己做一个数据集,然后把这个数据集导入到 MNIST 数据集中训练,是这样吗?

舟 3332: 回复 筱墨 :

不一定,要看你原来训练出来的模型,是否能够举一反三(泛化能力够强),可以用来识别你的新的输入。

我是说可以把你处理好的 28*28 的照片放上来,大家看看你获取的数据格式,尺寸,像素,颜色什么的是否和老师给的数据集一致。

tking:

mnist 的数据集包括训练数据、验证数据、测试数据。训练数据是为了训练模型、验证数据是训练数据的答案,测试数据是实际测试

增加了采样算法,然后就成功了,虽然识别要比原始低一些,大概 84%


M 丶 Sulayman,发表于 2018-4-22 12:19:31

再问一下。我可以用新的图片倒入到原来的训练集中训练一遍然后识别吗?这样从理论上来讲好像可以?


筱墨(提问者),发表于 2018-4-24 11:38:58

理论上来说是肯定可以的哈。


舟 3332,2018-5-2 17:48

重庆不热:

应该是你自己拍摄的图片和 mnist 中的图片的 shape,数值范围不一致吧

kdongyi:

训练的数据不够?

zhanys_7:

过拟合?

lytensor:

网络拟合能力强,导致学习到训练集中的特征,新增的样本并不一定与 mnist 数据集特征一致,所以需要增加样本多样性

ViolinSolo:

话说你的模型是用的什么 原始的那个 28*28 的嘛?还是什么呀,然后你自己的如果要是做成和他的一样的话,理论上应该也是没问题的我觉得。。。

筱墨:

原始的 28*28 的貌似不能用自己的手写数字。

ViolinSolo: 回复 筱墨 :

那你把自己的 resize 一下?按比例缩小一下不就好了哈哈哈

筱墨: 回复 ViolinSolo :

但是比例缩小仅仅是缩小图片大小吧?图片色彩通道依旧是 RGB,像素也不是 28*28.

ViolinSolo: 回复 筱墨 :

rgb 也就只是 rgb 而已,你先把 3 通道改成 1 通道,就是你灰度化一下,mnist 数据集不是单通道的嘛,然后 resize 也有好多方法,有很多公式的,,所以最后 resize 后结果也可能不一样

ViolinSolo: 回复 筱墨 :

而且如果你真的有需要要做更大的图片,就要自己准备训练集了,,就不能用 mnist 了,或者你要搞迁移的话也不好说哈哈哈

筱墨: 回复 ViolinSolo :

嗯。因为图像处理这块不是很懂,所以搁置了…

ViolinSolo: 回复 筱墨 :

慢慢来哈哈哈

泛化应当没有问题,问题应该是图片的处理上,理论上需要 yuv 转 rgb 矩阵才行。图片格式没有问题的话,然后才是看过拟合的问题。


neverchange,发表于 2018-7-4 23:59:03

问题是输入网络识别的图片像素要是 28*28 的对吗?这样的视觉图片处理我还没有处理过呢…所以暂时没解决这个问题…手机拍摄的照片像素肯定不止这么低。


筱墨(提问者),2018-7-5 00:01

应该是图片大小的问题吧。


hopelg,发表于 2018-7-6 09:18:44

呃 我突然想起来一个问题,就是 2828 会被 resize 成 7841。。。所以你到底是用的那种呀,784 这种还是 28281 这种呀


ViolinSolo,发表于 2018-7-6 13:22:32

反映出的问题肯定是模型泛化能力不够,也可以说是测试数据和训练数据的分布不同。举个例子,你用亚洲人的身高体重做了个预测模型,然后去预测欧美的人的身高体重,肯定会有很大出入的。


小喽啰,发表于 2018-7-6 13:50:27