馬力馮瑾
(西安郵電大學(xué) 西安 710061)
隨著計(jì)算機(jī)科學(xué)的迅速發(fā)展,人機(jī)交互技術(shù)已成為計(jì)算機(jī)技術(shù)領(lǐng)域中的重要研究課題[1]。手勢識(shí)別作為人機(jī)交互中重要的技術(shù)之一,有其現(xiàn)實(shí)的研究意義。Leap Motion是一款基于USB接口的體感控制器設(shè)備,它可檢測其視野區(qū)域內(nèi)的手、手指以及類似于手指的其他物體[2],并給出這些物體的實(shí)時(shí)位置坐標(biāo)和一些運(yùn)動(dòng)信息。Leap Motion控制器的應(yīng)用將會(huì)使人機(jī)交互達(dá)到一個(gè)新的高度[3],本文中利用Leap Motion控制器開發(fā)了一個(gè)Gestures Visualizer系統(tǒng),用于提供動(dòng)態(tài)手勢數(shù)據(jù),且基于HMM算法對(duì)動(dòng)態(tài)手勢進(jìn)行識(shí)別[4]研究,并對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行分析。
隱馬爾科夫模型(HMM)是一種有著馬爾科夫?qū)傩缘南到y(tǒng)[5],其中的馬爾科夫?qū)傩灾傅氖撬南乱粋€(gè)狀態(tài)依賴于前一個(gè)狀態(tài),并且每個(gè)狀態(tài)之間的轉(zhuǎn)移是有概率的。一個(gè)典型的HMM的模型結(jié)構(gòu)可以表示為λ=( )N,M,A,B,π,各參數(shù)定義如下:
1)N代表模型所隱狀態(tài)的數(shù)量,用qt表示t時(shí)刻的狀態(tài),Q={q1,q2,…,qt,…,qT}表示隱狀態(tài)序列,而 qt取{s1,s2,…,sN}。
2)M 代表模型觀察值的數(shù)量,用ot表示t時(shí)刻的觀察值,O={o1,o2,…,ot,…,oT}表示觀察序列,而 ot取{v1,v2,…,vM}。
3)A={aij}表示 N×N狀態(tài)轉(zhuǎn)移矩陣,用aij=P(qt=sj|qt-1=si)表示隱狀態(tài) si轉(zhuǎn)向 sj的概率。
4)B={bj(k)}表 示 N×M 觀 察 矩 陣 ,用bj(k)=P(ot=vk|qt=sj)表示t時(shí)刻隱狀態(tài)為sj時(shí)觀察值vk的概率。
5) π={π1,π2,…,πN} 表 示 初 始 狀 態(tài) ,用πi=P(q1=si)表示初始狀態(tài)q1為si的概率。
1)若給定模型λ和觀察狀態(tài)序列O,求解每個(gè)模型的輸出概率P(O |λ),分別比較每個(gè)模型的P(O |λ),P(O |λ)最大的模型就是最終的識(shí)別結(jié)果[6]。給定HMM的模型 λ和隱狀態(tài)序列Q={q1,q2,…,qT},則 P(Q |λ)定義如下:
采用前向-后向(Forward-Backward)算法求解P(O |λ)的計(jì)算過程如下:
(1)初始化 α1(i)=πibi(o1) ?,?i=1?,?2?,…,N ;
(2)αt+1(j)=[αt(i) aij]bj(ot+1),t=1,2,…,??T-1?,j=1,2,…,N ;
2)定義后向變量,表示給定 λ,t時(shí)刻所對(duì)應(yīng)的狀態(tài)為si,則t+1到T時(shí)刻所產(chǎn)生觀察序列ot+1ot+2...oT的概率。后向算法的計(jì)算過程如下:
(1)初始化 βT(i)=1?,?i=1?,?2?,…,?N ;
(2)βt( i)=aijbj(ot+1)βt+1(j) ?, ?t=T-1?,?…,1?,i=1?, ?2?,?…?,?N
學(xué)習(xí)問題即對(duì)HMM模型進(jìn)行不斷地訓(xùn)練,為每個(gè)模型找出最佳的參數(shù)λ,該參數(shù)λ可使 p(O |λ)取得最大值。采用Baum-Welch算法求解最優(yōu)模型[7]參數(shù)λ。在給定λ和觀察序列O時(shí),定義后驗(yàn)概 率 函 數(shù) γt(i)=P(qt=si|O,λ) , 且 符 合γt(i)=1;在給定模型 λ和觀察序列O時(shí),t時(shí)刻為si狀態(tài),t+1時(shí)刻為sj狀態(tài),用ξ(i , j)表示概率函數(shù),則 γt(i)和 ξ(i,j)可分別表示如下:
則相關(guān)參數(shù)估計(jì)公式如下:
2.2.1 求解最佳模型參數(shù)λ
1)初始化 λ;
2)由現(xiàn)有的λ和觀察序列O,根據(jù)以上參數(shù)估計(jì)公式對(duì)相關(guān)參數(shù)進(jìn)行估計(jì),得出新的模型參數(shù)λˉ=(πˉ ,Aˉ,Bˉ);
3)根據(jù)Forward-Backward算法計(jì)算 P(O |λ)和P(O |,若符合 |logP(O-logP(O |λ)|< ε,則說明P(O |λˉ)收斂,其 λˉ即為最優(yōu)模型參數(shù)。
本文結(jié)合Leap Motion控制器和HMM對(duì)動(dòng)態(tài)手勢進(jìn)行識(shí)別[8]。該手勢識(shí)別過程實(shí)現(xiàn)了動(dòng)態(tài)手勢數(shù)據(jù)的錄制,以及對(duì)錄制好的手勢序列進(jìn)行學(xué)習(xí),然后進(jìn)行分類識(shí)別[9]。動(dòng)態(tài)手勢識(shí)別的處理流程如圖1所示。
圖1 動(dòng)態(tài)手勢識(shí)別流程圖
手勢錄制界面Gestures Visualizer由以下幾部分組成(見圖2)。
1)按空格鍵開啟或是關(guān)閉錄制;
2)彈出錄制界面后,可以選擇保存文件的路徑;
3)錄制的過程中,手勢也將相應(yīng)的可視化在界面里;
4)選擇按鈕進(jìn)入可視化模式。
實(shí)驗(yàn)中利用Gestures Visualizer錄制動(dòng)態(tài)手勢數(shù)據(jù),并將其保存為。lmr文件格式,為后續(xù)的識(shí)別過程提供數(shù)據(jù)。本文選用了6個(gè)動(dòng)態(tài)手勢。對(duì)于每一種手勢,我們記錄了120個(gè)樣本(每個(gè)實(shí)驗(yàn)者記錄30個(gè)樣本),這些數(shù)據(jù)記錄了手勢在不同時(shí)間和不同位置上的坐標(biāo)信息。實(shí)驗(yàn)中所選的動(dòng)態(tài)手勢有“Count the number 1、2、3”、“open the door”、“circle”、“scissors”、“gun”和“moving the object”。
圖2 手勢數(shù)據(jù)錄制界面Gestures Visualizer
1)給定觀測序列即輸入手勢軌跡的特征向量,不斷更新估算出新的模型參數(shù)(ˉ ,ˉ,),直至|logP(Oˉ)-logP(O |λ)|< ε,則說明 P(Oλˉ)收斂 ,λˉ即為最優(yōu)模型參數(shù)。模型在訓(xùn)練時(shí)使用Baum-Welch算法。通過訓(xùn)練可以得到多個(gè)HMM模型,根據(jù)已知的模型參數(shù),輸入樣本的觀察序列,可求出樣本在對(duì)應(yīng)的模型中出現(xiàn)的概率,這里的觀察序列即為手勢特征向量。手勢建模[14]的處理過程如圖3所示。
2)手勢識(shí)別過程主要是對(duì)所建立的手勢模型進(jìn)行評(píng)估。通過在給定輸入手勢特征向量條件下,計(jì)算每個(gè)HMM的輸出概率,找出輸出概率值最大
實(shí)驗(yàn)使用上述6種手勢,每種手勢有120個(gè)樣本,由4個(gè)人進(jìn)行錄制,每人每種手勢錄制30個(gè),共720個(gè)樣本,這些樣本中的66.7%被劃分為訓(xùn)練集,剩余的240個(gè)記錄數(shù)據(jù)作為測試集,該數(shù)據(jù)集稱為dynamic-6數(shù)據(jù)集。每種手勢的訓(xùn)練集被用來單獨(dú)訓(xùn)練相應(yīng)的HMM模型[10]。每次訓(xùn)練過程執(zhí)行10次,最后使用交叉驗(yàn)證的方法使模型達(dá)到一個(gè)好的識(shí)別率[11]。定義學(xué)習(xí)速率μ為0.1,HMM模型的狀態(tài)數(shù)設(shè)置為10。
利用Leap Motion控制器采集的數(shù)據(jù)信息包括手指在三維空間里的坐標(biāo)信息以及速度等信息[12],在使用采集到的手勢進(jìn)行手勢建模前,需要對(duì)采集到的手勢數(shù)據(jù)信息進(jìn)行預(yù)處理,然后使用k-means算法[13]將給定的觀察序列分成不同的簇。
的模型,即已知觀察序列的最優(yōu)匹配模型。通常系統(tǒng)中每一種手勢類別都對(duì)應(yīng)著一個(gè)HMM,需利用已知的觀察序列對(duì)每個(gè)模型進(jìn)行評(píng)估。其所求解的概率值最大的HMM就是和已知觀察序列的最優(yōu)匹配模型。該過程采用Forward-Backward算法進(jìn)行求解的,動(dòng)態(tài)手勢的識(shí)別過程如圖4所示。
圖3 手勢建模過程
圖4 手勢識(shí)別過程
為了評(píng)估所提出的方法對(duì)動(dòng)態(tài)手勢的識(shí)別質(zhì)量,可通過以下實(shí)驗(yàn)選取HMM的最優(yōu)參數(shù)值。
實(shí)驗(yàn)首先是要找到一個(gè)用于描述手勢的特征集,它包含有動(dòng)態(tài)手勢相關(guān)的數(shù)據(jù)信息。實(shí)驗(yàn)中的數(shù)據(jù)集選用上述所介紹的dynamic-6數(shù)據(jù)集進(jìn)行評(píng)估。
1)第一個(gè)特征集(feature set 1)包含的信息主要是關(guān)于手的運(yùn)動(dòng)速度的信息,由以下幾個(gè)特征組成:
(1)在第i個(gè)位置時(shí)手指的數(shù)量;
(2)在第(i-10)個(gè)位置時(shí)手指的數(shù)量;
(3)在某一個(gè)位置時(shí)X軸上的位移;
(4)在某一個(gè)位置時(shí)Y軸上的位移;
(5)在某一個(gè)位置時(shí)Z軸上的位移。
feature set 1中所獲取的特征信息是參照Leap Motion控制器的坐標(biāo)系統(tǒng),但是執(zhí)行手勢時(shí)相對(duì)于Leap Motion控制器的角度不同,會(huì)使得特征集信息發(fā)生變化,甚至?xí)a(chǎn)生錯(cuò)誤的結(jié)果,因此,將Leap Motion控制器坐標(biāo)系統(tǒng)換成本地坐標(biāo)系統(tǒng)。并且在第二個(gè)特征集(feature set 2)中增加了計(jì)算手的位移大小和運(yùn)動(dòng)的方向信息。feature set 2共增加了以下三個(gè)特征信息:
(1)手的位移值;
(2)歸一化位移矢量和手掌法向量在第(i-10)位置時(shí)的點(diǎn)積;
(3)歸一化位移矢量和手掌方向向量第(i-10)位置時(shí)的點(diǎn)積。
2)觀察數(shù)據(jù)庫中的手勢樣本可以看出,有的樣本僅僅是手指的運(yùn)動(dòng)產(chǎn)生了位移,而手并未運(yùn)動(dòng),而在feature set 2中沒有考慮這些信息。因此,在第三個(gè)特征集(feature set 3)中我們?cè)黾恿擞?jì)算手指的位移大小,考慮到減小特征集的大小,這里只計(jì)算位移的幅度大小,同時(shí),鑒于Leap Motion控制器對(duì)手指編號(hào)的不穩(wěn)定性,也需要對(duì)手指進(jìn)行排序。故feature set 3中增加的特征信息如下:
(1)4個(gè)最大的手指的位移幅度值。
3)通過feature set 3的實(shí)驗(yàn)結(jié)果發(fā)現(xiàn),增加手指的位移信息會(huì)降低識(shí)別率,因此,我們決定剔除手指的位移信息這一特征。在第四個(gè)特征集(feature set 4)中我們?cè)黾恿遂o態(tài)手勢識(shí)別的特征信息[15],具體如下:
(1)在第i個(gè)位置時(shí),所有組合中手指指尖之間的4個(gè)最大的歐氏距離;
(2)在第i個(gè)位置時(shí),所有組合中手指向量之間的4個(gè)最大的絕對(duì)角度;
(3)在第i個(gè)位置時(shí),手指指尖和手掌之間的4個(gè)最大的歐氏距離;
(4)在第i個(gè)位置時(shí),手指向量和手掌法向量之間的4個(gè)最大的絕對(duì)角度。
由表1的實(shí)驗(yàn)結(jié)果可知,增加靜態(tài)信息能夠提高識(shí)別率,因此,選擇保留靜態(tài)信息特征。第五個(gè)特征集(feature set 5)就是由feature set 3的(1)和(2)組成,但是得到的結(jié)果相比之前的實(shí)驗(yàn)結(jié)果沒有取得顯著的提高。實(shí)驗(yàn)所得到的結(jié)果如表1所示。
表1 所有特征集上的實(shí)驗(yàn)結(jié)果
由表1可以看出,取得最好效果的是feature set 4,這說明在動(dòng)態(tài)手勢特征中增加靜態(tài)信息特征利于對(duì)動(dòng)態(tài)手勢進(jìn)行分類,因此實(shí)驗(yàn)選用feature set 4。
通過實(shí)驗(yàn)測試觀察序列的數(shù)目對(duì)總識(shí)別率的影響,并確定觀察序列的數(shù)目。實(shí)驗(yàn)中使用feature set 4,學(xué)習(xí)速率設(shè)置為μ=0.05。
表2 不同觀察序列數(shù)目所得到的實(shí)驗(yàn)結(jié)果
實(shí)驗(yàn)結(jié)果如表2所示,當(dāng)觀察序列數(shù)目為k=6時(shí),識(shí)別率相比于之前取得了較好的結(jié)果。使用交叉驗(yàn)證時(shí)識(shí)別率為79.6%,而使用整個(gè)數(shù)據(jù)集時(shí)的識(shí)別率為77.6%。
實(shí)驗(yàn)中,選擇一個(gè)穩(wěn)定的學(xué)習(xí)速率在整個(gè)訓(xùn)練過程可以最小化參數(shù)的數(shù)目。實(shí)驗(yàn)中使用feature set 4,觀察序列數(shù)目為k=6,分別選取學(xué)習(xí)速率為0.01、0.05、0.1和0.2進(jìn)行測試。實(shí)驗(yàn)結(jié)果如表3所示,學(xué)習(xí)速率的值在μ=0.05時(shí)取得最佳識(shí)別效果。
表3 不同的學(xué)習(xí)速率所得到的實(shí)驗(yàn)結(jié)果
上面的實(shí)驗(yàn)都為假定HMM的狀態(tài)數(shù)為10,所以實(shí)驗(yàn)最后測試HMM的狀態(tài)數(shù)對(duì)識(shí)別結(jié)果的影響,選取5,10,20,30這四個(gè)值分別進(jìn)行實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果如表4所示,當(dāng)HMM的狀態(tài)數(shù)為5時(shí),HMM模型太簡單而導(dǎo)致識(shí)別率較低。而當(dāng)狀態(tài)數(shù)高于10時(shí),識(shí)別率降低,故HMM的最佳狀態(tài)數(shù)選10最為合適。
表4 不同HMM狀態(tài)數(shù)所得到的實(shí)驗(yàn)結(jié)果
本文對(duì)動(dòng)態(tài)手勢識(shí)別方法問題進(jìn)行了研究,通過Leap Motion控制器開發(fā)Gestures Visualizer系統(tǒng)錄制實(shí)驗(yàn)數(shù)據(jù),構(gòu)建手勢數(shù)據(jù)庫,引入HMM對(duì)手勢模型進(jìn)行訓(xùn)練和識(shí)別,然后通過實(shí)驗(yàn)選取最優(yōu)的特征集和參數(shù),以提高最終的手勢識(shí)別率。