高 宇,何小海,吳曉紅,王正勇,張豫堃
1(四川大學 電子信息學院 圖像信息研究所,成都 610065)
2(成都西圖科技有限公司,成都 610065)
隨著計算機、虛擬現實等各方面技術的顯著進步,人機交互技術在虛擬現實中扮演的角色地位逐漸提升[1].人們不僅對人機交互的實時性、識別率等標準的要求愈發嚴苛,而且提出人機交互方式更簡單、準確率更高和參與性更強的發展需求[2].手勢作為一種變化方式和表達含義都很豐富的肢體語言,自然成為人機交互的一種重點媒介.
手勢識別有動態手勢識別和靜態手勢識別,相較于靜態手勢識別而言,動態手勢識別特點在于跟蹤目標伴隨時間和空間的改變而產生形態和運動軌跡的變化.動態手勢識別一般分為特征數據采集、手勢模型訓練和手勢分類識別3 個步驟[3].其中,手勢模型的訓練和建立是至關重要的一步.選擇不同手勢之間區分度較大的特征參與手勢模型的訓練,才能準確建立出相似手勢的不同手勢模型.張琪祥利用掌心位移、掌心法向量、掌心球半徑和五指伸展程度作為特征訓練HMM 手勢模型[4],但是一些相似手勢的識別率差強人意;Lu W 等人選取相鄰指尖距離、指尖梯度和五指分開度作為特征進行手勢模型訓練[5],然而對相似單指動態手勢的識別不夠理想.針對以上識別率不足的問題,提出在特征數據的提取中不僅提取掌心位移、掌心法向量、掌心球半徑和手指伸展程度,而且加入掌心位移向量角度的提取,并且在進行HMM手勢模型訓練的過程中將拐點判定計數也作為手勢的特征參與訓練,建立更準確的手勢模型,提升手勢識別的準確率.
動態手勢識別中手部會根據時間和空間的改變而產生手勢和運動軌跡的變化.提取用于手勢模型訓練的特征量需要能以高精度追蹤到掌心、關節、指尖等的位置信息和手指手掌的方向向量及法向量信息,得到針對手部特征信息的描述.Leap Motion 作為一種新型傳感器,能夠檢測出手部更細微的動作變化、提取出更詳細的手部信息,動態手勢在Leap Motion 的跟蹤下具有清楚的運動特征.
如圖1所示,Leap Motion 主要由2 個攝像頭和3 個紅外LED 構成,鑒于使用紅外檢測目標手部的特點,不易受外界條件的干擾,能夠采集到超低噪聲的幀圖像便于后續的數據處理[6].Leap Motion 對手部運動的追蹤頻率可達到每秒200 幀,能夠實現精度高達0.01 mm 的追蹤,可追蹤空間呈一個塔尖在設備中心的倒四棱錐型體,范圍大約在設備前方25-600 mm,并且擁有150°的圓形空間視場.Leap Motion 將能夠采集到的數據封裝在每一幀當中,每幀數據均有一個跟蹤數據列表,包含目標手及其組成部分等,也包含識別出的手勢和發生在跟蹤范圍內運動因素的描述[7].本文從幀中提取深度信息,然后利用預處理后的特征數據進行手勢模型的訓練和未知手勢的識別.

圖1 Leap Motion 結構示意圖
Leap Motion 跟蹤目標手得到的幀數據中包含PLAM、HAND 等對象,其中PLAM 對象中包含掌心法向量、手指方向向量和掌心坐標等數據,HAND 對象中包含手指伸展程度等數據.經典手勢識別方法中通過從幀數據中提取或計算的特征有:掌心位移、掌心法向量、掌心球半徑、手勢速度、手指伸展程度、手指分開度和運動方向變化率等.由于一些動作類似手勢的以上特征也非常相似,所以導致識別率差強人意.經過對相似手勢分析和調研,手勢位移向量角度和拐點的判定計數在相似手勢中區分度較大,故本文動態手勢識別方法中添加提取以上兩種特征.其中掌心球半徑、掌心法向量和手指伸展程度均可從Leap Motion 采集到的幀數據中直接得出.而剩余的掌心位移、手勢位移向量角度、手勢速度、拐點判定計數和運動方向變化率則需要通過一定的計算處理之后才能得出.
動態手勢識別方法中提取的經典手勢特征包含掌心位移、手勢速度和運動方向變化率等.
(1) 掌心位移數據的獲取
從一個時刻起,到另一個時刻止,兩個時刻追蹤目標手的掌心坐標之間的歐氏距離即為掌心位移.計算過程如下:

