小编yas*_*ici的帖子

NIST和CNN的数字识别前的预处理用MNIST数据集训练

我试图通过使用NN和CNN对我自己和一些朋友写的手写数字进行分类.为了训练NN,使用MNIST数据集.问题是使用MNIST数据集训练的NN不能在我的数据集上给出令人满意的测试结果.我在Python和MATLAB上使用了一些库,具有不同的设置,如下所示.

在Python上我已经将这段代码用于设置;

  • 3层NN,输入数= 784,隐藏神经元数= 30,输出数= 10
  • 成本函数=交叉熵
  • 时代数= 30
  • 批量大小= 10
  • 学习率= 0.5

它是用MNIST训练集训练的,测试结果如下:

MNIST上的测试结果=我自己的数据集上的96%测试结果= 80%

在MATLAB上我使用了深度学习工具箱,其中包含各种设置,归一化,与上面类似,NN的最佳精度约为75%.在MATLAB上使用NN和CNN.

我试图将自己的数据集类似于MNIST.以上结果从预处理数据集中收集.以下是应用于我的数据集的预处理:

  • 每个数字单独裁剪,并通过usign bicubic插值调整为28 x 28
  • 通过MATLAB上的usign边界框,路径以MNIST中的平均值为中心
  • 背景为0,最高像素值为1,如MNIST中所示

我不知道该怎么做.仍存在一些差异,如对比度等,但对比度增强试验无法提高准确性.

这是来自MNIST和我自己的数据集的一些数字,用于直观地比较它们.

MNIST数字

我自己的数据集

正如您所看到的,存在明显的对比差异.我认为准确性问题是由于MNIST和我自己的数据集之间缺乏相似性.我该如何处理这个问题?

有一个类似的问题在这里,但他的数据集是印刷数字集合,而不是像我一样.

编辑:我还测试了我自己的数据集的二进制化版本,该数据集是在使用二进制化MNIST和默认MNIST进行训练的NN上进行的.二值化阈值为0.05.

这是分别来自MNIST数据集和我自己的数据集的矩阵形式的示例图像.他们两个都是5.

MNIST:

  Columns 1 through 10

         0         0         0         0         0         0         0         0         0         0
         0         0         0         0         0         0         0         0         0         0
         0         0         0         0         0         0         0         0         0         0
         0         0         0         0         0         0         0         0         0 …
Run Code Online (Sandbox Code Playgroud)

python ocr matlab image-recognition mnist

7
推荐指数
1
解决办法
8881
查看次数

标签 统计

image-recognition ×1

matlab ×1

mnist ×1

ocr ×1

python ×1