王 巍,張慧靜,任相臻
(1.河北工程大學(xué) 信息與電氣工程學(xué)院,河北 邯鄲 056038;2.江南大學(xué) 物聯(lián)網(wǎng)工程學(xué)院 物聯(lián)網(wǎng)技術(shù)應(yīng)用教育部工程中心,江蘇 無(wú)錫 214122)
根據(jù)手語(yǔ)輸入介質(zhì)的不同,手語(yǔ)識(shí)別系統(tǒng)大致分為兩種:基于數(shù)據(jù)手套的手語(yǔ)識(shí)別和基于視覺(jué)的手語(yǔ)識(shí)別。前者是通過(guò)數(shù)據(jù)手套這一可穿戴式傳感器來(lái)捕獲手勢(shì)原始數(shù)據(jù),然后對(duì)這些數(shù)據(jù)進(jìn)行分析處理來(lái)識(shí)別出用戶的手部姿態(tài)[1],后者是基于計(jì)算機(jī)視覺(jué)通過(guò)攝像頭捕獲手勢(shì)圖像數(shù)據(jù),然后運(yùn)用各種圖像處理技術(shù)進(jìn)行分析,最終達(dá)到手勢(shì)識(shí)別的目標(biāo)[2]。由于數(shù)據(jù)手套需要通過(guò)多組不同類型傳感器識(shí)別確定用戶手指的真實(shí)位置,所以具有其它識(shí)別設(shè)備無(wú)法匹敵的高精度、低誤差的特性。但考慮到數(shù)據(jù)手套佩戴繁瑣、價(jià)格昂貴、普適性低、抗干擾性差等因素,逐漸受到“冷落”。后者則以其自然、直觀、易于學(xué)習(xí)等優(yōu)勢(shì)逐漸成為近幾年手語(yǔ)識(shí)別領(lǐng)域的青睞[3],但識(shí)別精度又差強(qiáng)人意。
微軟Kinect是一款消費(fèi)級(jí)的姿態(tài)傳感器,它能夠允許用戶在非控制條件下進(jìn)行交互[4]。Kinect最初設(shè)計(jì)應(yīng)用于體感游戲[5]。然而,隨著Kinect版本不斷地更新和技術(shù)的提高,也被應(yīng)用到人體骨骼追蹤、人臉識(shí)別和手勢(shì)識(shí)別等領(lǐng)域[6]。將測(cè)試的準(zhǔn)確度和精度作為Kinect的評(píng)估標(biāo)準(zhǔn),Gonzalez-Jorge等[7]將Kinect與Xtion傳感器進(jìn)行了比較,發(fā)現(xiàn)準(zhǔn)確度和精度并不受傳感器類型或是測(cè)試目標(biāo)與設(shè)備間的入射角度的影響,而距離則會(huì)引起測(cè)試準(zhǔn)確度和精度成倍降低。當(dāng)測(cè)試距離超過(guò)7 m后,傳感器已無(wú)法測(cè)量。測(cè)試距離在1 m范圍內(nèi),測(cè)試準(zhǔn)確性是5 mm~15 mm,兩米范圍內(nèi)為5 mm~25 mm,在1 m和2 m范圍內(nèi)測(cè)試精度分別為1 mm~6 mm和4 mm~14 mm。這些結(jié)果證實(shí)Kinect在工程實(shí)際應(yīng)用中的測(cè)試范圍很小,而且測(cè)試準(zhǔn)確度也不太嚴(yán)格。
相比Kinect,另外一款消費(fèi)級(jí)別的姿態(tài)傳感器是Leap Motion Controller(LMC),于2013年中旬上市[8,9]。LMC致力于手勢(shì)識(shí)別,允許用戶通過(guò)手勢(shì)與電腦實(shí)現(xiàn)交互[10]。這款設(shè)備將高精度的手和手指追蹤作為一個(gè)自然交互界面來(lái)改善人機(jī)交互。根據(jù)制造廠商提供的信息,LMC能夠識(shí)別手勢(shì)和手的坐標(biāo)位置,精度可達(dá)0.01 mm。而實(shí)際測(cè)試發(fā)現(xiàn)測(cè)試精度只能達(dá)到0.7 mm[11],并不適用于專業(yè)的目標(biāo)追蹤研究,但它為簡(jiǎn)捷手語(yǔ)識(shí)別提供了一種更加自然、舒適的體驗(yàn)效果。
由于手部運(yùn)動(dòng)有益于兒童的腦部發(fā)育,Cho和Lee[12]利用Leap Motion基于蜜蜂之舞為孩子開(kāi)發(fā)了一款游戲,這款游戲充分利用了LMC的優(yōu)勢(shì),為歷險(xiǎn)游戲提供了一個(gè)新的發(fā)展方向。Chuan CH等[13]提出一種基于Leap Motion的美國(guó)手語(yǔ)方法,他們使用K-臨近算法和支持向量機(jī)對(duì)美國(guó)手語(yǔ)中26個(gè)字母指語(yǔ)進(jìn)行了分類,實(shí)驗(yàn)結(jié)果顯示兩種分類方法的最高平均識(shí)別率分別是72.78%和79.83%,該方法的提出對(duì)聾啞教學(xué)有巨大影響。任磊[14]提出一種基于Leap Motion動(dòng)態(tài)手勢(shì)研究系統(tǒng),主要通過(guò)追蹤目標(biāo)手指的運(yùn)動(dòng)軌跡作為手勢(shì)識(shí)別特征對(duì)中國(guó)手語(yǔ)的26個(gè)字母進(jìn)行識(shí)別的,平均識(shí)別準(zhǔn)確率為96.57%,但是在實(shí)驗(yàn)設(shè)計(jì)過(guò)程中并沒(méi)有使用到Leap Motion檢測(cè)到的高精度手勢(shì)信息。
本文針對(duì)以往基于視覺(jué)手勢(shì)識(shí)別存在的手勢(shì)分割難、環(huán)境干擾大、識(shí)別準(zhǔn)確低等弊端,提出一種基于支持向量機(jī)(support vector machine,SVM)的單手指語(yǔ)識(shí)別方法。之所以選用單手指語(yǔ),是因?yàn)樗?jiǎn)潔、通用,非常適用于有限空間范圍內(nèi)。本文將從Leap Motion提取的特征訓(xùn)練生成手勢(shì)模型,使用SVM對(duì)預(yù)測(cè)手勢(shì)完成分類。實(shí)驗(yàn)結(jié)果表明,本方法具有較高的識(shí)別精度和良好的可拓展性。
本文中指語(yǔ)識(shí)別主要分為數(shù)據(jù)采集、特征提取、數(shù)據(jù)預(yù)處理和分類識(shí)別4部分。首先,數(shù)據(jù)采集部分使用由Leap公司提供的一款價(jià)格低廉、便于攜帶的姿態(tài)傳感器Leap Motion獲取視野內(nèi)手勢(shì)特征。其次,Leap Motion采集得到的手勢(shì)數(shù)據(jù)含有大量的冗余信息不可以直接使用,因此需要對(duì)采集的特征進(jìn)行提取,整理出更具有價(jià)值的手勢(shì)特征以便分類使用。再次,考慮到特征樣本含量大、特征維度高,影響識(shí)別準(zhǔn)確率和運(yùn)行速度,在建模前需要對(duì)特征數(shù)據(jù)進(jìn)行了預(yù)處理。最后,利用網(wǎng)格搜索尋找最優(yōu)參數(shù),訓(xùn)練模型完成分類。指語(yǔ)識(shí)別具體流程如圖1所示。

