9

假设我有一个小位图,其中包含一个手写数字(0..9)。

是否可以使用(两层)感知器检测数字?

除了使用神经网络之外,还有其他方法可以从位图中检测单个数字吗?

4

3 回答 3

8

这是一个巨大的手写数字数据库的链接。头版还包含许多不同方法的相关性能数据,包括 2 层神经网络。这应该给你一个好的开始: MNIST 数字数据库和性能

您可能还想查看Geoff Hinton 在 Restricted Boltzmann Machines 上的工作,他说它的性能相当不错,并且在他的网站上有一个很好的解释性讲座(非常值得一看)。

于 2009-02-16T11:02:38.670 回答
8

将位图的每个像素直接输入到神经网络中需要大量的训练,并且不能很好地处理图像的缩放或旋转。

为了帮助神经网络进行良好的分类,您需要执行一些预处理步骤。

  • 标准化图像:
    • 调整对比度和亮度,使图像的直方图与参考图像匹配。
    • 模糊图像,去除噪点。
    • 使用一些阈值将其转换为黑白。
    • 找到形状的边界框,缩放到预定义的大小。
  • 计算可用于区分一个数字和另一个数字的图像的各种特征:
    • 图像的欧拉数——告诉你形状中有多少个“孔”(例如数字 8 的两个孔)。
    • 白色像素的数量(数字的面积)
    • 白色像素坐标组的主成分——告诉你形状有多“拉长”。
    • ...您可以想到的其他功能往往具有相似数字的相似值。

主成分也可用于对形状的旋转进行归一化,从而使最长轴是垂直的。

这些特征是您输入神经网络进行分类的内容,而不是像素。

于 2009-02-16T11:27:30.717 回答
1

这是一个Matlab 示例程序,它使用经过训练的神经网络来检测单个数字(图像大小固定为 28*28)。

于 2009-02-16T11:03:05.970 回答