嚴雨靈, 陳閔葉, 呂亞輝
(上海工程技術大學 航空運輸學院, 上海 201620)
隨著計算機技術的不斷發(fā)展,三維手勢作為最近興起的人機交互手段,已然受到學界的廣泛關注。三維手勢需要的輸入包含深度的信息,目前主要分為基于數(shù)據(jù)手套的手勢識別方法與基于視覺的手勢識別方法[1]?;跀?shù)據(jù)手套的主要有Wiseglove、5DT Glove、Cybertouch等。該方法可以獲得精確的手部動作,但其設備價格較高且會產(chǎn)生束縛感,影響使用者的沉浸感[2]。麻省理工學院著名科學家Dertouzos指出“未來的技術應該適應人的需求,而不是與之相反”[3],手勢識別技術也應當主動適應客戶的需求,而不是要求用戶做出太多的變化去適應設備。
2010年,微軟推出了Kinect for Windows,能夠捕捉人體形狀、動作,識別和完成面部的跟蹤,首次引起了手勢識別技術的研究熱潮,但其識別精度有限[4]。2013年,Leap Motion 公司發(fā)布了Leap Motion Controller小型體感器設備,能夠捕捉150°范圍視場以及約8平方英尺的交互式空間內(nèi)的多個物體,其針對手部區(qū)域進行識別,感應區(qū)間精確到0.01 mm[5],遠遠超過Kinect的4 mm。本文研究的虛擬維修過程針對手部動作,因此采用Leap motion設備進行數(shù)據(jù)的采集[6]。
本次研究中,實驗過程設計采集5個人的4組動態(tài)手勢,分別為握拳轉(zhuǎn)動、手指張開的轉(zhuǎn)動、抓取以及推壓,用以保證算法的可靠性。Leap Motion采集到的數(shù)據(jù)主要包括掌心數(shù)據(jù)handdirection、handpalmposition(用C表示),手指數(shù)據(jù)fingerposition(用Fi表示,根據(jù)設備設定i=0,1,2,3,4)。
由于每個人的手型各不相同,因此本文采用指尖至掌心的距離作為特征值,并進行歸一化處理以增強適應性和魯棒性。研究擬采用指標簡述如下。
(1)歸一化因子。其數(shù)學公式為:
(1)
(2)距離D。其數(shù)學公式為:
(2)
組合各個特征值,得到特征值向量集V=[D1,D2,D3,D4,D5,F1,F2,F3,F4,F5]。單個手勢將每一幀采集到數(shù)據(jù)的特征向量集合并,得到新的特征向量集進行后續(xù)操作。采集過程如圖1所示。
圖1 動態(tài)手勢識別試驗
1995年,Vapnik利用統(tǒng)計學習理論作為基礎,提出了支持向量機。最初該理論的提出是針對模式識別中一對一的分類問題,在此基礎上發(fā)展成多分類問題[7]。
設樣本集為(Xi,Yi),i=1,…,n,x∈R,y∈{+1,-1}。
對于線性可分情況,樣本集由一個超平面區(qū)分開,把這個超平面記為wx+b=0。而最優(yōu)的超平面要求不但要將兩類數(shù)據(jù)正確地分開,還要使這兩類的間隔達到最大。構造最優(yōu)超平面的問題可以轉(zhuǎn)變?yōu)樵谑?4)的約束下求式(3)的最小值的問題。此時用到的公式為:
(3)
s.t.yi(w·xi+b)≥1,i=1,2,…,N.
(4)
由于一部分樣本點會偏離較遠,導致線性不可分。因此,引入了松弛變量(非負)來允許部分樣本點在一定范圍內(nèi)的偏離。懲罰系數(shù)C用來控制松弛變量大小,從而得到更準確的分類平面[8]。
針對非線性分類問題,SVM將問題轉(zhuǎn)化為高維特征空間的線性問題,從而求取最優(yōu)線性分類平面。由核函數(shù)代替最優(yōu)分類超平面的點積,從而免去了復雜的高維空間運算。常用的核函數(shù)主要有線性核函數(shù)、多項式核函數(shù)、徑向基核函數(shù)等。
本文采用臺灣大學林志仁教授開發(fā)設計的一個快速有效的SVM軟件包進行手勢數(shù)據(jù)的分類識別。其中提供了編譯好的執(zhí)行文件,通過Mex編譯器即可在Matlab平臺中使用,代碼開源,而且也提供了針對具體問題優(yōu)化的空間。
概率神經(jīng)網(wǎng)絡由Specht首先提出,并以徑向基函數(shù)網(wǎng)絡發(fā)展而來,就是一種前饋型神經(jīng)網(wǎng)絡(Probabilistic Neural Networks,PNN)。通過采用多變量Parzen窗估計不同類的概率密度函數(shù)。特點有訓練時間短、結構固定,能產(chǎn)生貝葉斯后驗概率輸出,具有強大的非線性識別能力[9]。
徑向基網(wǎng)絡和競爭神經(jīng)網(wǎng)絡共同組成的概率神經(jīng)網(wǎng)絡總共有3層,分別是:輸入層、徑向基層和競爭層(輸出層)。競爭層的輸出結果就是整個網(wǎng)絡的最終分類結果,輸入的樣本向量的個數(shù)與徑向基層中神經(jīng)元的個數(shù)相同,訓練樣本數(shù)據(jù)的分類數(shù)等于輸出層的神經(jīng)元個數(shù),徑向基層的神經(jīng)元具有閾值。利用輸入向量以及對應的期望類別,構建PNN網(wǎng)絡對輸入向量進行正確分類。數(shù)據(jù)以及相應的類別通過向量設計網(wǎng)絡,再將數(shù)據(jù)回代得到結果。
本文采用支持向量機和概率神經(jīng)網(wǎng)絡兩種算法對動態(tài)手勢進行識別,在Matlab平臺中,采用分類算法進行手勢識別的具體流程如圖2所示。
圖2 手勢識別流程圖
在進行訓練前,須歸一化處理數(shù)據(jù),從而為后續(xù)處理做好準備并保證程序運行時收斂更快。在過程中需用到如下公式:
(5)
其中,Xi表示特征X的某個值;max(x)表示該特征的最大特征值;min(x)表示該特征中的最小特征值。
采用Libsvm和PNN進行分類試驗,兩兩區(qū)分,標簽設為1和2。單個手勢樣本總量為1 000組,按8:2的比例確定訓練集和測試集樣本,即每一種手勢中的800組用作訓練集樣本,200組用作測試集樣本。
本文采取隔50 ms取一次數(shù)據(jù)的形式記錄手勢數(shù)據(jù),再合并成為樣本特征,從而提高數(shù)據(jù)的有效性并使運算量可控。一對一手勢分類結果見表1,一對多手勢分類結果見表2。
表1 一對一手勢識別效果
一對一的實驗結果表明,線性核函數(shù)可達到89.5%的識別率,而多項式核函數(shù)在達到89.0%的優(yōu)良識別率下運行時間最短。同時分析指出,PNN神經(jīng)網(wǎng)絡經(jīng)過高斯參數(shù)的優(yōu)化后最高可達到95.0%的識別率,明顯優(yōu)于支持向量機算法。
表2 一對多手勢識別效果
一對多的實驗結果表明,多分類的識別率和兩類分類相比較低,但總體規(guī)律不變。SVM算法中采用多項式核函數(shù)識別率較高,而PNN神經(jīng)網(wǎng)絡經(jīng)過高斯參數(shù)的優(yōu)化后識別率仍明顯高于支持向量機算法。
為了進一步提高識別效果與降低PNN神經(jīng)網(wǎng)絡的運行時間,采用了主成分分析(PCA)對特征值進行降維操作,旨在排除噪聲數(shù)據(jù)的干擾從而提高準確率。實驗結果表明,SVM算法的準確率有所提高,PNN算法在保證準確率的情況下由于PCA的降維作用使運行時間大幅減少。一對一使用后結果對比如圖3所示。一對多使用后結果對比如圖4所示。
(a)準確率
(b)運行時間
(a)準確率
(b)運行時間
本文基于Leap Motion傳感器采集了不同人的4組三維動態(tài)手勢,采用SVM模型和經(jīng)過優(yōu)化的PNN神經(jīng)網(wǎng)絡模型進行識別。本文得到的研究結論可分述如下:
(1)對于三維動態(tài)手勢,PNN神經(jīng)網(wǎng)絡可以達到更高的準確率。
(2)多類手勢分類的識別率與兩類手勢分類相比較低,但總體規(guī)律不變。
(3)動態(tài)手勢識別前期采用PCA處理數(shù)據(jù)對SVM準確率有所提高,且可以大幅減少PNN的運行時間。
未來的工作可以研究新的分類算法,進一步提高其識別率,并探索在各個領域的應用等。