其中,P為掌心位移,(xi,yi,zi) 為掌心在i時刻的空間坐標,(xc,yc,zc)為 掌心在c時刻的空間坐標.
(2) 手勢速度的獲取
速度特征能夠體現出手勢運動的快慢,且在本文中速度特征還作為判定手勢運動開始、結束以及運動拐點的標準之一.因為Leap Motion 的追蹤頻率能夠達到200 幀/秒,所以本文中把每兩幀的幀間速率近似為瞬時速率,手勢在第i幀的速率計算如下:

其中,T為幀間時間差.當手勢速度大于閾值 σ時滿足開始采集手勢的速度條件,小于閾值 σ時則滿足停止手勢采集的速度條件.
(3) 運動方向變化率的獲取
獲取運動方向變化率是為能夠區分出由于拐點造成的速度低于閾值和手勢停止時速度低于閾值這兩種情況,避免發生誤判.運動方向變化率需要從幀數據中提取出掌心的空間坐標(xt,yt,zt),根據如下公式:

可求出x在單位時間t內于y軸上的手勢運動方向θxy,用同等方法也可求出θxz和θzy.
本文方法中,為提升動作類似的手勢識別率,加入新特征拐點的判定計數和手勢位移向量角度的提取,提升相似手勢的區分度,建立更準確的手勢模型.
(1) 拐點的判定及計數的獲取
由于手勢位于拐點處附近時速度是先降低后升高,所以得出當瞬時速率為0 的某一時刻Ti,通過判斷該時間段內手勢序列中前后兩端速率滿足:
式中,τ取0.5,判定該點為手勢運動的拐點位置.
單指手勢的傳統特征掌心位移、掌心法向量等由于手勢的隨機性容易發生局部相似或者整體相似的情況.
但是如圖2所示,它們的拐點存在情況和數目有明確的差別.單指畫叉和單指畫三角形雖然有可能拐點數目相同,但是結合掌心位移等特征也能明確的區分.故在判定出一個拐點后并對拐點計數作加1 操作,以此為特征提升相似手勢的區分度.
(2) 手勢位移向量角度的獲取
通過獲取掌心在手勢運動的開始位置和停止位置的空間坐標(xo,yo,zo) 和(xs,ys,zs),則手勢位移向量計算如下:


圖2 單指手勢指尖軌跡示意圖


如圖3中所示,向上劃和向后劃、向下劃和向前劃分別為兩對相似手勢,每對相似手勢由于手部運動的不規則性均有可能出現掌心位移、掌心球半徑、五指伸展程度、五指分開度和經典特征等相似的情況,造成手勢識別混亂的結果.但是手勢位移向量角度在這些相似手勢中有明顯的差別,經過分析實驗得出結果如表1所示.故添加此特征的提取有助于提升手勢識別率.

圖3 手勢位移向量角度
基于HMM 的動態手勢識別流程如圖4所示,首先用Leap Motion 采集訓練數據集并從中提取出需要的特征數據,然后對提取數據進行預處理,再將處理好的數據用于訓練動態手勢HMM 模型,模型訓練完成后即可對未知手勢進行識別.
隱馬爾科夫模型(HMM) 是被Baum LE 等人在20世紀60年代提出的一種具有馬爾科夫性質的統計模型.一個完整的HMM 由 (π,A,B,S,V)五種參數構成,其中 π表示隱含狀態的初始分布概率,A是隱含狀態轉移矩陣,B則代表觀測狀態發生的概率矩陣,S是隱含狀態集合,V是觀測狀態集合.其中B、V組成的觀測狀態隨機輸出過程和 π 、A、S組成的隱含狀態隨機轉移過程構成HMM 的雙重隨機性[8].HMM 模型的應用中主要需解決的3 類問題有:

圖4 動態手勢識別流程圖
(1) 評價問題:在已知參數λ =(π,A,B,S,V)和觀測狀態序列O的條件下,計算出全部模型的輸出概率P(O|λ).
(2) 解碼問題:在已知參數λ =(π,A,B,S,V)和觀測狀態序列O的條件下,求出與觀測序列O匹配度最高的隱藏狀態序列Q.
(3) 學習問題:觀測狀態序列O已知的條件下,通過反復訓練和迭代得出使P(O|λ)最 大的模型參數 λ.
HMM 模型在時序信號的處理上表現突出,已經廣泛被運用于語音識別等范疇中[9].由于語音序列和動態手勢序列類似程度頗高,因此動態手勢識別領域也愈加頻繁的使用HMM 模型參與研究.基于HMM 的動態手勢識別中需解決的問題主要是學習問題和評價問題,動態手勢識別中通過訓練而建立每一個手勢模型的過程即為解決HMM 中的學習問題的過程,評價問題的解決即通過得到的手勢觀測狀態序列而判斷出該手勢屬于哪一個模型.
本文中解決HMM 學習問題時選擇Baum-Welch算法[10]來求解最優模型參數 λ,λ的求取過程即動態手勢模型的訓練過程.在得到觀測序列即得到特征向量時,通過反復迭代計算并更新模型參數直到滿足式(7) 為止得到最優模型參數,其中和為相鄰兩次迭代的結果.

