【问题标题】:Best model for english alphabet and digits recognition英文字母和数字识别的最佳模型
【发布时间】:2017-10-21 12:04:09
【问题描述】:

我有一个相当大的数据集(超过 50 万张 50x50 的图像),总共包含 62 个类。图像代表英文字母和数字(全部手写)。每个类至少有 2000 个样本。

我一直在训练卷积神经网络以使用 Tensorflow 识别这些图像。

问题:在快速(大约 200 次训练迭代)非常接近局部最优值(损失值如 0.01)后,我的分类器在测试集上的准确率停留在 82% 左右。

问题:我怎样才能获得更高的准确性?我对 CNN 有什么问题吗?另外,尝试 SVM 值得吗?下面我根据我的CNN模型给出细节。

随机数据集条目: 问题 2:除了旋转模式,我的预处理方法好吗?我应该拉伸图案还是让它保持原样:左右边缘区域带有多余的白色像素。

详细信息和超参数

  • Tensorflow 优化器:AdamOptimizer
  • 学习率阿尔法:0.001
  • 辍学:1.0(无辍学)
  • 小批量:1500
  • 卷积层数:2
  • 池化层数:2
  • 全连接层:1
  • 步幅:2 像素
  • 滤镜大小:5像素
  • 测试/训练集比例:0.2/0.8

注意:模式不是骨架,它们有其原始宽度。图像是二进制的,模式为 0 值,背景为 1。

更新

这是我负责训练的代码和一小部分图像子集
https://drive.google.com/open?id=0B5kuwbyrKVqnTm1PMGZGMUxUNFU

由于我的互联网连接速度较慢,我无法上传足够的数据。
但是,您可以绘制这些图像以确定是否需要进一步预处理。

【问题讨论】:

  • 在我看来,这是一个非常具体的问题,没有看到数据就无法回答。也就是说,我想知道您是否尝试过图像增强,例如移动和/或旋转图像。这通常会增加模型的通用性。此外,尝试一些降维技术(例如 PCA)可能会很好,因为您的数据会包含大量无信息像素。
  • 在 MNIST 数据上寻找最先进的方法并首先复制该网络。查看它的结果、错误分类的图像等。您可能会从中得到一些提示。您可以查看here,了解许多数据集上的最新方法列表。
  • 我会尝试图像增强。在我的例子中,模式集中在一个 50x50 的盒子里。非常有趣的是,当我只留下数字数据时,我得到了高达 99% 的准确率,因此添加更多类会降低准确率。

标签: python machine-learning tensorflow neural-network conv-neural-network


【解决方案1】:

似乎过拟合了。你的 loss 是 0.01,在测试集上准确率在 82% 左右,loss 大于 0.01(准确率 99% 大约 loss 0.04)。

这是一个特定的问题。我认为:

  • 降低学习率,如 1e-4
  • 添加 dropout,dropout 将有助于减少过拟合
  • 减小滤镜尺寸,我认为 5x5 对于 50x50 的图片来说太大了,你可以添加更多的卷积层
  • 你的激活方法,relu 是一种很好的减少过拟合的方法

未测试,这只是建议,顺便说一句,如果您愿意,请提供数据集 url,我想训练它。 ;-)

【讨论】:

  • 还有一个问题:我是否应该拉伸图案以便它们占据整个框,或者我可以保留它现在的样子:图案在内部居中,左右边缘区域(多余的白色像素)。
  • 我也想要一张快照。 @KaiWen,我喜欢你减少 conv 大小的建议。除此之外,我可以建议使用 3x3 卷积层并使用其中大约 6 层而不使用最大池化。绝对在你的全连接层上使用 dropout。第 4 级称为深度。尝试相当小深度的类数乘以 2。
猜你喜欢
  • 2020-06-14
  • 1970-01-01
  • 1970-01-01
  • 2017-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-10
相关资源
最近更新 更多