5

我目前正在使用隱馬爾可夫模型作爲matlab分類階段(使用網絡攝像頭)的手勢識別應用程序。我完成了包括特徵向量提取在內的預處理部分。我已經將主成分分析(PCA)應用於這些載體。使用隱馬爾可夫模型的手勢識別

現在我要使用Kevin Murphy的HMM工具箱,我需要我的觀察序列是從1到M(M =觀察符號數)範圍內的數字(整數)形式。如果我是正確的,那麼我必須使用碼本的概念並使用矢量量化來獲得我的觀察序列。

我的問題:

  1. 如何構建一個碼書?
  2. 而我該如何使用此密碼本來獲取我的輸入視頻的觀察符號?

注:我用橢圓傅立葉描述符形狀特徵提取和每個手勢的PCA值存儲在尺寸[11x220]

(在視頻= 11的幀的數量)的基質中接下來我該做什麼? 有沒有其他方法可以獲得特徵向量而不是橢圓傅立葉描述符?

回答

2

HMM是一系列連續數據的概率模型,其中您假定數據是從潛在(「隱藏」)狀態空間上的離散狀態馬爾可夫鏈生成的。一般來說,所謂的「排放量」來自每個州的同一分佈族,但是具有不同的參數。

我對matlab的實現並不是特別熟悉,但它聽起來像是指使用多項式發射分佈的實現,其中觀測數據是來自預先指定字母表的符號序列。該模型中的未知參數是隱藏狀態與每個狀態下每個輸出符號的多項式權重之間的轉移概率。如果你的特徵是二元的並且相互排斥的話,這是合適的分佈 - 比如說「手勢走向左邊」與「手勢走向右邊」等等。

但是,如果您的功能是連續的,則可能更適合使用連續排放分配。例如,高斯HMM很常見。在這裏,你觀察到的數據是一系列連續的(可能的多變量)數據,並且假定在每個隱藏狀態下,輸出是來自高斯的i.i.d,其具有你希望學習的均值和(共)方差。

如果你不反對python,在scikits-learn頁面上有一些相當不錯的多項式和高斯HMM文檔:http://scikit-learn.org/stable/modules/hmm.html。從實際的角度來看,如果你想要在你的數據上使用多項式HMM,我會建議先建立碼本運行k均值聚類,然後使用狀態標籤作爲HMM的輸入。但使用高斯HMM可能會更好。