感知器可以用来检测手写数字吗?
题
假设我有一个小位图,其中包含一个手写数字(0..9)。
是否可以使用(两层)感知器来检测数字?
除了使用神经网络之外,还有其他方法可以从位图中检测单个数字吗?
解决方案
将位图的每个像素直接输入神经网络将需要大量训练,并且不能很好地处理图像的缩放或旋转。
为了帮助神经网络进行良好的分类,您需要执行一些预处理步骤。
- 标准化图像:
- 调整对比度和亮度,使图像的直方图与参考图像匹配。
- 模糊图像,去除噪声。
- 使用一些阈值将其转换为黑白。
- 找到形状的边界框,缩放到预定义的大小。
- 计算可用于区分一个数字和另一个数字的图像的各种特征:
主成分还可用于标准化形状的旋转,以便最长轴是垂直的。
这些特征是您输入神经网络进行分类的内容,而不是像素。
其他提示
下面是的手写体数字庞大的数据库的链接。头版还具有用于许多不同的方法的相对性能数据,包括2层的神经网络。这应该给你一个良好的开端: MNIST数字数据库和效果
您可能也想看看杰夫·韩丁对受限玻尔兹曼机<工作/一>他说,执行得相当好,并且有一个很好的解释演讲他的网站上(很有看头)。
下面是一个 Matlab的示例程序使用已训练的神经网络,以检测个位数(图像尺寸固定为28 * 28)。
不隶属于 StackOverflow