圖1 指語(yǔ)識(shí)別流程
圖中左側(cè)虛線框內(nèi)為L(zhǎng)eap Motion數(shù)據(jù)采集流程,采集到的手勢(shì)特征以數(shù)據(jù)集的方式封裝在軟件開(kāi)發(fā)工具包(software development kit,SDK)中。每個(gè)手勢(shì)姿態(tài)可以細(xì)化成很多幀,每一幀都有其特定的ID與之區(qū)別開(kāi),對(duì)于視野內(nèi)持續(xù)存在的ID將保持追蹤,提取幀中的手勢(shì)數(shù)據(jù)進(jìn)行存儲(chǔ),對(duì)于丟失ID將結(jié)束本次追蹤,重新采集。Leap Motion最大頻率可達(dá)每秒200幀,保證了手勢(shì)數(shù)據(jù)采集的實(shí)時(shí)性。右側(cè)虛線框內(nèi)是對(duì)特征提取后的手勢(shì)數(shù)據(jù)進(jìn)行預(yù)處理,包含:歸一化和主成分分析(principal component analysis,PCA)降維。
Leap Motion采用的是右手笛卡爾坐標(biāo)系,反饋給用戶的為手勢(shì)三維空間信息,封裝在系統(tǒng)內(nèi)部。從文獻(xiàn)[15]了解到Leap Motion通過(guò)Frame類作為程序入口來(lái)捕獲視野內(nèi)的手與手指的數(shù)據(jù)集合,再通過(guò)調(diào)用Frame類的成員函數(shù)得到視野內(nèi)一只手的三維信息,如圖2所示:圖(a)為視野內(nèi)手的骨骼坐標(biāo)和名稱,圖(c)為視野內(nèi)手的指尖方向和法線方向。表1根據(jù)圖2列出了本文從Leap Motion的應(yīng)用程序接口(application program interface,API)可以獲得的手掌和手指的特征。手掌特征包括:法線、手掌的中心坐標(biāo)和速度。手指特征包括,每根手指的名稱、方向和長(zhǎng)度,遠(yuǎn)端骨節(jié)、中間骨節(jié)、近端骨節(jié)和掌骨的三維坐標(biāo)等。同時(shí),API還提供一些手勢(shì)信息,圖2并沒(méi)有顯示出的浮點(diǎn)型數(shù)據(jù)(本文并沒(méi)有涉及到),例如:抓力、捏力、球心和求半徑。

