2013-11-02 47 views
6

我已經從許多孤立字符圖像中提取了特徵(如漸變,相鄰像素權重和幾何特性)。我如何使用HMM作爲訓練此數據的分類器?我閱讀的關於HMM的所有文獻指的是狀態和狀態轉換,但是我不能將它連接到特徵和類標籤上.JAHMM主頁上的例子並不涉及我的問題。 我需要使用HMM並不是因爲它比其他方法更好用問題,但由於項目主題的限制。使用HMM進行離線字符識別

有一個答案this在線識別的問題,但我想離線和在一個更詳細的

編輯:我將每個字符劃分成具有固定數量的正方形的網格。現在我正計劃對每個網格塊執行特徵提取,從而通過從左到右和從上到下移動來獲取每個樣本的一系列特徵。

  1. 這是否代表了一個HMM,即充足的「序列」將一個HMM能夠猜到數據的時間變化,即使字符不是繪製從左至右,從上到下?如果不是建議一種替代方式。

  2. 我應該喂很多功能還是從幾個開始?我怎麼知道HMM是否正在降級,或者如果這些功能不好?我正在使用JAHMM。

  3. 提取中風特徵很困難,不能在邏輯上與網格特徵相結合? (因爲HMM預計由一些隨機處理而生成的序列)

+0

也許我是誤解,但是使用HMM的整點不是隨機繪製的字符,而是因爲語言統計 – vish

回答

2

我通常已經看到用於這種識別任務的神經網絡即hereherehere,和here,。由於一個簡單的谷歌搜索在OCR中爲神經網絡提供瞭如此多的命中,我假定你使用HMMs(項目限制,正確?)無論如何,這些鏈接可以提供一些洞察網格化圖像和獲取圖像特徵。

將網格轉換爲觀察序列的方法是合理的。在這種情況下,請確保您不會混淆觀察和狀態。您從一個塊中提取的特徵應該收集到一個觀察中,即特徵向量。 (與語音識別相比,塊的特徵向量類似於與語音音素關聯的特徵向量。)關於基礎狀態的信息並不多。這是HMM隱藏的方面,訓練過程應該告訴模型一個特徵向量對於一個字符(即轉換概率)有多大可能跟隨另一個特徵向量。

由於這是一個脫機過程,因此不要關注字符如何繪製的時間方面。爲了您的任務的目的,您使用從左到右,從上到下的塊序列對觀測序列施加了時間順序。這應該很好。

至於HMM性能:選擇一個合理的顯着特徵向量。在語音識別中,特徵向量的維度可以高(> 10)。 (這也是引用的文獻可以提供幫助的地方。)預留一定比例的訓練數據,以便您可以正確測試模型。首先,訓練模型,然後在訓練數據集上評估模型。分類你的角色有多好?如果效果不佳,請重新評估特徵向量。如果它在測試數據上表現良好,請通過在保留的測試數據上運行分類器來測試分類器的一般性。

至於狀態的數量,我會從啓發式派生數字開始。假設你的角色圖像被縮放和規格化,可能有40%(?)的塊被佔用了?由於沒有提供源圖像,這是我粗略的猜測。對於8x8的網格,這意味着有25個塊被佔用。然後,我們可以從25個州開始 - 但這可能很幼稚:空塊可以傳遞信息(意味着狀態的數量可能會增加),但是某些特徵集可能在類似狀態下被觀察到(意味着狀態的數量可能會減少)。是我,我可能會選擇20個州。話雖如此:小心不要混淆特徵和狀態。您的特徵向量是在特定狀態下觀察到的事物的表示。如果上述測試顯示您的模型表現不佳,請調整狀態數量,然後重試。

祝你好運。

+0

謝謝!這是全面的。我有幾個問題:JAHMM庫只有一維HMM。牢記這一點,我將如何向HMM展示這些功能?例如,我應該將塊中的所有特徵放在一起,製作一個長矢量? –

+0

是的,如果你有十個特徵,那麼你應該使用一個帶有10個元素的一維矢量。 – Throwback1986