熊鵬文 熊昆 張宇 余斯吉
1 南昌大學 信息工程學院,南昌,330031
隨著社會的發展,傳統的硬件輸入設備已經無法滿足人們對于人機交互的需要.手勢識別作為人機交互的有效手段,成為當前研究的熱點話題[1-2].手勢識別的應用非常廣泛,從手語識別到手勢操控再到虛擬現實,它給人們提供了一種十分有效而且便利的人機交互方法.手勢識別分為靜態手勢識別和動態手勢識別.靜態手勢識別是指識別靜止的手勢圖像,不具備時序性;動態手勢由連續的手勢序列組成,動態手勢識別時需要克服其時空可變的特點.早期,基于視覺的動態手勢識別方法是使用攝像頭實現的[3-5].這些方法實現簡單,但是容易受到光照等外界環境的影響,穩定性較差.近年來,各種低成本深度傳感設備的發展給手勢識別提供了新的機會.Tiwari 等[6]使用Kinect深度相機獲取從0到9的人體深度圖像,對手部輪廓進行離散余弦變換(DCT)處理得到符號數據集,再利用神經網絡進行分類并識別,平均準確率達到83.5%.Sun等[7]介紹了基于Kinect和sEMG信號的手勢識別方法.針對汽車內駕駛員的手勢識別,Molchanov等[8]提出一種基于近程雷達、彩色攝像機和深度攝像機的手勢識別系統,該系統對于不同光照情況下的手勢識別都有較好的魯棒性.Marin等[9]提出聯合利用深度相機和Leap Motion傳感器進行手勢識別,兩者相結合獲取的最佳準確率為96.5%.Hakim等[10]收集深度攝像頭和RGB攝像頭的組合數據,實現了高精度的手勢識別.
為了充分利用深度傳感器獲取的三維骨骼信息,本文提出了一種基于三維骨骼信息的動態手勢識別方法.該方法先使用動態手勢關鍵幀提取算法,從不同長度的動態手勢中提取手勢的關鍵部分;然后利用一組動態手勢特征序列來有效表示動態手勢的運動特征;最后通過提出的自適應融合算法用于融合多分類器的分類結果,避免了單獨分類器效果的差異性,獲取最優分類效果.
基于三維骨骼信息的動態手勢識別方法框架如圖1所示,主要步驟包括數據預處理、特征提取和多分類器融合識別.該動態手勢識別方法是基于三維骨骼信息的,輸入為動態手勢的三維關節坐標值.數據預處理包括動態手勢的無效幀刪除、手勢關節長度的統一化和動態手勢關鍵幀提取等步驟,目的是使輸入的動態手勢數據更加標準

圖1 動態手勢識別方法框架Fig.1 Framework of dynamic gesture recognition
化;特征提取是對預處理的動態手勢數據進行空間特征和局部特征提取,減少冗余信息進而提高分類效果;多分類器融合識別是采用多個分類器對手勢進行分類的方法減小單個分類器分類存在的偏差,并使用自適應融合算法對多個分類器分類結果進行自適應加權融合,得到最優的手勢識別效果.
動態手勢具有復雜的時空可變性[11],同一用戶和不同用戶做同樣的手勢都存在不同的范圍、幅度和速度的差異.另外,不同用戶的手部大小與關節之間的長度也存在差異.為了減少手勢無效幀對動態手勢識別造成的影響,必須進行無效幀刪除和關節長度統一化.
無效幀刪除的關鍵在于動態手勢序列起始幀與結束幀的標記,本文所使用的動態手勢數據集已經對每個手勢序列的起始幀與結束幀進行了有效標記,所以可以直接進行無效幀刪除.針對手勢骨骼坐標的個體差異性,需要對原始數據進行統一化處理.進行關節長度統一化可以有效提升動態手勢識別準確率和識別方法泛化能力.本文采用Z-score方法進行統一化處理,將坐標轉換到同一量級以消除不同個體之間的差異性.即
(1)
其中μ表示總體數據的平均值,δ表示總體數據的標準差.
動態手勢的時空可變性使得動態手勢時間序列存在較大的差異性,手勢序列的長度長短不一.經過無效幀刪除之后,本文使用的動態手勢數據集手勢序列長度最小為7幀,最大為149幀.手勢序列長度差異較大,仍然存在冗余信息.因此,本文提出了一種動態手勢關鍵幀提取算法,對動態手勢序列進行處理并提取指定數量的關鍵幀.具體描述如算法1所示.
本文使用的動態手勢數據集中的三維骨骼信息包含了手掌22個關節的坐標數據,如圖2所示.利用這些坐標數據可以直接得到或者計算出動態手勢的掌心位置、手指彎曲、手指間距離和手指間角度等局部特征,也可以計算得到手掌運動速度、手掌關節旋轉等全局特征.

