張玉軍 ,孟曉軍 ,白漫濤
(1.解放軍69079部隊(duì)新疆烏魯木齊830013;2.解放軍69240部隊(duì)新疆烏魯木齊830011)
虛擬現(xiàn)實(shí)(VR)是一種可以創(chuàng)建和體驗(yàn)虛擬世界的計(jì)算機(jī)系統(tǒng),它由計(jì)算機(jī)生成,通過視、聽、觸、嗅覺等作用于用戶,為用戶產(chǎn)生身臨其境的感覺的交互式視景仿真[1]。人機(jī)交互是實(shí)現(xiàn)虛擬現(xiàn)實(shí)系統(tǒng)的關(guān)鍵技術(shù)之一,通過人機(jī)交互,人與虛擬環(huán)境可以建立起雙向感知機(jī)制,增加了虛擬仿真維度,提高用戶的沉浸感。人機(jī)交互應(yīng)該以人為核心,在沒有鍵盤、鼠標(biāo)等傳統(tǒng)交互設(shè)備的情況下,通過語言、姿態(tài)、手勢(shì)等自然表達(dá)方式實(shí)現(xiàn)人與虛擬世界的自然融合。
手勢(shì)交互是目前較為流行的交互方式,通過預(yù)先定義的手勢(shì)模型,可實(shí)現(xiàn)對(duì)虛擬場(chǎng)景的有效控制,如菜單選擇、音視頻播放以及移動(dòng)控制等,其核心任務(wù)是動(dòng)態(tài)手勢(shì)識(shí)別,主要工作有兩項(xiàng):分割與識(shí)別。分割的任務(wù)是獲取手勢(shì)數(shù)據(jù),從一個(gè)連續(xù)的動(dòng)作序列中提取有意義的手勢(shì)動(dòng)作序列,即確定手勢(shì)的起始點(diǎn)和終止點(diǎn),可通過固定閾值(速度、角度等)的方法確定,也可通過閾值模型自動(dòng)分割[2]。識(shí)別的任務(wù)是獲取手勢(shì)標(biāo)識(shí),根據(jù)手勢(shì)動(dòng)作序列數(shù)據(jù),判斷出對(duì)應(yīng)的手勢(shì)標(biāo)識(shí),從而確定是何種手勢(shì)。本文主要討論識(shí)別問題,其難度在于手勢(shì)尺度的多樣性,即對(duì)于同一標(biāo)記手勢(shì),即使是相同人,也存在形狀、時(shí)長(zhǎng)、軌跡等不同,隱馬爾可夫模型(Hidden Markov Model,HMM)具有很強(qiáng)的時(shí)序數(shù)據(jù)建模能力,可有效解決這一難題[3]。
20世紀(jì)60年代左右,L.E.Baum等人在發(fā)表的論文中首次提出了隱馬爾科夫模型(Hidden Markov Model,HMM),它是一種基于統(tǒng)計(jì)的模型,隨后經(jīng)過發(fā)展與改進(jìn),被廣泛運(yùn)用于語音識(shí)別、自然語言處理、生物信息和故障診斷等領(lǐng)域[4]。HMM是一個(gè)雙重隨機(jī)過程,即狀態(tài)間的隨機(jī)轉(zhuǎn)移過程和觀測(cè)的隨機(jī)輸出過程,其中,狀態(tài)轉(zhuǎn)移過程是隱藏的,通過觀測(cè)序列的觀測(cè)值表現(xiàn)。
隱馬爾科夫模型通常由一組包含有5個(gè)基本要素的五元組λ=(S,V,A,B,π )表示,五元組中各要素的定義為[5]:
1)隱狀態(tài)集S={S1,S2,...,SN},N為隱狀態(tài)數(shù)量,不同時(shí)刻的狀態(tài)可以相互轉(zhuǎn)換,在t時(shí)刻HMM的狀態(tài)為qt,qt∈S。
2)觀測(cè)值集V={V1,V2,...,VM},M為可能的觀測(cè)數(shù),在t時(shí)刻狀態(tài)的輸出為ot,ot∈V。O=(o1,o2,...,oT) 為一個(gè)HMM的觀測(cè)序列,其長(zhǎng)度為T。
其中,1≤i,j≤N,且滿足:
其中,1≤j≤N,1≤k≤M,且滿足狀態(tài)Sj所有觀測(cè)值概率相加為1,即:
5)初始狀態(tài)分布 π=(πi),其中 πi表示在起始時(shí)刻模型處于狀態(tài)Si的概率,即:
其中,1≤j≤N
HMM工作時(shí),模型的一般運(yùn)行過程如下:系統(tǒng)根據(jù)初始分布隨機(jī)生成一個(gè)狀態(tài),而后根據(jù)狀態(tài)轉(zhuǎn)移矩陣依次從一個(gè)狀態(tài)轉(zhuǎn)移到另一個(gè)狀態(tài),并且在每個(gè)狀態(tài)輸出觀測(cè)值,通過這種方式,HMM將狀態(tài)序列與觀測(cè)序列構(gòu)成統(tǒng)一系統(tǒng)進(jìn)行分析[6]。
HMM有三類基本問題:評(píng)價(jià)問題、解碼問題和學(xué)習(xí)問題,各問題的經(jīng)典算法可見文獻(xiàn)[7]。對(duì)于手勢(shì)識(shí)別應(yīng)用而言,最關(guān)心的是學(xué)習(xí)問題和解碼問題,即模型的訓(xùn)練和手勢(shì)的識(shí)別,其中:模型訓(xùn)練常用Baum-Welch算法實(shí)現(xiàn),這是一種非監(jiān)督學(xué)習(xí)方法,在給定觀測(cè)序列O和初始化參數(shù)λ后,通過極大似然法調(diào)整參數(shù)獲得最優(yōu)λ*=(A,B,π),使得在該模型下輸出的觀測(cè)序列概率P(O|λ)最大;手勢(shì)識(shí)別常用Viterbi算法預(yù)測(cè),即在最優(yōu)λ*=(A,B,π)和觀測(cè)序列O已知的情況下,通過動(dòng)態(tài)規(guī)劃法計(jì)算最可能的狀態(tài)序列,從而求得手勢(shì)標(biāo)識(shí)。
根據(jù)HMM輸出觀測(cè)值概率密度的連續(xù)性可以把HMM劃分為離散型HMM(DHMM)和連續(xù)型HMM(CHMM)兩種類型[8]。上述由五元組表示的一般型HMM即為DHMM,其隨機(jī)過程為離散的觀測(cè)序列,如果應(yīng)用在手勢(shì)識(shí)別中,建模時(shí)需要把連續(xù)的數(shù)據(jù)進(jìn)行離散化,處理過程中會(huì)丟失部分特征信息,從而影響識(shí)別效果。為此,論文采取連續(xù)型CHMM進(jìn)行手勢(shì)識(shí)別建模。
CHMM建模時(shí),可以用概率密度函數(shù)來描述狀態(tài)輸出的觀測(cè)值。對(duì)于多維特征,可以考慮使用混合高斯概率密度函數(shù),記為CGHMM。CGHMM與普通HMM類似,只是觀測(cè)輸出概率矩陣B由離散形式改為概率密度函數(shù),根據(jù)上述HMM定義,一個(gè)CGHMM由下列參數(shù)組成[9]:
1)模型拓?fù)浣Y(jié)構(gòu)及隱狀態(tài)數(shù)量N,每個(gè)狀態(tài)可能輸出的觀測(cè)值數(shù)量M。
4)觀測(cè)輸出概率矩陣B是一組觀測(cè)概率密度函數(shù),即[10]:
為了將CGHMM更好的應(yīng)用到手勢(shì)識(shí)別中,需要解決評(píng)價(jià)、訓(xùn)練、解碼3個(gè)基本問題,詳見文獻(xiàn)[11]。
使用CGHMM進(jìn)行手勢(shì)識(shí)別,需要確定模型的拓?fù)浣Y(jié)構(gòu)、隱狀態(tài)數(shù)量等參數(shù)設(shè)置問題。
1.3.1 拓?fù)浣Y(jié)構(gòu)選擇
根據(jù)隱狀態(tài)之間的轉(zhuǎn)換連接,HMM具有幾種典型的拓?fù)浣Y(jié)構(gòu),包括全連接型(Fully Connected)遍歷型(Ergodic model)和左右型(Left-Right)。根據(jù)手勢(shì)運(yùn)動(dòng)的特點(diǎn),希望模型可以描述出狀態(tài)轉(zhuǎn)移在時(shí)間上的先后關(guān)系,以便于識(shí)別計(jì)算,為此選擇左右型帶狀拓?fù)浣Y(jié)構(gòu),如圖1所示。模型中的狀態(tài)只能在它本身或下一個(gè)相鄰狀態(tài)間轉(zhuǎn)換,不能返回上一個(gè)狀態(tài)。
圖1 模型拓?fù)鋱D
1.3.2 隱狀態(tài)數(shù)量?jī)?yōu)選
在實(shí)際應(yīng)用中,一般而言,一個(gè)HMM的性能與隱狀態(tài)的數(shù)量呈正比,隱狀態(tài)數(shù)量越多,性能越好,但會(huì)降低識(shí)別速度。為此,要平衡HMM識(shí)別率和識(shí)別速度的矛盾,需要合理選擇隱狀態(tài)數(shù)量。在隱狀態(tài)數(shù)量選擇上,有啟發(fā)式選擇方法,如交叉驗(yàn)證(cross validation);模型選擇方法,主要有AIC準(zhǔn)則(Akaike’s Information Criterion)、BIC 準(zhǔn)則(Bayesian Information Criterion)等方法[12]。文中采用BIC準(zhǔn)則,通過引入模型復(fù)雜度的懲罰項(xiàng),來確定狀態(tài)數(shù)量。
假設(shè)Θ為觀測(cè)序列集,L為觀測(cè)序列個(gè)數(shù),為Θ中所有觀測(cè)的總量,則某一HMM狀態(tài)數(shù)量為k時(shí)的BIC(k)基本形式為[8]:
在 BIC準(zhǔn)則中,最優(yōu)的狀態(tài)數(shù)是k*=argmaxkBIC(k)。在實(shí)際應(yīng)用中,可先根據(jù)經(jīng)驗(yàn),設(shè)定狀態(tài)數(shù)目范圍,而后通過比較獲得最佳數(shù)量,文中手勢(shì)的狀態(tài)數(shù)目范圍選擇2個(gè)至8個(gè)。
手勢(shì)識(shí)別系統(tǒng)在實(shí)際應(yīng)用時(shí)主要有兩種方式,一種是借助于數(shù)據(jù)手套實(shí)現(xiàn),通過手套內(nèi)置傳感器反饋手指各關(guān)節(jié)的狀態(tài),并將數(shù)據(jù)發(fā)送至處理系統(tǒng)進(jìn)行手勢(shì)識(shí)別[13];另一種是基于計(jì)算機(jī)視覺技術(shù),通過光學(xué)攝像頭采集手部圖像,對(duì)圖像進(jìn)行處理后獲得手指及各關(guān)節(jié)信息[14]。單從手勢(shì)識(shí)別而言,基于計(jì)算機(jī)視覺的實(shí)現(xiàn)方式不會(huì)對(duì)用戶產(chǎn)生束縛和干擾,交互更加自然,而且成本低廉,適合于推廣。
目前可用于捕捉手部信息的成熟設(shè)備主要有Kinect和Leap Motion[15],其中Kinect主要用于整個(gè)身體的捕獲,而Leap Motion則完全是針對(duì)手部設(shè)計(jì)的設(shè)備,其低成本和小體積的優(yōu)勢(shì),有利于在手勢(shì)交互系統(tǒng)中的封裝與二次開發(fā)。
Leap Motion傳感器內(nèi)置3個(gè)紅外LED和2個(gè)紅外攝像頭,采用紅外成像技術(shù)從不同角度捕獲傳感器上方錐型體內(nèi)的手部信息,形成三維數(shù)據(jù),有效識(shí)別范圍在25~600 mm之間,識(shí)別信息主要有手部和關(guān)節(jié)的位置、姿態(tài)、速度等參數(shù),識(shí)別精度為0.01 mm,精確、高效的數(shù)據(jù)獲取能力為手勢(shì)識(shí)別研究提供了基礎(chǔ)支持[16]。在使用過程中,用戶將手置于傳感器上方后,Leap Motion會(huì)自動(dòng)捕獲手部信息,并以115 fps的幀速率刷新信息,以供用戶使用。Leap Motion傳感器的工作方式如圖2所示。
圖2 Leap Motion工作示意圖
課題選取手勢(shì)的位置作為特征值,以固定速度閾值的方式分割有效識(shí)別手勢(shì),即確定手勢(shì)的起始點(diǎn)和終止點(diǎn)位置,考慮到手部的抖動(dòng)及拐點(diǎn)的停頓,假設(shè)當(dāng)速度連續(xù)n次大于或小于某一閾值時(shí)[17],手勢(shì)開始或結(jié)束。以手勢(shì)開始為例:假設(shè)計(jì)數(shù)器n初始為 0,如果獲取的手勢(shì)速度vt大于閾值vΘ,則n++;否則n重置為0,重新計(jì)數(shù)。當(dāng)n大于計(jì)數(shù)閾值nΘ,則手勢(shì)開始;否則繼續(xù)計(jì)數(shù)。如圖3所示。手勢(shì)結(jié)束的判定流程與開始類似,改為手勢(shì)速度vt小于閾值vΘ即可。
圖3 手勢(shì)開始判定流程
經(jīng)過測(cè)試分析,手勢(shì)開始判定的速度閾值可設(shè)為200 mm/s,計(jì)數(shù)閾值為2;手勢(shì)結(jié)束判定的速度閾值可設(shè)為100 mm/s,為了防止手勢(shì)在轉(zhuǎn)折、拐點(diǎn)等位置過早終止,終止計(jì)數(shù)閾值設(shè)定為5較為合適。
在具體應(yīng)用中,開發(fā)者可通過LeapSDK對(duì)Leap Motion進(jìn)行二次開發(fā)[18]與集成,目前主要有Orion和V2兩個(gè)系列的開發(fā)工具包。二次開發(fā)的核心是異步調(diào)用Leap.dll服務(wù)以獲取Leap Motion提供的數(shù)據(jù),以實(shí)現(xiàn)各種預(yù)定功能。手勢(shì)識(shí)別系統(tǒng)技術(shù)框架如圖4所示。
圖4 技術(shù)框架
手勢(shì)識(shí)別系統(tǒng)中主要模塊的功能如下:
1)Leap服務(wù)模塊。Leap動(dòng)態(tài)庫通過USB接口獲取Leap Motion傳感器的實(shí)時(shí)跟蹤數(shù)據(jù),并對(duì)原始數(shù)據(jù)進(jìn)行處理后以推送至其它應(yīng)用,可通過Leap Motion設(shè)置面板對(duì)服務(wù)進(jìn)行設(shè)置和狀態(tài)檢測(cè)。
2)手勢(shì)訓(xùn)練模塊。通過Leap服務(wù)采集訓(xùn)練數(shù)據(jù),提取特征向量并進(jìn)行手勢(shì)標(biāo)記,而后進(jìn)行訓(xùn)練與測(cè)試,將訓(xùn)練好的模型存入手勢(shì)識(shí)別模型庫,每種手勢(shì)對(duì)應(yīng)1個(gè)HMM模型。
3)手勢(shì)識(shí)別模塊。應(yīng)用時(shí),通過Leap服務(wù)實(shí)時(shí)接收手勢(shì)數(shù)據(jù),而后通過識(shí)別模型庫中的模型[19]進(jìn)行計(jì)算,輸出識(shí)別結(jié)果。
假設(shè)虛擬場(chǎng)景中有控制手勢(shì)7種,如表1所示。其中圖標(biāo)所示圓點(diǎn)表示手勢(shì)軌跡的起點(diǎn),箭頭為手勢(shì)軌跡的走向。
利用Leap Motion對(duì)這7種手勢(shì)特征數(shù)據(jù)進(jìn)行采集,每種手勢(shì)分別采集50組訓(xùn)練數(shù)據(jù)和20組測(cè)試數(shù)據(jù)。在實(shí)際訓(xùn)練時(shí),為了得到較好的訓(xùn)練效果,需要將數(shù)據(jù)進(jìn)行正則化處理,使得訓(xùn)練好的模型有較強(qiáng)的普適性。
表1 控制手勢(shì)
在上述準(zhǔn)備的基礎(chǔ)上,選取訓(xùn)練數(shù)據(jù)[20],對(duì)模型進(jìn)行訓(xùn)練,首先將隱狀態(tài)數(shù)量從2~8進(jìn)行遍歷,選擇最佳的數(shù)量,結(jié)果如圖5所示。
圖5 隱狀態(tài)數(shù)量與BIC關(guān)系
由圖5可知各HMM模型應(yīng)該設(shè)定的隱狀態(tài)數(shù)量,將表中確定的隱狀態(tài)數(shù)量代入模型中,對(duì)手勢(shì)識(shí)別模型進(jìn)行訓(xùn)練與測(cè)試,其結(jié)果如表2所示。
表2 模型訓(xùn)練結(jié)果
由表2的結(jié)果可知,對(duì)于前4個(gè)簡(jiǎn)單的手勢(shì)識(shí)別率基本可滿足百分百,對(duì)于后3個(gè)較為復(fù)雜的手勢(shì)也可滿足場(chǎng)景控制需要。
基于手勢(shì)的人機(jī)交互方式,可使用戶以較為自然的方式與虛擬環(huán)境進(jìn)行交流,增加了用戶的參與感和沉浸感,有利于提升用戶在虛擬場(chǎng)景中的整體體驗(yàn)效果。文章討論了連續(xù)隱馬爾科夫模型在單個(gè)動(dòng)態(tài)手勢(shì)識(shí)別中的應(yīng)用問題,對(duì)模型的拓?fù)浣Y(jié)構(gòu)和隱狀態(tài)數(shù)量的設(shè)置進(jìn)行了分析,最后基于Leap Motion傳感器設(shè)計(jì)了手勢(shì)識(shí)別系統(tǒng)對(duì)模型進(jìn)行仿真分析,結(jié)果表明模型基本可滿足單個(gè)手勢(shì)的識(shí)別要求,下一步,將深入研究自適應(yīng)手勢(shì)分割和連續(xù)動(dòng)態(tài)手勢(shì)識(shí)別等問題。