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

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

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

有帮助吗?

解决方案

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

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

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

主成分还可用于标准化形状的旋转,以便最长轴是垂直的。

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

其他提示

下面是的手写体数字庞大的数据库的链接。头版还具有用于许多不同的方法的相对性能数据,包括2层的神经网络。这应该给你一个良好的开端: MNIST数字数据库和效果

您可能也想看看杰夫·韩丁对受限玻尔兹曼机<工作/一>他说,执行得相当好,并且有一个很好的解释演讲他的网站上(很有看头)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top