算法1.動態手勢關鍵幀提取算法輸入:數據集T= (x11,y11,z11),(x12,y12,z12),…,(x122,y122,z122) ,(x21,y21,z21),(x22,y22,z22),…,(x222,y222,z222) ,…, (xn1,yn1,zn1),(xn2,yn2,zn2),…,(xn22,yn22,zn22) 和提取的關鍵幀數量m.1)初始化提取的每幀信息間距tstep=n/m.2)對22個關節坐標分別計算(j=1,2,…,22):①初始化信息間距t=0.②計算關鍵幀數據,s=1,2,…,m-1:a.信息間距t的整數部分和小數部分分別表示為ti和tr;b.計算平均變化的骨骼關節信息;(xsj,ysj,zsj)=(xtij,ytij,ztij)+(xti+1j,yti+1j,zti+1j)-(xtij,ytij,ztij) ×tr;c.更新信息間距t=t+tstep.③加入手勢結束幀(xmj,ymj,zmj)=(xnj,ynj,znj).輸出:m幀T'= (x11,y11,z11),(x12,y12,z12),…,(x122,y122,z122) ,(x21,y21,z21),(x22,y22,z22),…,(x222,y222,z222) ,…, (xm1,ym1,zm1),(xm2,ym2,zm2),…,(xm22,ym22,zm22) .

圖2 手部骨骼關節Fig.2 The joint diagram of hand skeleton

手掌平移的方向由手勢相鄰兩幀之間手腕位置坐標連成的方向向量來確定.為了簡化平移方向的表示,本文利用8個標準向量將平面空間平均分為8個方向,8個標準向量分別為[1,0,0]、[1,1,0]、[0,1,0]、[-1,1,0]、[-1,0,0]、[-1,-1,0]、[0,-1,0]、[1,-1,0],對應的8個方向分別用1~8的數字表示.分別計算平移方向向量與8個標準向量的夾角大小,夾角最小的標準向量方向表示為平移方向.即
(2)
其中:T表示平移方向向量;Ei表示標準向量,i=1,2,…,8;V表示平移方向.
手掌拇指與食指夾角角度可以通過計算拇指方向向量和食指方向向量得到,拇指方向向量由拇指關節3和5連接表示,食指方向向量由食指關節7和9連接表示.即
(3)
原始骨骼信息經過數據預處理和特征提取以后輸入多個基本分類器進行分類,再利用自適應融合算法對多個分類結果進行加權融合,得到最優分類結果.利用多個分類器進行分類可以充分利用不同特點的基本分類器,不僅可以避免單個分類器的偏差性問題,還可以提高分類算法的泛化能力,提高手勢識別準確率.基本分類器選取原則是選取不同分類原理的分類器,以便更好地提高融合效果,增加手勢分類泛化能力.本文選擇的3個基本分類器分別為支持向量機(Support Vector Machine,SVM)、樸素貝葉斯(Naive Bayes,NB)和多層感知器(Multi-Layer Perception,MLP).
傳統的融合算法采用人工設定多分類器的權重系數進行加權融合,容易受到經驗的影響,降低分類效果.因此,本文提出一種自適應融合算法實現多分類器融合,可以根據不同分類器分類結果自動更新融合權重,有效減少了人為因素的干擾,獲取最優識別結果,結構如圖3所示.自適應融合算法的具體描述見算法2.

圖3 自適應融合算法結構Fig.3 Structure of adaptive fusion algorithm
本文實驗運行環境為Intel(R) Core(TM) i5-6300HQ CPU @ 2.3GHz,運行內存8 GB,操作系統為Windows10(64位),主要識別模型由Python語言編寫,使用的開發軟件為PyCharm2019.本文采用的實驗數據集為DHG-14/28動態手勢數據集,該數據集共有抓握、按等14種手勢類別,包括Fine型和Coarse型兩大類.每種手勢類別又可以根據執行方式細分為兩類:使用一根手指和整只手.數據集中每種動態手勢都由20位參與者按照上述兩種方式執行5次,總共包括2 800個手勢序列.
進行動態手勢關鍵幀提取之前必須確定關鍵幀幀數,不同的關鍵幀數對于動態手勢識別效果有不同的影響.因此,使用不同的關鍵幀數n進行實驗對比,選擇識別準確率最高的幀數進行進一步分類.如圖4所示,在不同關鍵幀下不同種類手勢的識別準確率出現了明顯變化.實驗結果表明,當關鍵幀數不斷增加,識別準確率呈現下降趨勢.當n=10時,對于數據集中28種手勢分類準確率最高達到81.57%.