表1 從Leap Motion API獲取的手勢(shì)特征

圖2 Leap Motion API提供的手勢(shì)特征
本文只針對(duì)靜態(tài)手勢(shì),因此API提供的一些手勢(shì)信息并不完全適用,例如手掌及指尖速度,如果不進(jìn)行特征提取,必將引入大量的冗余信息,影響識(shí)別結(jié)果的準(zhǔn)確性。盡管手和手指的絕對(duì)位置對(duì)指語(yǔ)識(shí)別影響不大,但是可以通過(guò)它們獲取其它有意義的特征,例如計(jì)算指尖距離、向量夾角。因此,本文特征向量將基于API提供的手勢(shì)空間信息計(jì)算得來(lái),使得到手勢(shì)特征具有較強(qiáng)的魯棒性[16]。

(1)
第二個(gè)特征向量f2包含兩兩手指間夾角,可由兩向量間夾角公式求得,令j∈(thumb, index, middle, ring, little),i≠j
=arccos
(2)
則特征向量f2可表示為
(3)
特征向量f3為每個(gè)手指與手掌法線間夾角,夾角大小也可由式(2)求得
(4)
同時(shí),還將視野內(nèi)手指的伸張個(gè)數(shù)作為第4個(gè)特征向量,即
f4=[extendi]
(5)
5根手指根據(jù)extend的0,1狀態(tài)判斷手指伸曲狀態(tài)。加入特征向量f4后,此時(shí)共計(jì)25組特征數(shù)據(jù),將其以.txt格式保存作為本文指語(yǔ)識(shí)別特征,保證了手勢(shì)在實(shí)測(cè)過(guò)程中的旋轉(zhuǎn)不變性和放縮不變性,同時(shí)提高了測(cè)試精度。
本文設(shè)計(jì)9種指語(yǔ)分類,每種指語(yǔ)樣本包含25組特征數(shù)據(jù),樣本數(shù)量是識(shí)別準(zhǔn)確性的重要保障,但是樣本數(shù)量太大會(huì)影響識(shí)別速率,樣本數(shù)量太少又無(wú)法保證識(shí)別準(zhǔn)確性。在保持樣本數(shù)量充足的情況下,可以通過(guò)降低特征矩陣維數(shù)來(lái)提高識(shí)別速率。
在降維前,考慮到提取的特征值數(shù)值之間相差較大,很容易導(dǎo)致大數(shù)值區(qū)間屬性過(guò)分支配小數(shù)值區(qū)間屬性的現(xiàn)象出現(xiàn),造成降維過(guò)程中損失主成分特征,所以需要先對(duì)特征數(shù)據(jù)進(jìn)行歸一化處理。本文將數(shù)據(jù)歸一到[0,1]區(qū)間,采用訓(xùn)練集和測(cè)試集同時(shí)歸一化的方式。圖3為訓(xùn)練集歸一化前后數(shù)據(jù)分布圖,灰度值的深淺變化代表訓(xùn)練集中特征值的范圍變化。

