5

該問題與傳統手寫識別有點不同。我有一個數據集是成千上萬的以下。對於一個繪製的角色,我有幾個順序的(x, y)座標,筆被按下。所以,這是一個連續的(時間)問題。如何將HMM用於手寫識別?

我希望能夠根據這些數據對手寫字符進行分類,並且很樂意實現用於學習目的的HMM。但是,這是正確的方法嗎?他們如何被用來做到這一點?

+0

這是一個非常有趣的想法。出於好奇,每個點記錄的時間座標也是如此(毫秒1個座標是30×45被按下)還是隻是按順序? – Turnsole 2012-02-21 22:56:15

+0

目前只是順序。正在考慮做一些動態時間扭曲,以解釋字符被繪製得更慢/更快 – zebra 2012-02-21 23:08:03

+0

我認爲這是正確的方法。作爲練習,您可以從識別[palm graffite](http://en.wikipedia.org/wiki/Graffiti_%28Palm_OS%29)字母開始。 – Maurits 2012-02-22 23:17:46

回答

2

這個問題實際上是兩個問題,一個組合:

  1. 從數據
  2. 從人物

的(如噪聲)序列識別字​​識別一個字符一個使用HMM用於從噪聲測量中找出有限數量的離散狀態的最可能的序列。這正是問題2,因爲離散狀態a-z的噪聲測量0-9在一個序列中跟隨彼此。

對於問題1,HMM是無用的,因爲您對底層序列不感興趣。你想要的是增加你的手寫數字與你如何寫它的信息。個人而言,我會從實施經常性的先進手寫識別開始,這已經非常好(使用卷積神經網絡或深度學習)。之後,您可以添加有關如何寫入的信息,例如順時針/逆時針。

3

我認爲HMM可以用於@jens提到的兩個問題。我正在從事在線手寫,並且HMM被用於許多文章。最簡單的方法是這樣的:

  1. 選擇一項功能。
  2. 如果選定的功能是連續轉換爲離散的。
  3. 選擇HMM參數:拓撲和狀態數量。
  4. 使用HMM訓練人物模型。每個班級有一個模型。
  5. 使用測試集進行測試。

每個項目:

  1. 最簡單的功能是連接連續 點矢量的角度。您可以使用更復雜的功能,如Douglas & Peucker算法獲得的矢量角度 。
  2. 離散化的最簡單方法是使用Freeman代碼,但也可以使用像k-means和GMM這樣的聚類算法。
  3. HMM拓撲:遍歷,左 - 右,巴基斯和線性。 #狀態 可以通過試用&錯誤獲得。對於每個型號的 ,HMM參數可以是可變的。觀測數量由離散化決定。觀察樣本可以有不同的長度。
  4. 我推薦Kevin Murphy HMM工具箱。
  5. 祝你好運。