算法2.自適應融合算法輸入:3個類別概率向量P1,P2,P3,分別代表3個基本分類器分類預測的類別概率向量.1)建立3個概率矩陣E1,E2,E3,分別代表3個基本分類器的分類預測概率矩陣;矩陣大小為M×N,M代表分類的動態手勢樣本總數,N代表動態手勢類別總數.E1=a1,1…a1,N??aM,1…aM,N, E2=b1,1…b1,N??bM,1…bM,N, E3=c1,1…c1,N??cM,1…cM,N.2)利用概率矩陣計算得出各分類器的類別權重向量w1,w2,w3:w1=w11,w12,…,w1N ,w2=w21,w22,…,w2N ,w3=w31,w32,…,w3N ,其中w1j,w2j,w3j分別代表3個分類器在類別j的類別權重,類別權重由下式可得:w1j=∑Mi=1∑Nk=1ai,k/(MN)∑Mi=1ai,j/M, w2j=∑Mi=1∑Nk=1bi,k/(MN)∑Mi=1bi,j/M, w2j=∑Mi=1∑Nk=1ci,k/(MN)∑Mi=1ci,j/M.3)計算標準化類別權重向量W1,W2,W3,即Wi=wiw1+w2+w3,i=1,2,3,其中向量之間的除法代表向量對于元素的除法.4)計算融合概率向量P,即P=W1×S1×P1+W2×S2×P2+W3×S3×P3,其中S1,S2,S3分別代表3個基本分類器的動態手勢樣本分類準確率,向量之間的乘法代表向量對于元素相乘.輸出:最優分類結果F,即融合概率向量P中概率最大值對應的動態手勢類別.

圖4 14/28種不同手勢在n個關鍵幀時的識別準確率Fig.4 Recognition accuracy of 14 (a) and 28 (b) gestures at n keyframes
因此,根據準確率的變化,可以確定本文中關鍵幀提取幀數選取為10幀.
為了驗證多分類融合識別方法可以有效減少單個分類器偏差性和增強手勢識別泛化能力,本文在相同條件下對比了單個分類器與多分類器融合之間手勢識別效果.
由圖5可以看出,單分類器中SVM分類器效果優于MLP分類器和Bayes分類器,主要原因在于SVM是一種基于統計理論的分類方法,對于選取的各類手勢特征數據有更好的分割效果.多分類器融合分類準確率普遍高于單分類器,說明多分類器融合分類可以減少偏差性,從而提高分類效果.

圖5 單分類器與多分類器融合識別效果對比Fig.5 Comparison of 14 (a) and 28 (b) gestures recognition accuracy between single classifier and multi-classifier fusion
為了驗證本文提出的動態手勢識別方法的有效性,將本文的方法與其他手工提取特征的方法進行了比較,得出的實驗結果如表1所示.由表1可以看出,本文方法與文獻[11]同樣基于骨骼信息進行手勢識別,但是分類性能平均增加5.19個百分點.實驗結果表明,本文方法相比傳統手工特征方法在Fine、Coarse和所有手勢方面都實現了更高的識別準確率,其中14種手勢識別準確率達到85.91%,28種手勢識別準確率達到81.57%.

表1 實驗結果比較
為了進一步說明本文提出的方法的性能,圖6中顯示了28種手勢分類結果混淆矩陣.在矩陣當中,x軸代表分類結果,而y軸代表真實結果.序號1到28分別代表使用一根手指和整只手進行14種手勢的28種結果,其中1和2分別代表使用一根手指和整只手進行的抓握動作,其他序號類似.由圖6可以看出,序號1和7、2和8之間混淆最為嚴重,有27%的手勢1被分類為手勢7,33%的手勢2被分類為手勢8,在文獻[12-14]中也存在類似結果,這說明抓握手勢和捏手勢運動特征較為相似導致難以分類.另外,文獻[12-13]存在將向上滑動手勢與展開手勢混淆的現象,表明其對于手部展開的局部特征提取存在缺失.本文提出了手掌手指運動和拇指與食指夾角角度等特征,可以有效表示手部的局部運動.同時,由圖6可以看出,本文提出的方法對于同一種手勢不同執行方式之間的分類誤差較小,這表明局部特征的表示可以避免一根手指和整只手兩種執行方式之間的混淆.對于其他手勢,結果顯示沒有較為嚴重的混淆現象,最終驗證了本文所提出動態手勢運動特征以及多分類器融合分類的有效性.

圖6 28種手勢分類混淆矩陣Fig.6 Confusion matrices of 28 gesture classification
本文提出了一種基于三維骨骼信息的動態手勢識別方法,該方法包含動態手勢關鍵幀提取和多分類器自適應融合算法.動態手勢關鍵幀提取可以有效提取出動態手勢的關鍵部分,避免了動態手勢信息的冗余.多分類器自適應融合算法可以充分利用多個基本分類器的信息,減少個體差異性,提高分類方法的泛化能力.實驗結果表明,本文方法比現有的方法具有更好的性能,驗證了本文所提出的動態手勢識別方法的有效性.