圖3 訓(xùn)練集數(shù)據(jù)歸一化前后對(duì)比
從圖3(a)可以看出,原始數(shù)據(jù)數(shù)值分布跨度較大,部分?jǐn)?shù)據(jù)數(shù)值較小,分布在0-5范圍內(nèi),也有部分?jǐn)?shù)據(jù)數(shù)值較大,分布在100-120范圍內(nèi)。歸一化后圖3(b)中,數(shù)值規(guī)范在[0,1]區(qū)間后,數(shù)據(jù)分布相對(duì)均勻,避免了大數(shù)的變化會(huì)掩蓋掉小數(shù)的變化的現(xiàn)象,同時(shí)也加快了收斂速度。
主成分分析(PCA),是常用的降維方法之一[17]。降維就是將原來(lái)的樣本數(shù)據(jù)投影到一個(gè)新的空間,通過(guò)坐標(biāo)轉(zhuǎn)換得到一個(gè)新的坐標(biāo)系下,在這個(gè)坐標(biāo)系中不再需要原始空間中那么多的變量,只需找到原來(lái)樣本的最大的一個(gè)線性無(wú)關(guān)組的特征值對(duì)應(yīng)的空間的坐標(biāo)即可。降維后的主成分分析如圖4所示。

圖4 PCA降維后主成分分析
圖中橫坐標(biāo)為主成分維數(shù),縱坐標(biāo)為主成分的貢獻(xiàn)率。從圖中可以看出特征維數(shù)從原來(lái)25維降為現(xiàn)在的6維,此時(shí)主成分仍然可以達(dá)到對(duì)原始變量95%的解釋程度,不但大大降低特征矩陣的空間維度,還保留較多的原始數(shù)據(jù)特征。
支持向量機(jī)(SVM),作為一種統(tǒng)計(jì)學(xué)上的分類方法,主要用于解決二分類中涉及到的線性可分與線性不可分的分類問(wèn)題,對(duì)于線性不可分的則需要依靠核函數(shù),核函數(shù)的選擇是SVM的關(guān)鍵,選擇哪種核函數(shù)訓(xùn)練分類器關(guān)乎到分類結(jié)果的精度。由兩類分類器得到多類分類器,完成對(duì)9種指語(yǔ)的分類,本文則采用文獻(xiàn)[18]提到的一對(duì)一的方法,相對(duì)于一對(duì)多的分類方法這種方法用時(shí)更少,效率更高。
本文選用徑向基核函數(shù)(radial basis function,RBF),它不僅具有線性核函數(shù)和Sigmoid核函數(shù)的優(yōu)點(diǎn),而且數(shù)值計(jì)算簡(jiǎn)單,不會(huì)出現(xiàn)溢出之類的計(jì)算問(wèn)題。由SVM原理可知,核函數(shù)參數(shù)g和非負(fù)懲罰因子C對(duì)SVM分類起著至關(guān)重要作用,因此,本文利用網(wǎng)格搜索結(jié)合交叉驗(yàn)證的方法對(duì)RBF核參數(shù)g和懲罰因子C尋優(yōu)。網(wǎng)格參數(shù)選擇結(jié)果如圖5所示。

圖5 網(wǎng)格參數(shù)選擇結(jié)果
圖5中滿足交叉驗(yàn)證的最佳分類準(zhǔn)確率為100%對(duì)應(yīng)的參數(shù)對(duì)(c,g)較多,根據(jù)參數(shù)尋優(yōu)的一般原則,最終選擇了C值最小的那組,對(duì)應(yīng)的最佳參數(shù)C=0.00097656,最佳參數(shù)g=0.00097656。
將利用網(wǎng)格搜索結(jié)合交叉驗(yàn)證的方法得到最佳RBF核參數(shù)g和懲罰因子C代入到svmtrain()中訓(xùn)練model,實(shí)現(xiàn)對(duì)測(cè)試集指語(yǔ)的預(yù)測(cè)分類。
本節(jié)所使用的硬件平臺(tái):DELL筆記本電腦(Inter(R)Core(TM)i5-4460,4.00 GB內(nèi)存)一臺(tái)和Leap Motion設(shè)備一臺(tái)。軟件環(huán)境:Leap_Motion_SDK_Windows_2.3.1驅(qū)動(dòng)結(jié)合Visual Studio 2013編程環(huán)境安裝在Windows8.1系統(tǒng)下使用C和C++語(yǔ)言進(jìn)行特征提取,Matlab2014b結(jié)合Libsvm工具箱完成分類。測(cè)試條件:實(shí)驗(yàn)者伸出右手手勢(shì)保持在Leap Motion視野上方60 mm~300 mm范圍內(nèi),此范圍內(nèi)得到的數(shù)據(jù)值最為理想。
為了驗(yàn)證本文指語(yǔ)識(shí)別方法具有良好的旋轉(zhuǎn)不變性和放縮不變性,本文對(duì)4名實(shí)驗(yàn)者(兩男兩女)進(jìn)行了手勢(shì)數(shù)據(jù)采集,將4名實(shí)驗(yàn)者分為兩組,每組男女各1名。其中一組要求數(shù)據(jù)采集過(guò)程中手勢(shì)姿態(tài)相對(duì)設(shè)備靜止,作為訓(xùn)練集。另一組則進(jìn)行兩輪數(shù)據(jù)采集,第一輪要求采集過(guò)程中手勢(shì)姿態(tài)相對(duì)設(shè)備靜止,作為測(cè)試集1,第二輪要求采集過(guò)程中手勢(shì)可以適當(dāng)旋轉(zhuǎn)或者上下移動(dòng),作為測(cè)試集2。本文涉及到9種指語(yǔ)類型,為了保障測(cè)試樣本充足,要求每人每種指語(yǔ)需要采集200組數(shù)據(jù),從中隨機(jī)抽出100組進(jìn)行實(shí)驗(yàn)。那么,訓(xùn)練集和測(cè)試集的樣本數(shù)量都是1800組,避免了因?yàn)闇y(cè)試集樣本數(shù)量過(guò)少發(fā)生“數(shù)值偏置”。實(shí)驗(yàn)過(guò)程中兩組測(cè)試集共用同一組訓(xùn)練集,使得預(yù)測(cè)結(jié)果對(duì)比性更具說(shuō)服力。實(shí)驗(yàn)結(jié)果如圖6所示。

