2014-10-08 104 views
2

我正在努力去理解为了执行OCR而使用NN,我的目标与通常的OCR算法有点不同。使用神经网络的OCR

我的目标是能够确定一个特定的输入是否是特定的字母,例如我期望从用户那里得到字母'A',并且我需要确保我没有得到不同的形状。

我需要能够决定给定的输入是否是正确的形状。

从我一直在阅读的内容来看,这里有几个选项,MLP,SOM网络,反向传播网络。

据我所知,因为我打算为每个形状(字母)创建样本以训练网络,所以我应该定义一个SOM网络,这是否正确?

我不确定哪个方向是首选,如果你能指出我的方向是正确的,那就太好了。

我打算使用Encog框架,不知道是否重要。

+1

尝试caffe https://github.com/BVLC/caffe/tree/master/examples/mnist – 2014-10-08 17:08:23

回答

2

从你所描述的,SOM不是最好的选择,因为它是一个无监督的分类器。您正在为每个培训示例指定类(字母);因此,监督分类器如多层感知器(MLP)更为合适。

关于MLP与反向传播网络,这是一个有点错误的区别。 MLP是一种人工神经网络(ANN),而反向传播是一种学习方法。可以使用反向传播或通过其他方法(例如,遗传算法)来训练MLP。

+0

所以,如果我正确地理解你,你建议为了测试一个给定的输入匹配一个特定的字母,我应该创建一个已经接受过该特定字母培训的MLP,并可以决定输入是否正确? – aviran 2014-10-08 19:40:02

+0

这不是那么简单,有多种方法可以设置您的解决方案。一种是创建一个MLP,其输出的字母数量与输出一样多。然后,您将输入分类为具有最高输出值的字母。或者,您可以为每个字母训练一个一比一的MLP,并在给定的测试中使用适当的MLP。另一个因素是你是否允许输入不是任何受过训练的字母,但是从你的问题中不清楚是否允许。 – bogatron 2014-10-08 23:25:30

+0

您提到的方法之一是否比其他方法更准确?我不会允许那些不是训练过的字母之一的输入。 – aviran 2014-10-09 05:16:47