7

I am testing printed digits (0-9) on a Convolutional Neural Network. It is giving 99+ % accuracy on the MNIST Dataset, but when I tried it using fonts installed on computer (Ariel, Calibri, Cambria, Cambria math, Times New Roman) and trained the images generated by fonts (104 images per font(Total 25 fonts - 4 images per font(little difference)) the training error rate does not go below 80%, i.e. 20% accuracy. Why?

Here is "2" number Images sample -

I resized every image 28 x 28.

Here is more detail :-

Training data size = 28 x 28 images. Network parameters - As LeNet5 Architecture of Network -

Input Layer -28x28
| Convolutional Layer - (Relu Activation);
| Pooling Layer - (Tanh Activation)
| Convolutional Layer - (Relu Activation)
| Local Layer(120 neurons) - (Relu)
| Fully Connected (Softmax Activation, 10 outputs)

This works, giving 99+% accuracy on MNIST. Why is so bad with computer-generated fonts? A CNN can handle lot of variance in data.

4

3 回答 3

2

我看到两个可能的问题:

预处理:MNIST 不仅是 28px x 28px,而且:

来自 NIST 的原始黑白(双水平)图像经过尺寸标准化以适合 20x20 像素框,同时保持其纵横比。由于归一化算法使用的抗锯齿技术,生成的图像包含灰度级。通过计算像素的质心,图像以 28x28 图像为中心,并平移图像以将该点定位在 28x28 场的中心。

资料来源:MNIST 网站

过拟合

  • MNIST 有 60,000 个训练示例和 10,000 个测试示例。你有多少?
  • 您是否尝试过辍学(见论文)?
  • 您是否尝试过数据集扩充技术?(例如稍微移动图像,可能会稍微改变纵横比,您也可以添加噪点 - 但是,我认为这些不会有帮助)
  • 您是否尝试过较小的网络?(你的过滤器有多大/你有多少过滤器?)

评论

有趣的想法!您是否尝试过简单地将经过训练的 MNIST 网络应用于您的数据?结果如何?

于 2016-07-17T11:24:35.143 回答
0

这可能是一个过度拟合的问题。当您的网络过于复杂而无法解决问题时,可能会发生这种情况。检查这篇文章:http ://es.mathworks.com/help/nnet/ug/improve-neural-network-generalization-and-avoid-overfitting.html

于 2016-07-15T08:01:39.900 回答
0

这绝对看起来像是一个过度拟合的问题。我看到你有两个卷积层、两个最大池化层和两个全连接层。但是总共有多少重量?每个类只有 96 个示例,这肯定小于 CNN 中的权重数量。请记住,您希望训练集中的实例至少比 CNN 中的权重多 5 倍。

您有两种解决方案来改进您的 CNN:

  • 摇动训练集中的每个实例。你每个数字大约 1 个像素左右。它已经将你的训练集乘以 9。
  • 使用变压器层。它将在每个时期为每个数字添加弹性变形。它会通过人为地增加你的训练集来加强学习。此外,它将使预测其他字体更加有效。
于 2016-07-17T09:13:27.167 回答