原始數(shù)據(jù)流中包含有關(guān)鍵點的三維坐標(biāo)、手部速度、方向等信息,這些手勢是在Leap Motion坐標(biāo)系的三維空間內(nèi)完成的。不同實驗者完成每一個手勢所在的空間尺度會不同,導(dǎo)致不同用戶的同一手勢的坐標(biāo)特征就會有差異,不能達(dá)到統(tǒng)一建模的需求,因此需要對原始的坐標(biāo)信息數(shù)據(jù)流進(jìn)行相應(yīng)的預(yù)處理,將坐標(biāo)信息規(guī)整到相同的空間內(nèi),圖1以動態(tài)手勢“3”的繪制過程描述手勢的空間規(guī)整[5]。

圖1 動態(tài)手勢的空間規(guī)整示意圖

(3)
將原始數(shù)據(jù)流中不同尺度空間的坐標(biāo)信息規(guī)整到相同尺度的空間內(nèi),達(dá)到統(tǒng)一建模的要求,從而提高識別模型的魯棒性。
通過對原始數(shù)據(jù)的空間規(guī)整,對于動態(tài)手勢的某一關(guān)鍵點p1得到了該點在統(tǒng)一尺度空間的關(guān)于坐標(biāo)特征的矩陣Gp1:
(4)
那么對于動態(tài)手勢的n個關(guān)鍵點,則其原始特征矩陣為G:
G=[Gp1,Gp2,…,Gpn]
(5)
3 基于SVD的特征矩陣壓縮
利用Leap Motion傳感器的骨骼模型可以捕獲到多達(dá)19個關(guān)節(jié)點、5個指尖點、掌心點、手腕點共26個手部關(guān)鍵點的三維位置信息,其反饋數(shù)據(jù)的幀速率峰值可以達(dá)到100 f/s,因此復(fù)雜動態(tài)手勢的特征矩陣在時間維度上具有高維特性,且存在冗余數(shù)據(jù)。通過SVD算法壓縮特征矩陣在保留有效特征值不變的情況下,實現(xiàn)對高維矩陣時間維度的壓縮處理[6],以減少訓(xùn)練HMM的迭代計算的運(yùn)算量,提高模型的訓(xùn)練效率,符合動態(tài)手勢識別的實時性要求。
SVD不同于矩陣的特征值分解,它不要求待分解矩陣為n×n方陣,假定A是一個m×n階的非零矩陣,那么對A的奇異值分解有如下表示:
A=U∑VT
(6)
其中U為m×m階方陣;∑是一個m×n階對角矩陣;VT是n×n階方陣,為矩陣V的共軛轉(zhuǎn)置;U和V方陣為酉矩陣,酉矩陣即為滿足條件UTU=E、VTV=E的矩陣。
對于矩陣A的SVD奇異值分解,首先對ATA進(jìn)行特征值分解,得到A=U∑VT式中的酉矩陣V;然后AAT進(jìn)行特征值分解得到A=U∑VT式中的酉矩陣U,求出矩陣∑。
奇異值矩陣與特征值矩陣類似,奇異值矩陣對角陣的數(shù)值是按照從大到小排列的,且奇異值減少呈現(xiàn)的特性為斷崖式[7]。因此可以利用最大的k個奇異值及其對應(yīng)的向量來對原始特征矩陣進(jìn)行近似描述,如下式所示:

(7)


