使用神经网络的 OCR
Posted
技术标签:
【中文标题】使用神经网络的 OCR【英文标题】:OCR using a Neural Network 【发布时间】:2014-12-02 18:11:26 【问题描述】:我正在努力了解神经网络的用法以执行 OCR,我的目标与通常的 OCR 算法有点不同。
我的目标是能够确定特定输入是否是特定字母,例如我希望从用户那里得到字母“A”,我需要确保我没有得到不同的字母形状。
我需要能够确定给定的输入是否是正确的形状。
根据我一直在阅读的内容,这里有几个选项,MLP、SOM 网络、反向传播网络。
据我了解,由于我计划为每个形状(字母)创建样本以训练网络,因此我应该定义一个 SOM 网络,对吗?
我不确定哪个方向是首选,如果您能指出正确的方向,那就太好了。
我打算使用 Encog 框架,不确定是否重要。
【问题讨论】:
试试咖啡github.com/BVLC/caffe/tree/master/examples/mnist 【参考方案1】:根据您的描述,SOM 不是最佳选择,因为它是一个无监督分类器。您正在为每个训练示例指定类(字母);因此,多层感知器(MLP)等有监督分类器更为合适。
关于 MLP 与反向传播网络,这是一个有点错误的区别。 MLP是一种人工神经网络(ANN),而反向传播是一种学习方法。可以使用反向传播或其他方法(例如遗传算法)来训练 MLP。
【讨论】:
因此,如果我理解正确,您建议为了测试给定输入是否与特定字母匹配,我应该创建一个已针对该特定字母进行训练的 MLP,并可以决定输入对吗? 并不是那么简单,您可以通过多种方式设置解决方案。一种是创建一个输出与字母一样多的 MLP。然后,您会将输入分类为具有最高输出值的字母。或者,您可以为每个字母训练一个一对一的 MLP,并为给定的测试使用适当的 MLP。另一个因素是您是否允许输入不是任何经过训练的字母,但从您的问题中不清楚是否允许。 你提到的一种方法比另一种更准确吗?我不允许输入不是经过训练的字母之一。 两者本质上都不准确。反向传播是训练 MLP 最常用的方法,通常训练速度更快。如果输入始终是允许的字母之一,那么输出与字母一样多的单个 MLP 可能是可行的方法。请注意,您的 MLP 中可能需要一两个隐藏层。 感谢您的帮助!以上是关于使用神经网络的 OCR的主要内容,如果未能解决你的问题,请参考以下文章