周開店,謝鈞,羅健欣
(解放軍理工大學 指揮信息系統學院,江蘇 南京 210007)
摘要:Leap Motion是最近推出的一款比較新穎的手部信息采集設備,它能夠高精度、高幀率地跟蹤捕獲手部信息,基于此特性,本文闡述了一種基于指尖位置和方向信息進行手勢提取和識別的研究方案。采用Leap Motion傳感器進行手勢的三維空間坐標信息采集,從中提取指尖坐標及方向向量信息,建立手勢識別模型,構建手勢特征數據。對特征數據進行歸一化處理后輸入到支持向量機進行訓練,實現對特定手勢的識別。實驗結果表明,提出的手勢識別方案平均識別精度達到97.33%,具有較高的準確性和魯棒性。
關鍵詞:手勢識別;Leap Motion;指尖位置;方向信息;支持向量
中圖分類號:TP391.4文獻標識碼:ADOI: 10.19358/j.issn.1674-7720.2017.02.016
引用格式:周開店,謝鈞,羅健欣.基于Leap Motion指尖位置的手勢提取和識別技術研究[J].微型機與應用,2017,36(2):48-51.
0引言
近年來,手勢識別在眾多領域(如:人機交互、機器人應用、電腦游戲、手語翻譯等方面)的廣泛應用得到了更多人的關注。當前可用于手勢識別的相對低成本的深度相機有:TOF相機和微軟公司推出的Kinect設備,通過不同的方法獲取手部的深度信息以提高手勢識別的準確性。這些方法提供的手勢識別方案均是從深度信息提取的特征值,通用攝像頭采集人手圖像雖然能夠獲得穩定的圖像序列乃至深度信息,但提取出的人手信息必須經過復雜的圖像處理與識別過程,難以保證快速、準確地估計人手姿態,同時它們無法實現近距離的高精度手勢識別[1]。Leap Motion傳感器的推出給手勢識別領域帶來了一種全新的方式,不同于Kinect對視野范圍內追蹤到物體的整體框架描述,Leap Motion的目標是只針對手部信息的追蹤描述,通過對手部信息包括指尖、關節點、方向向量、法向量等的精細化描述,利用這些信息實現對手勢的特征提取和準確識別[2]。因此,本文提出了一種基于指尖位置和方向信息的手勢提取和識別方案。
1Leap Motion結構分析
Leap Motion是基于計算機視覺技術的三維數據追蹤傳感器設備[3]。Leap Motion的追蹤目標是針對手部信息的描述,能夠直接計算出指尖、關節點等的位置和手掌的方向向量及法向量信息。同時,由于Leap Motion內部封裝了完善的識別過程和方法,Leap Motion不需要開發者使用計算機視覺算法去識別提取手部相關點的數據。相對于Kinect等深度相機,Leap Motion可以以0.01 mm的精度追蹤手部數據,也就是說它可以高精度地追蹤到手部的微小運動。它的硬件結構主要由兩個高幀率攝像頭、LED燈、紅外濾光器以及一片USB3.0芯片組成,如圖1所示。
兩個高幀率高清攝像頭可以模擬雙目視覺實現立體拍攝手勢圖像,捕捉傳感器上方25 mm~600 mm之間呈倒立金字塔范圍內的信息,然后通過三角測量對空間手部位置信息進行三維坐標定位,另外Leap Motion利用濾光器將自然光線過濾成紅外光線,在設備上方形成一個虛擬的平面光線網,當目標對象移動時,就會引起紅外線反射而返回目標對象所在的位置和移動方向。同時可以以高達100 f/s的速度記錄追蹤的手部運動數據,每一幀包含了每只手的關鍵部位的位置信息、掌心移動速度、手掌法向量、手指朝向等信息。最終Leap Motion會通過USB接口將捕捉到的靜態手勢位置、向量信息和動態手勢移動信息傳送到計算機進行后續加工處理及手勢提取和識別。
2手勢特征分析和模型構建
與Kinect等類似的設備相比Leap Motion不提供追蹤到的完整深度圖[4],只返回手部相關點的三維坐標位置信息、方向信息和部分手姿態特征,例如Circle、Swipe、Screen Tap、Key Tap等姿態信息。僅利用這些原始數據還不能夠滿足對手勢識別的需要,因此需要根據Leap Motion追蹤手部信息的特性,進行構建手勢的提取和識別模型。文中構建了用于手勢提取和識別的模型,如圖2所示。
?。?)手掌中心位置C:描述了三維空間中手掌區域的粗略中心位置。
?。?)手掌的方向:基于兩個單位向量,n是垂直于手掌平面指向手掌內側的法向量,h是手掌中心位置C指向手指方向的方向向量,但是這些追蹤計算得到的數據也不是非常精確,取決于手指F1、F2、F3、F4、F5的分布。
?。?)指尖的位置Fi,i=1,…,5,描述了三維空間中探測到的指尖位置。
需要注意的是,盡管Leap Motion能夠以很高的精度追蹤可視區域內的手部三維空間位置,但是它并不確定能夠追蹤到全部的手指,這是由于做出手勢動作的時候會存在手指間的互相遮擋和干擾。針對這個問題,Leap Motion會根據內部構建的手模型預估計干擾部分關鍵點的粗略位置,從而可以得到完整的手部關鍵點信息,用于后面的特征值提取計算。
對于除了角度外的所有特征值需進行歸一化處理,方法是通過除以手掌中心C和中指指尖之間的距離S=Fmiddle-C,以增強針對不同使用者的手掌大小的識別過程魯棒性[5]。比例因子S可以在用戶使用前通過計算得出。
為了實現手勢識別,根據上述手勢追蹤模型定義了如下的手部數據特征計算公式:
式中Di表示指尖位置Fi到手掌心位置坐標C的歐式距離,在這里需要將兩點間的三維距離除以比例因子S做歸一化處理。
Ai=∠(Fpi-C,h),i=1,…,5(2)
式中Ai表示的是三維坐標點Fpi與手掌中心位置C的連線與手掌方向向量h之間的角度,Fpi表示指尖Fi在垂直于手掌法向量n的平面上的投影的位置。
式中Ei表示指尖位置到手掌平面的垂直距離,Fi表示指尖在三維局部坐標系中的位置,Fpi表示指尖Fi在垂直于手掌法向量n的平面上的投影的位置,這里同樣需要除以比例因子S對提取特征值Ei進行歸一化處理。
本文選擇如圖3所示G1、G2、G3、G4、G5、G6六組手勢進行分析,提取相應手勢的相關點的三維坐標信息和方向信息。
關于特征提取方法,在前文中給出了相應的特征值D、A、E,包含從Leap Motion提取到的每一個樣本手勢數據,對于每一組手勢將提取它的特征向量集V=(D, A, E)。
為了進一步進行手勢識別,需要將D、A、E三個特征向量根據對應的手勢庫分為G類,分類算法采用支持向量機[6]。因此G個類別的樣本就需要設計G(G-1)/2個SVM分類器。當對一個未知樣本進行分類時,最后得到最多的類別即為該未知樣本的類別。
3特征訓練
實驗的特征訓練和識別采用支持向量機(SVM)方案。SVM作為一種二分類模型[7],其基本模型定義為特征空間上的間隔最大的線性分類器,其學習策略便是間隔最大化,最終可轉化為一個凸二次規劃問題的求解。支持向量機在解決小樣本、非線性及高維模式識別中有許多特有的優勢。對于手勢的分類,需要將提取到的手勢特征向量V看作N維空間中的一個點,手勢特征進行分類時可以看作尋找該空間中的最優分類平面,最終將不同的手勢特征點V進行分割處理,就得到了最終的手勢分類效果。對于簡單的線性問題,能夠直接在該空間中截取相應的分割平面,然而在解決問題時遇到更多的是非線性問題,文中的手勢特征分類就屬于非線性問題,因此需要通過非線性變換將其轉化為高維空間中的線性問題進行處理。
對于標準的支持向量機[8]優化問題可以歸結為一個二次規劃問題:
將非線性問題轉換為高維空間中的線性問題是通過內積式中K(x,xi)核函數進行的,選擇不同的內積核函數對應著不同的 SVM算法,因此在使用時需要進行核函數及相應參數的選擇。其核函數K(x,xi)的選擇對SVM的實現和分類結果起到重要作用。
核函數的選擇包括兩部分工作:一是核函數類型的選擇,二是確定核函數類型后相關參數的選擇。因此選擇恰當的核函數對本文實驗中的手勢識別精確度有著重要的影響。下面給出SVM的三種常用核函數。
(1)多項式核函數:
K(x,xi)=(γxTxi+r)d(6)
(2)徑向基(RBF)核函數:
K(x,xi)=exp(-γx-xi2)(7)
(3)Sigmoid核函數:
K(x,xi)=tanh(γxTxi+r)(8)
在實驗中將分別采取上述不同的核函數進行手勢識別分類,通過對比選取最佳核函數。在列出的三個核函數中,多項式核函數中的參數d用來設置多項式核函數的最高次項次數,在實驗中采用經驗值3,參數r和Sigmoid核的參數r同樣采用默認經驗值0。
對結果起決定性作用的參數是γ以及懲罰因子C,懲罰因子C是對空間點中離群點的重視程度體現,C值越大則表明對其越重視。
對于上述的參數C、γ選擇擬采用K折交叉驗證和參數尋優遍歷進行對比并選定。K折交叉驗證是將總樣本劃分為K個子集,每次將一個子集作為測試集,剩余K1個子集作為訓練集進行訓練,通過K次的測試,將其平均識別率作為結果。最佳參數為參數尋優后得到最高識別率的參數。得到最佳參數后對三種核函數進行對比實驗就可以選擇出合適的核函數。
具體方法為通過Leap Motion分別采集50組單個手勢,共300組數據,將其分別進行三種核函數的5折交叉驗證和網格參數尋優方法以獲取最佳參數,獲得最佳參數后再次采集120組手勢數據,每個手勢20組,作為新測試數據驗證其識別準確率。不同核函數的網格參數尋優與交叉驗證所得參數 C、γ的關系如圖4、5、6所示。
表1中給出了三種核函數通過交叉驗證和參數尋優后得到最佳參數后,進行新測試數據驗證識別準確率的結果對比。
通過對訓練數據的交叉驗證結果和測試數據的識別分類結果準確率的綜合分析,選用RBF Kernel可以得到較高的識別準確率,同時從圖4可以看出RBF核函數有著較好的穩定性,參數較少且易于運算,應用相較廣泛。根據120組測試數據的準確率基于網格參數尋優遍歷和5折交叉驗證方法得到最佳參數:gamma為0.5,懲罰因子C為32,將此作為模型的最佳參數進行后續的結果驗證實驗。
4結果驗證
前文的特征提取和特征訓練兩部分構建了基本的手勢識別模型,下面將通過實驗對模型進行驗證。通過Leap Motion傳感器針對每個手勢采集50組數據,共300組測試數據。通過構建的模型提取其特征向量并將其輸入SVM進行手勢分類識別,實驗結果如表2所示。
通過對表2中的結果分析,對于輸入的300組手勢數據,構建的識別模型可以正確識別293組,識別準確率為97.33%,具有較高的識別率。另外可以看出手勢G2、G3、G4出現了識別差錯,這是由于實驗中做出的手勢G2、G3、G4動作相近,在Leap Motion追蹤手勢時不可避免地出現手指的瞬時重疊導致信息錯位和誤差,從而相互之間會容易產生誤識別現象。
5結論
文中構建了一種采用Leap Motion傳感器并基于指尖位置和方向信息的手勢提取和識別模型,模型計算量少,效率和精度高,僅需要獲取手部的指尖位置信息和方向信息,即可高效、高精度地識別用戶手勢。實驗結果表明,該方案可以以較高的平均識別率完成特定的手勢識別,但是會存在相近手勢的手指瞬時重疊引起的誤差導致降低手勢識別率現象。
下一步的工作將針對多指瞬時重疊現象導致的誤差情況,研究結合Kinect和Leap Motion的多傳感器手勢追蹤解決方案。Kinect傳感器能夠遠距離地捕獲基于深度圖的手部完整信息[9],而Leap Motion傳感器可以高精度地實現近距離的局部手部信息描述,因此期望提出這種多設備結合方案,可以獲取更好的手勢識別效果。
參考文獻
?。?] Li Yi. Hand gesture recognition using Kinect[C]. Proceedings of 2012 IEEE 3rd International Conference on Software Engineering and Service Science, 2012: 196-199.
?。?] WEICHERT F, BACHMANN D, RUADK B, et al. Analysis of accuracy and robustness of the leap motion controller[J]. Sensors, 2013, 13(5): 6380-6393.
[3] 徐崇斌, 周明全, 沈俊辰,等. 一種基于Leap Motion的直觀體交互技術[J]. 電子與信息學報, 2015, 37(2): 353-359.
?。?] 吳彩芳,謝鈞,周開店. 基于手勢識別的人機交互技術研究[J]. 計算機時代, 2016(2):29-32.
?。?] 潘佳佳, 徐昆. 基于Leap Motion的三維自由手勢操作[J]. 中國科技論文, 2015, 10(2): 207-212.
[6] 張學工. 關于統計學習理論與支持向量機[J]. 自動化學報,2000, 26(1): 3242.
?。?] Wang Jianzhi,Lin Zhiren. LIBSVM: a library for support vector machines[J]. ACM Transactions on Intelligent Systems and Technology, 2011, 2(3): 1-27.
?。?] 閻威武,邵惠鶴. 支持向量機和最小二乘支持向量機的比較及應用研究[J]. 控制與決策, 2003, 18(3):356-360.
[9] WACHS J P, KOLSCH M, STERN H, et al. Visionbased handgesture applications[J]. Communication of the ACM, 2011, 54(2):60-71.