感知器可以用来检测手写数字吗?

时间:2009-02-16 10:55:10

标签: artificial-intelligence ocr neural-network pattern-recognition perceptron

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

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

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

3 个答案:

答案 0 :(得分:8)

这是一个庞大的手写数字数据库的链接。首页还具有许多不同方法的相对性能数据,包括2层神经网络。这应该给你一个良好的开端: MNIST digits database and performance

您可能还想查看Geoff Hinton's work on Restricted Boltzmann Machines他说的表现相当不错,并且在他的网站上有一个很好的解释性讲座(非常容易观看)。

答案 1 :(得分:8)

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

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

  • 规范化图像:
    • 调整对比度和亮度,使图像的直方图与参考图像匹配。
    • 模糊图像,消除噪音。
    • 将其转换为黑色&白色,使用一些门槛。
    • 找到形状的边界框,缩放到预定义的大小。
  • 计算可用于区分一个数字与另一个数字的图像的各种功能:
    • 图像的Euler number - 告诉您形状中有多少个“洞”(例如,数字8的两个洞)。
    • 白色像素数(数字区域)
    • 白色像素坐标系的principal components - 告诉您形状的“拉长”程度。
    • ...您可以想到的其他功能往往具有类似数字的相似值。

主要成分也可用于标准化形状的旋转,使最长的轴是垂直的。

这些功能是您输入神经网络进行分类的,而不是像素。

答案 2 :(得分:1)

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