我用MNIST数据集(带有50000个训练输入)训练了我的ANN,然后跑步了。当我尝试包含在MNIST数据集中的测试输入时,我的准确率达到91-92%(很高)。但是,如果我将我的Paint图像作为输入给经过训练的ANN,它无法识别数字。即使是最清晰的。但是,如果我从互联网上下载一个数字的图像,它的识别率很高。因此,我不明白为什么我的ANN可以识别除Paint所生成图像之外的所有内容。 (MNIST数据集包含在黑色背景上具有白色数字的图像。)
答案 0 :(得分:2)
谢谢大家,我找到了解决方案。实际上与文件格式无关。问题是数据集(手写数字)与我通过Paint生成的测试图像之间不一致。他们太整齐了,人类无法手写。所以它失败了。但是,在我生成正常(手写未打字)图像之后,它开始以高比率进行识别。
答案 1 :(得分:0)
从Paint中检查图像的格式是否与用于训练网络的图像相匹配。
如果格式不同,则“绘画”图像(位图?)中数字的特征可能与网络训练后在训练数据/下载图像中识别(压缩?)的数字特征不匹配。
答案 2 :(得分:0)
进行了绘画和在线下载PNG的实验,有两个区别:位深度和颜色深度。
imread of a PNG with paint automatically creates a uint8 [28x28x3] matrix
imread of a downloaded PNG creates a uint16[28x28] matrix
再次检查您的工作PNG
尝试在MATLAB中将绘画转换为相同的格式,例如,这是:
png_paint_16 = uint16(rgb2gray(imread('PANTPNG.png')))*257