將采集到的動態(tài)手勢的原始特征矩陣經(jīng)過SVD降維處理后得到新的特征矩陣:
Gsvd=[Gp1,Gp2,…,Gpr]
(8)
4 基于HMM的動態(tài)手勢識別算法
與靜態(tài)手勢不同,動態(tài)手勢是不固定時長的一串動作序列,可以理解為一系列離散的動作片段按照先后次序排列構(gòu)成,每個動作片段可以看成一種靜態(tài)手勢。為了識別動態(tài)手勢序列,將識別過程拆分成兩個部分:首先從連續(xù)數(shù)據(jù)流中分割出獨(dú)立的動作片段;其次用一種相似性度量方法對它們進(jìn)行匹配識別。
根據(jù)HMM對動態(tài)的時間序列有很好的建模能力這一優(yōu)點,本文選擇通過HMM的方法對動態(tài)手勢進(jìn)行分類識別[8]。
HMM是一種基于時間序列的概率統(tǒng)計模型,描述了一個包含了隱藏未知參數(shù)的Markov過程,而Markov過程作為HMM的基礎(chǔ),它描述了數(shù)學(xué)中具有Markov性質(zhì)的離散隨機(jī)過程。HMM就是根據(jù)Markov過程完成了由一個隱藏的Markov鏈隨機(jī)生成一個不可觀測的狀態(tài)隨機(jī)序列,然后再由每一個狀態(tài)生成一個可觀測序列從而構(gòu)成觀測隨機(jī)序列。將HMM應(yīng)用到模式分類中,就是利用HMM,根據(jù)可觀察的序列來確定未知的隱藏參數(shù),然后通過確定后的隱藏參數(shù)根據(jù)需求做進(jìn)一步的分析。
對于離散的HMM,由λ=(A,B,π)決定。
A為狀態(tài)轉(zhuǎn)移矩陣:A=[aij]n×n,aij=P(it+1=qj|it=qi),i,j=1,2,3,…,n。
B為觀測概率矩陣:B=[bj(k)]n×m,bj(k)=P(ot=k|it=j),k=1,…,m;j=1,2,3,…,n。
π是初始狀態(tài)概率:π=(πi),πi=P(i1=qi)。
設(shè)Q分別為隱狀態(tài)集合:Q={q1,q2,q3,…,qn}。
HMM還包含有兩個基本假設(shè),也就是系統(tǒng)滿足Markov特性:
(9)
將HMM應(yīng)用到動態(tài)手勢識別,屬于一個觀察序列的模型匹配問題。選擇用HMM的前后向算法[9]來訓(xùn)練動態(tài)手勢HMM模型,該過程屬于HMM的學(xué)習(xí)問題;然后通過前向算法計算已知觀察序列在每一個特定HMM下的條件概率,根據(jù)最大的條件概率推算評估匹配最可能的HMM,而該過程則屬于HMM的評估問題。原理就是根據(jù)已知的觀察序列樣本不斷地訓(xùn)練調(diào)整HMM的狀態(tài)轉(zhuǎn)移概率矩陣和觀測概率矩陣,最終得到HMM的三個概率λ=(A,B,π)[10]。前向后向算法作為HMM學(xué)習(xí)問題的一種近似解決方法。
本文通過前向算法計算待測手勢序列在每一個給定的HMM參數(shù)下的條件概率。前向算法的定義為:對于已知的模型參數(shù)λ=(A,B,π),定義t時刻的觀測序列o1,o2,o3,…,ot且狀態(tài)為Si的概率為前向概率αt(i)[11],其表達(dá)式如下:
αt(i)=P(o1o2o3…ot,St=Si|λ)
(10)
根據(jù)前向概率的公式可以遞推求出前向觀測序列即待識別手勢序列的條件概率P(O|λ),遞推過程如下:
首先,定義已知的觀測序列:
(11)
其中aji為轉(zhuǎn)移概率:
aji=P(St+1=Si|St=Sj)
(12)
那么根據(jù)定義,當(dāng)t=T時,得到的遞推結(jié)果:

(13)
即為當(dāng)前觀測序列在該HMM模型下的條件概率值。
5 實驗驗證與分析
在將特征值應(yīng)用于HMM訓(xùn)練之前,需對特征矩陣進(jìn)行進(jìn)一步的處理,即對動態(tài)手勢Gsvd中每一個關(guān)鍵點序列進(jìn)行聚類分析[12]。假設(shè)將其聚為A、B、C、D…共N類,N即為手勢Gsvd對應(yīng)的HMM的隱狀態(tài)數(shù),再對N類的每一子類中的關(guān)鍵點進(jìn)行聚類,假設(shè)聚為a、b、c、d…共M類,M即為手勢Gsvd對應(yīng)的HMM模型的觀測狀態(tài)數(shù)。基于關(guān)鍵點落在每一類別的概率分布初步估計其初始觀測概率矩陣B、狀態(tài)轉(zhuǎn)移矩陣A以及初始狀態(tài)概率π。
實驗中采用HMM的方法對動態(tài)手勢識別就是對模型λ=(A,B,π)進(jìn)行評估的過程,方法是通過模板庫中所有手勢的HMM與觀察到的手勢特征序列進(jìn)行匹配,計算輸入手勢特征序列O在模版庫中λ=(A,B,π)下的條件概率Pmax(O|λ),得到的最大匹配概率對應(yīng)的HMM即為已知觀察序列O的最佳匹配結(jié)果。
當(dāng)輸入的手勢序列不是模版庫中定義的手勢時,會存在將其誤識別為模版庫中的手勢的情況。針對這種情況采用設(shè)定閾值的方法避免對非定義的手勢誤識別。閾值的定義:假定某一手勢G訓(xùn)練HMM的樣本集為S(O1,O2,…,On),那么將該手勢樣本集每一個觀察序列輸入到手勢模版庫,計算在其對應(yīng)HMM下的條件概率P(Oi|λ)時,選取最小條件概率對應(yīng)的手勢序列Oi,手勢G的閾值為:
T(G)=log(Pmin(Oi|λ))/length(Oi)
(14)
其中l(wèi)ength(Oi)為最小條件概率對應(yīng)手勢序列Oi的維度。
對輸入的待觀測手勢序列O,通過在模版庫中尋找其HMM的最大輸出條件概率Pmax(O|λ)并記錄最大條件概率對應(yīng)的模型的手勢Gi,判斷是否滿足條件log(Pmax(O|λ))/length(O)>T(Gi),如果成立則將其識別為模版庫中對應(yīng)的手勢,反之判定輸入手勢序列為模版庫之外的手勢。
此外在實驗中采用了HMM參數(shù)自更新的策略,假定以手勢G0訓(xùn)練后的HMM參數(shù)λ0對輸入的手勢進(jìn)行評估分類識別,當(dāng)輸入的手勢被識別為該手勢時,則將該輸入手勢的觀察序列以λ0為初始值,通過前后向算法更新該手勢的模型參數(shù)λ0得到新參數(shù)。
以手勢的空間位置信息作為特征對動態(tài)手勢識別方法進(jìn)行實驗驗證,鑒于當(dāng)前基于Leap Motion的手勢應(yīng)用研究相對較少,還沒有標(biāo)準(zhǔn)的動態(tài)手勢數(shù)據(jù)可以利用,本研究自定義10組動態(tài)手勢,分別為“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”這10個阿拉伯?dāng)?shù)字的手寫過程。
每組動態(tài)手勢采集100個重復(fù)手勢樣本,其中每組的前50個手勢特征樣本作為HMM的學(xué)習(xí)特征數(shù)據(jù),依此可以訓(xùn)練出10個阿拉伯?dāng)?shù)字手寫過程的HMM模型。然后將每組動態(tài)手勢的后50個手勢特征作為測試評估數(shù)據(jù),在將測試樣本的手勢序列輸入到HMM進(jìn)行評估的過程中采取了前述的模型參數(shù)自更新策略以提高模型的適應(yīng)性和識別準(zhǔn)確率。得出的每組動態(tài)手勢的識別個數(shù)和識別率如表1所示。