圖6 測(cè)試集的實(shí)際分類和預(yù)測(cè)分類
圖6中(a)、(b)分別是測(cè)試集1和測(cè)試集2的實(shí)際分類和預(yù)測(cè)分類的實(shí)驗(yàn)結(jié)果。圖中黑色“o”表示實(shí)際測(cè)試集分類,灰色“*”表示預(yù)測(cè)測(cè)試集分類。橫坐標(biāo)是數(shù)據(jù)集組數(shù),每200組是一種指語(yǔ)類型,共計(jì)1800組,縱坐標(biāo)為數(shù)字指語(yǔ)1-9類型標(biāo)識(shí)。從圖(a)中可以看出當(dāng)手勢(shì)姿態(tài)相對(duì)靜止時(shí),9種指語(yǔ)全部預(yù)測(cè)正確,識(shí)別準(zhǔn)確率為100%;當(dāng)手勢(shì)在采集過(guò)程中不斷發(fā)生旋轉(zhuǎn)、上下變換時(shí),圖(b)中僅指語(yǔ)1有一小部分誤測(cè)為指語(yǔ)8,指語(yǔ)7數(shù)據(jù)集中前面一部分誤測(cè)為指語(yǔ)9,其余指語(yǔ)實(shí)際分類與預(yù)測(cè)分類完全相符,9種指語(yǔ)的平均識(shí)別準(zhǔn)確率達(dá)到95.56%,兩次實(shí)驗(yàn)結(jié)果都驗(yàn)證了本文方法的可行性。
本文借助Leap Motion完成了對(duì)9種靜態(tài)單手指語(yǔ)的識(shí)別過(guò)程,相對(duì)于以往的基于視覺(jué)的手語(yǔ)識(shí)別,不僅在識(shí)別準(zhǔn)確度、識(shí)別速度有很大提高,而且選用Leap Motion控制器進(jìn)行實(shí)驗(yàn),對(duì)測(cè)試者的要求更低,通過(guò)手勢(shì)特征的精確選取,使得測(cè)試過(guò)程中手勢(shì)的適當(dāng)旋轉(zhuǎn)、縮放不會(huì)對(duì)識(shí)別結(jié)果造成太大影響,增強(qiáng)了用戶體驗(yàn)效果。但是考慮到Leap Motion設(shè)備識(shí)別范圍只限于60 mm~500 mm,無(wú)法定位人臉及上肢動(dòng)作,使得目前識(shí)別只能局限于手部,同時(shí)手勢(shì)旋轉(zhuǎn)、縮放過(guò)程中的遮擋和細(xì)節(jié)微小差別識(shí)別不明顯等缺陷,致使部分指語(yǔ)9誤識(shí)別為指語(yǔ)7,導(dǎo)致識(shí)別準(zhǔn)確率降低,希望在未來(lái)的新一代設(shè)備上加以解決。
本文方法主要針對(duì)靜態(tài)手語(yǔ)識(shí)別,目前識(shí)別種類較少,但是本文方法易于手勢(shì)庫(kù)的拓展。因此,在以后研究中將會(huì)加入字母指語(yǔ),并嘗試?yán)肔eap Motion追蹤手勢(shì)的運(yùn)動(dòng)軌跡實(shí)現(xiàn)動(dòng)態(tài)指語(yǔ)識(shí)別。