本文中解決HMM 評價問題選擇前向算法[11],評價問題的處理過程和結果即為對未知動態手勢的識別過程和手勢識別結果.在經過手勢模型的訓練階段,已經得出每個手勢模型的最優模型參數 λ.前向算法從未知手勢觀測序列O中提取特征量,然后計算出特征向量與每個HMM 的匹配概率,選擇匹配概率P(O|λ)最大的手勢模型作為識別結果.
為檢驗出加入新特征后的手勢識別方法的效果,實驗設計單指畫圈、單指畫叉、單指畫三角形三種單指手勢運動,此類手勢為食指向前舒展,其余手指握緊;向左劃、向右劃、向前劃、向后劃、向上劃、向下劃六種手勢運動選自文獻[4],此類手勢運動均為五指伸展,且運動時掌心方向與運動方向相同進行劃動.文獻[4]方法對每種手勢采集的樣本數據包括掌心位移、掌心球半徑、掌心法向量、五指伸展程度;文獻[5]采集的特征數據包括相鄰指尖距離、指尖梯度和五指分開度;而加入新特征后的方法中的樣本數據包括掌心位移、掌心球半徑、掌心法向量、拐點的判定及計數、位移向量角度和運動方向變化率.實驗分別對每種手勢采集特征數據樣本,通過加載同一手勢下特征數據樣本訓練得到9 種HMM 手勢模型,最后通過各個模型對未知樣本的評價來判斷對每個模型的匹配率,選擇與待測樣本具有最高匹配率的模型作為識別結果.
實驗數據的錄制采樣由4 人完成,每個人對每種手勢進行40 組采樣.每組手勢的160 組樣本數據按照3∶1 比例隨機分成120 組數據作為HMM 模型的訓練數據和40 組數據作為HMM 模型的測試數據.以上述方式進行5 次交叉實驗,取識別率的平均值作為最終結果.實驗主要對比本文方法和文獻[4]、文獻[5]的方法,得出實驗結果如表2所示.

表2 HMM 手勢模型識別結果
由表2可以得出,對于參與實驗的9 組手勢,文獻[4]方法中近似的手勢之中有一組識別率較高而剩余的一組或兩組識別率較低.如單指畫圈、單指畫叉和單指畫三角形為近似手勢,單指畫圈的識別率較高而其余兩組的識別率略顯不足.分析可得就文獻[4]的方法而言,單指畫叉和單指畫三角形本身就與單指畫圈整體類似或者局部類似,導致一些單指畫叉和單指畫三角形的手勢被誤判成單指畫圈的手勢.文獻[5]方法在單指近似手勢中表現略比文獻[4]的方法更好,但是其余的相似手勢識別率依舊不夠理想.分析可得文獻[5]主要提取的特征量基本代表手指之間的相對特征,而后6 組實驗手勢手掌姿態均保持高度相似所以導致此類相似手勢識別率較低.在本文方法中加入拐點的判定計數使單指相似手勢能夠區分開,如單指畫圈就沒有拐點,而單指畫叉和單指畫三角形的拐點數均在2 個及以上.同一類型中相似手勢的位移向量角度均有較大的差異,所以加入位移向量角度作為特征量,突出相似手勢的不同點,使識別率提升.從實驗結果中能夠總結出:由于錄制實驗數據時極少的誤差對于本文方法提出的新特征判定的影響大于對文獻[4]和文獻[5]的影響,故一些手勢的識別率略低于文獻[4]、文獻[5]的方法,但差異范圍低于1%且仍舊表現出較高的識別率.而對于文獻[4]、文獻[5]方法中識別率較低的手勢,本文方法識別率均有3%-8%的提升.總體而言,平均識別率由89.48%和89.85%提升至92.30%,且本文方法的一組數據平均訓練時間為0.79 s,相較于文獻[4]和文獻[5]的0.69 s 和0.71 s 并未增加過多,即本文方法在保障工作效率的前提下使識別率提升,可見本文方法的有效性.
Leap Motion 的出現使HMM 模型在基于時序序列的模式識別領域內具有更好的應用前景,本文討論了基于HMM 模型的動態手勢識別的研究現狀,根據對現存且具有代表性的基于HMM 的動態手勢識別方法進行優劣分析,通過在模型訓練的過程中添加拐點的判定計數和位移向量角度這兩個特征,使相似手勢的區分識別率提升,進而提升手勢識別的整體識別率.