2014-10-08 114 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