我对在网络浏览器中制作手写识别应用程序非常好奇。用户画一个字母,ajax 将数据发送到服务器,神经网络找到最接近的匹配,并返回结果。所以如果你画一个a,第一个结果应该是a,然后是o,然后是e,类似的。
我对神经网络了解不多。我需要将什么样的数据传递给 NN。它可能是用户在垫子上绘制的 x/y 坐标的数组。或者神经网络期望什么类型的数据,或者会产生最好的手写结果?
我对在网络浏览器中制作手写识别应用程序非常好奇。用户画一个字母,ajax 将数据发送到服务器,神经网络找到最接近的匹配,并返回结果。所以如果你画一个a,第一个结果应该是a,然后是o,然后是e,类似的。
我对神经网络了解不多。我需要将什么样的数据传递给 NN。它可能是用户在垫子上绘制的 x/y 坐标的数组。或者神经网络期望什么类型的数据,或者会产生最好的手写结果?
您不仅需要发送 X/Y 坐标,还需要发送它们被绘制的 ORDER。因此,路径可能比一组点更好。神经网络应该能够处理它,并且有很多方法可以。一种方法可能是将路径划分为n 个神经元的n段,并让每个神经元识别字母的一部分。
通常,用于图像/手写识别的简单神经网络采用二维布尔矩阵作为输入;即,黑白位图。确保你有这些可用的训练集;或者让用户使用在线反向传播学习来训练算法。
@FrustratedWithFormsDesigner 的建议也发送订单可以使神经网络更“聪明”,但如果你只是在学习,请先尝试位图版本,看看它的效果如何。此外,使用位图粒度。也许先尝试数字识别,网络上有针对该问题的标准数据集。
基本过程是积累要识别的每个字母的多个示例,对原始数据进行预处理,训练候选模型的集合,并根据在单独的保留数据集上的测试性能选择最终模型。
预处理的性质将取决于您收集的数据。如果是“连接点”笔运动数据,那么将图像划分为区域,并以每个区域的点数进行汇总可能是最简单的。相反,如果您正在记录光栅图像,则其他预处理将很有用,例如简单的统计数据以及垂直和水平投影轮廓(行和列平均值)。
几年前,“Dr. Dobb's Journal”举办了一场手印识别比赛(使用电子墨水数据)。你可以在这里读到它:
http://www.drdobbs.com/184408743;jsessionid=IG5ALGCW1HZZVQE1GHPCKH4ATMY32JVN?pgno=4
...和这里:
http://www.drdobbs.com/184408923;jsessionid=IG5ALGCW1HZZVQE1GHPCKH4ATMY32JVN?pgno=2