表1 動態(tài)手勢的識別結(jié)果分析
圖2展示了訓(xùn)練樣本和測試樣本的識別準(zhǔn)確率的橫向?qū)Ρ?,?xùn)練樣本的識別率普遍會高于測試樣本的識別率,但是測試樣本利用訓(xùn)練樣本的HMM模型進(jìn)行分類識別的總體識別率相對是穩(wěn)定的。

圖2 橫向?qū)Ρ葓D
從實驗結(jié)果可以看出,文中所定義的10個阿拉伯?dāng)?shù)字的動態(tài)手勢在當(dāng)前有限樣本條件下的測試樣本和訓(xùn)練樣本的總識別率均在96%以上,但是有部分手勢的識別率較低,如“4”、“5”、“6”這3個手勢的繪制,通過對其分析可以發(fā)現(xiàn)這是由于手勢“5”與手勢“6”的繪制軌跡的部分階段有較高的相似度,存在相互誤識別的現(xiàn)象。類似地,手勢“7”與手勢“9”在軌跡的末段特征差異較低,實驗中有3個“9”被誤識別為“7”??傮w來看,該方法的測試樣本的綜合識別率為96.2%,證明了該方法的可行性及較高的識別精確度。
6 結(jié)論
本文提出了基于SVD特征矩陣壓縮和HMM的動態(tài)手勢識別方法,該方法通過SVD的方法對動態(tài)手勢特征矩陣進(jìn)行壓縮處理,提取出有效的動態(tài)手勢特征,然后通過HMM的方法對提取的動態(tài)手勢進(jìn)行識別分類,并通過實驗驗證了該方法的可行性和識別率。
[1] 劉云,孫玉.基于支持向量機(jī)的手勢識別研究[J].微計算機(jī)信息,2009,25(24):202-203.
[2] 馮桐.基于神經(jīng)網(wǎng)絡(luò)的手勢識別研究[D].北京:北京理工大學(xué),2015.
[3] 許杏.基于隱馬爾可夫模型的手勢識別研究[D].廣州:華南理工大學(xué),2011.
[4] 朱明茗,景紅.基于體感技術(shù)的手勢追蹤與識別[J].計算機(jī)系統(tǒng)應(yīng)用,2014,23(8):228-232.
[5] 張濤,洪文學(xué).類空間規(guī)整度的計算幾何組合分類器權(quán)重分配[J].小型微型計算機(jī)系統(tǒng),2012,33(7):1572-1576.
[6] 李明.矩陣分解理論在降維中的應(yīng)用[J].吉林師范大學(xué)學(xué)報(自然科學(xué)版),2010,31(3):117-119.
[7] 王佰玲,田志宏,張永錚.奇異值分解算法優(yōu)化[J].電子學(xué)報,2010,38(10):2234-2239.
[8] LEE H K, KIM J H. An HMM-based threshold model approach for gesture recognition[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 1999, 21(10):961-973.
[9] 于曉明,柏松.基于前向-后向HMM的連續(xù)語音識別系統(tǒng)的研究[J].計算機(jī)工程與設(shè)計,2009,30(18):4339-4341.
[10] WELCH L R. Hidden Markov models and the Baum-Welch algorithm[J]. IEEE Information Theory Society Newsletter, 2003, 53(2):194-211.
[11] SOIMAN S I, RUSU I, PENTIUC S G. A parallel accelerated approach of HMM forward algorithm for IBM Roadrunner clusters[C].International Conference on Development and Application Systems, IEEE, 2014:184-188.
[12] 周世兵,徐振源,唐旭清.K-means算法最佳聚類數(shù)確定方法[J].計算機(jī)應(yīng)用,2010,30(8):1995-1998.