包瑩瑩, 王華君, 徐平平
(1.無錫太湖學(xué)院 工學(xué)院,江蘇 無錫 214064) (2.東南大學(xué) 信息科學(xué)與工程學(xué)院,江蘇 南京 211189)
?
基于關(guān)鍵幀和姿態(tài)描述語言的實(shí)時(shí)手勢識別方案*
包瑩瑩1*, 王華君1, 徐平平2
(1.無錫太湖學(xué)院 工學(xué)院,江蘇 無錫 214064) (2.東南大學(xué) 信息科學(xué)與工程學(xué)院,江蘇 南京 211189)
針對現(xiàn)有人體動(dòng)作識別方法的準(zhǔn)確性和實(shí)時(shí)性不強(qiáng)等問題,提出一種基于關(guān)鍵幀和姿態(tài)描述語言(PDL)的實(shí)時(shí)手勢識別方案.首先,利用Kinect攝像機(jī)獲取手勢視頻幀,并通過NITE工具獲得骨架關(guān)節(jié)點(diǎn)的三維坐標(biāo).然后,從視頻序列中找出最能代表手勢類型的關(guān)鍵幀.最后,提出一種姿態(tài)描述語言,根據(jù)關(guān)鍵幀中關(guān)節(jié)點(diǎn)的位置和角度信息,通過一系列規(guī)則對手勢進(jìn)行識別.實(shí)驗(yàn)結(jié)果表明,該方法具有較高的識別率和良好的實(shí)時(shí)性.
手勢識別;骨架關(guān)節(jié)點(diǎn);關(guān)鍵幀;姿態(tài)描述語言
隨著人機(jī)交互的迅猛發(fā)展,人體動(dòng)作識別在計(jì)算機(jī)視覺領(lǐng)域得到越來越多的應(yīng)用[1].其中,手勢動(dòng)作定義為手和手臂形成的姿態(tài).人體手勢識別通??煞譃閮深怺2]:基于模板匹配的方法;基于機(jī)器學(xué)習(xí)的方法.模板匹配方法中,將人體手勢序列與模板數(shù)據(jù)進(jìn)行匹配,根據(jù)相似度來識別動(dòng)作.例如[3]提出一種多步線性規(guī)劃和模板匹配的識別方法.然而,由于該方法只考慮局部特征,所以不能識別動(dòng)作幅度較大的動(dòng)作.機(jī)器學(xué)習(xí)方法中,通過提取動(dòng)作特征樣本,然后訓(xùn)練機(jī)器學(xué)習(xí)算法,得到一個(gè)分類器,以此實(shí)現(xiàn)對動(dòng)作的識別[4].常用的方法如[5]提出基于隱馬爾可夫模型(Hidden Markov Model, HMM)的識別方法,其從人體骨架中提取關(guān)節(jié)點(diǎn)特征,使用HMM對手勢動(dòng)作進(jìn)行建模.然而,這種方法的性能過度依賴于訓(xùn)練集質(zhì)量,穩(wěn)定性不高.微軟Kinect深度攝像傳感器[6]為動(dòng)作識別提供了有力工具,其能夠克服光照等外界因素的干擾.基于Kinect傳感圖像和骨骼關(guān)節(jié)點(diǎn)定位技術(shù),可獲得人體運(yùn)動(dòng)的3D數(shù)據(jù).當(dāng)人進(jìn)行不同動(dòng)作時(shí),各關(guān)節(jié)點(diǎn)的位置和關(guān)節(jié)點(diǎn)之間的角度信息也隨之改變.因此,通過追蹤關(guān)節(jié)點(diǎn)的坐標(biāo)和角度信息,通過一定的規(guī)則判斷,能夠直接實(shí)現(xiàn)人體動(dòng)作識別[7].[8]通過計(jì)算關(guān)節(jié)點(diǎn)之間的歐氏距離和角度,來識別手勢動(dòng)作,方法實(shí)現(xiàn)簡單且較為有效.然而,其只使用簡單的閾值判別法,存在較高的誤判率,另外,其只進(jìn)行了簡單的4種手勢動(dòng)作識別,若添加動(dòng)作種類,該閾值判別法的有效性將會降低.
為了提高基于關(guān)節(jié)點(diǎn)信息的手勢識別性能,本文提出一種姿態(tài)描述語言(Posture Description Language, PDL),根據(jù)關(guān)節(jié)點(diǎn)信息,利用定義的規(guī)則對手勢動(dòng)作進(jìn)行直觀的識別分類.本文的創(chuàng)新點(diǎn)在于:(1)提出了一種PDL,根據(jù)肢體關(guān)節(jié)點(diǎn)信息,通過相應(yīng)規(guī)則直觀判斷肢體動(dòng)作,提高識別率和實(shí)時(shí)性.(2)通過堆棧結(jié)構(gòu)存儲手勢視頻.
在本文中,利用微軟Kinect傳感器捕獲和追蹤運(yùn)動(dòng)的人體,本文將人體特征點(diǎn)稱為骨骼關(guān)節(jié)點(diǎn).使用PrimeSense公司的NITE工具[9]追蹤15個(gè)人體關(guān)節(jié)點(diǎn),如圖1所示.
從攝像機(jī)產(chǎn)生的深度圖像中分割人體關(guān)節(jié)點(diǎn).每個(gè)關(guān)節(jié)都在右手坐標(biāo)系上具有一個(gè)三維坐標(biāo),坐標(biāo)系的原點(diǎn)位于深度像機(jī)的鏡頭中[10-11].檢測到關(guān)節(jié)點(diǎn)后,NITE實(shí)時(shí)追蹤這些特征,用于后續(xù)動(dòng)作識別.本文主要研究手勢動(dòng)作識別,所以只用到上半部分的關(guān)節(jié)點(diǎn).但本文方法可以隨時(shí)擴(kuò)展來識別其他部位的動(dòng)作.
2.1 本文手勢識別的基本步驟
本文目標(biāo)是構(gòu)建一種記錄動(dòng)作觀察量的直觀方法,然后以一種特定方式(計(jì)算機(jī)語言腳本)將其作為一組規(guī)則,同時(shí)提出一種推理模塊在線解釋這些腳本.圖2給出了本文方法框架.本文識別算法的輸入數(shù)據(jù)為人體骨架關(guān)節(jié)點(diǎn)數(shù)據(jù)流,其由數(shù)據(jù)采集硬件和NITE庫獲得.本文方案中從獲取特征點(diǎn)到手勢識別的具體過程如下:
1) 解析由規(guī)則集合組成的輸入PDL腳本,并構(gòu)建解析樹.
2) 啟動(dòng)數(shù)據(jù)捕捉模塊.
3) 重復(fù)以下步驟,直到應(yīng)用程序結(jié)束.
(1) 如果從數(shù)據(jù)捕捉模塊獲取到新數(shù)據(jù)(人體關(guān)節(jié)點(diǎn)信息),則使用當(dāng)前時(shí)間戳將數(shù)據(jù)存儲到內(nèi)存堆的頂端.內(nèi)存堆的每層包含兩種類型數(shù)據(jù):關(guān)節(jié)點(diǎn)集合和規(guī)則名稱集合,這些規(guī)則為滿足當(dāng)前/先前關(guān)節(jié)點(diǎn)信息所代表的手勢.本文中內(nèi)存堆大小為100層(以20 Hz捕捉5 s的數(shù)據(jù)).
(2) 檢查新關(guān)節(jié)點(diǎn)的值是否滿足內(nèi)存堆中任何規(guī)則,即這些規(guī)則的名字是否出現(xiàn)在堆的頂層.PDL腳本也考慮了先前捕捉的關(guān)節(jié)點(diǎn).例如torso.x[0]是torso關(guān)節(jié)點(diǎn)的實(shí)際x坐標(biāo),同時(shí)torso.x[2]是相同關(guān)節(jié)點(diǎn)上兩次迭代之前捕獲的x坐標(biāo),這兩層在內(nèi)存堆頂層位置的下面.
(3) 如果任何一個(gè)規(guī)則都是滿足的,則添加它的名字到相同層的內(nèi)存堆頂端,即最后捕捉的關(guān)節(jié)點(diǎn)所存儲的位置.由于堆的頂層有它自己的時(shí)間戳,所以檢查規(guī)則需在一個(gè)給定時(shí)間內(nèi)完成.規(guī)則檢查是從內(nèi)存堆頂端開始,直到在一些堆層中發(fā)現(xiàn)規(guī)則名稱.該機(jī)制可以檢查人體關(guān)節(jié)點(diǎn)位置(通過規(guī)則名字描述)的特定序列是否在給定時(shí)間周期內(nèi)出現(xiàn).人體關(guān)節(jié)點(diǎn)位置序列定義了本文識別的手勢.
(4) 如果算法在步驟(3)中將規(guī)則名稱添加到內(nèi)存堆,則轉(zhuǎn)到步驟(2)如果沒有新的規(guī)則名可添加到內(nèi)存堆,返回到步驟3且等待接收新數(shù)據(jù).
2.2 PDL腳本規(guī)范
PDL腳本語言用于創(chuàng)建推理引擎的知識庫.PDL腳本是一種規(guī)則集合,每個(gè)規(guī)則可能擁有無限數(shù)量的前提條件,通過操作符連接這些規(guī)則.在PDL中,前提條件稱為邏輯規(guī)則.邏輯規(guī)則擁有兩種值:真或假.除了邏輯規(guī)則,PDL腳本還包含數(shù)字規(guī)則(三維數(shù)字規(guī)則),數(shù)字規(guī)則進(jìn)行一些簡單數(shù)學(xué)操作,返回浮點(diǎn)值(三維浮點(diǎn)坐標(biāo)).當(dāng)一個(gè)數(shù)字規(guī)則通過關(guān)聯(lián)操作聯(lián)合其他數(shù)字規(guī)則時(shí),數(shù)字規(guī)則可能轉(zhuǎn)變成一種邏輯規(guī)則.
下面以一個(gè)“投降”手勢動(dòng)作為例,描述PDL腳本規(guī)范.“投降”動(dòng)作的關(guān)節(jié)點(diǎn)示例如圖3所示.例子1描述了用來識別“投降”動(dòng)作的PDL規(guī)則:
例子1:
RULE RightElbow.x[0]> torso.x[0] & RightHand.x[0]> torso.x[0] & RightHand.y[0]> RightElbow.y[0] & abs(RightHand.x[0]- RightElbow.x[0])<50 & abs(RightShoulder.y[0]- RightElbow.y[0])<50;THEN RightHandPsi
RULE LeftElbow.x[0]< torso.x[0] & LeftHand.x[0] RULERightHandPsi & LeftHandPsi;THEN Psi 上例中,“投降”動(dòng)作識別由3條PDL規(guī)則組成,第一條規(guī)則檢查了右肘是否位于軀干的右側(cè)、右手是否位于軀干的右側(cè)、右手是否在右肘的上面、右手的垂直坐標(biāo)與右肘的垂直坐標(biāo)差值是否小于50 mm、右肩的水平坐標(biāo)與右肘的水平坐標(biāo)差值是否小于50 mm.第二條規(guī)則與第一條規(guī)則相似,描述了左手臂、左肩膀和左肘部.最后一條規(guī)則檢查先前兩條規(guī)則是否都滿足. 例子2: RULE angle(neck.xyz[0]-RightShoulder.xyz[0],RightElbow.xyz[0]-RightShoulder.xyz[0])>160 & abs(angle(RightElbow.xyz[0]-RightShoulder.xyz[0], RightElbow.xyz[0]- RightHand.xyz[0])-90)<20 & RightHand.y[0]- RightElbow.y[0]>0;THEN RightHandPsi RULE angle(neck.xyz[0]-LeftShoulder.xyz[0],LeftElbow.xyz[0]-LeftShoulder.xyz[0])>160 & abs(angle(LeftElbow.xyz[0]- LeftShoulder.xyz[0], LeftElbow.xyz[0]- LeftHand.xyz[0])-90)<20 & LeftHand.y[0]- LeftElbow.y[0]>0;THEN LeftHandPsi RULE RightHandPsi & LeftHandPsi;THEN PsiInsensitive 例子2中,第一條規(guī)則檢查了使用脖子和右肩定義的向量與使用右肘和右肩定義的向量之間的角度是否大于160°(兩個(gè)向量近似平行).第二條規(guī)則檢查了使用右肘和右肩定義的向量與使用右肘和右手定義的向量之間是否垂直.該規(guī)則也檢查右手是否在肘部上面.第二條規(guī)則與第一條規(guī)則相似,但是應(yīng)用于左手.如果先前兩個(gè)規(guī)則都是滿足的,則最后一條規(guī)則為真,即結(jié)論P(yáng)siInsensitive為真,這意味著該手勢已經(jīng)成功分類. 本文設(shè)定8種手勢動(dòng)作,各種手勢的解釋如表1所示. 表1 8種手勢的定義Tab.1 The definition of 8 kinds of hand gestures 圖4給出了這8種手勢的關(guān)鍵幀.其中,一些手勢具有相似的關(guān)節(jié)點(diǎn)軌跡(例如Swing中間部分可以被識別為Hand up),這樣就能夠更加準(zhǔn)確的評估手勢分類方法的性能.另外,本文通過Kinect攝像機(jī)獲取圖像序列,其存在深度測量隨機(jī)誤差,且隨著與目標(biāo)距離的增加而增加.實(shí)驗(yàn)中的攝像機(jī)誤差為100 mm~1 cm,該誤差影響NITE關(guān)節(jié)點(diǎn)的分割精度.本文將這些誤差視作為干擾噪聲,可用來評估本文識別方法的魯棒性. 數(shù)據(jù)集中的手勢數(shù)據(jù)可以分為兩組[12]:使用單個(gè)關(guān)鍵幀描述的手勢(如Head和Hips);需要多個(gè)關(guān)鍵幀描述的手勢(如Clapping、Hand up、Swing、Waving、Rotate、Anti-rotate ).對第一組手勢,PDL腳本的結(jié)構(gòu)非常簡單,它們僅需要處理一個(gè)PDL規(guī)則.第二組手勢需要使用多個(gè)PDL規(guī)則,每個(gè)關(guān)鍵幀對應(yīng)一個(gè)規(guī)則.下文中將舉例討論具有3個(gè)關(guān)鍵幀的“ Swing”手勢. “Swing”手勢主要由3個(gè)關(guān)鍵幀規(guī)則和兩個(gè)序列規(guī)則描述.關(guān)鍵幀規(guī)則中,第一條規(guī)則檢查手是否在頭頂交叉,結(jié)論是HandsReverse;第二條規(guī)則檢查兩個(gè)手在頭兩側(cè)是否具有相同的垂直高度;第三條規(guī)則檢查雙手是否位于頭頂、肘部的胳膊彎曲且HandsReverse是否滿足.序列規(guī)則中,在給定的時(shí)間約束內(nèi), sequenceexists函數(shù)的第一條規(guī)則用來檢查規(guī)則結(jié)果jester2、jester1和jester2是否位于內(nèi)存堆中.這意味著觀察到的用戶手勢是否為首先伸展它們的手,然后在頭頂交叉手,最后再伸展手.sequenceexists函數(shù)的第二條規(guī)則用來認(rèn)證觀察者是否首先交叉手,再伸展,最后再次在頭頂交叉手.如果這些序列都被檢測到,則“Swing”手勢被識別.本文用于識別“Swing”手勢的PDL腳本描述如下: RULE distance(RightHand.xyz[0],RightShoulder.xyz[0])> distance(RightHand.xyz[0],LeftShoulder.xyz[0]) & distance(LeftHand.xyz[0],LeftShoulder.xyz[0])> distance(LeftHand.xyz[0],RightShoulder.xyz[0]);THEN HandsReverse RULE angle(RightHand.xyz[0]-RightElbow.xyz[0], RightShoulder.xyz[0]-RightElbow.xyz[0])>140 & RightHand.y[0]>Head.y[0] & abs(RightHand.y[0]-LeftHand.y[0])<100 & not(HandsReverse);THEN jester1 RULE angle(RightHand.xyz[0]-RightElbow.xyz[0], RightShoulder.xyz[0]-RightElbow.xyz[0])>90 & RightHand.y[0]>Head.y[0] & abs(RightHand.y[0]-LeftHand.y[0])<100 & HandsReverse;THEN jester2 RULE sequenceexists("[jester2,1][ jester1,1] [ jester2,1]");THEN jester11 RULE sequenceexists("[jester1,1][ jester2,1] [ jester1,1]");THEN jester22 RULE jester11 & jester22;THEN Swing 4.1 實(shí)驗(yàn)設(shè)置 為了驗(yàn)證本文方法,利用Kinect攝像機(jī)采集了包含10個(gè)人 (5個(gè)男人和5個(gè)女人) 的手勢動(dòng)作視頻記錄作為測試集,每個(gè)人完成上述8類手勢,每個(gè)手勢做20次,即整個(gè)數(shù)據(jù)庫包括1600個(gè)手勢記錄.其中,手勢圖像分辨率為640×480.所有參與者為不同年齡的健康成年人.實(shí)驗(yàn)在配置有Inter Core i5處理器、內(nèi)存為4 GB、Windows7操作系統(tǒng)的PC機(jī)上進(jìn)行. 4.2 實(shí)驗(yàn)結(jié)果 實(shí)驗(yàn)中,我們發(fā)現(xiàn)攝像機(jī)每秒捕捉幀數(shù)(fps)對分類性能的影響很大.其中,高幀率視頻的識別率都較高,且方差較低,分類器性能比較穩(wěn)定.這是因?yàn)?,在低幀率視頻中,最佳關(guān)鍵幀的圖像可能沒能捕捉到,進(jìn)而影響識別性能.然而,若幀率過高也會增加識別方案的計(jì)算量.經(jīng)過多次實(shí)驗(yàn)表明,當(dāng)幀率設(shè)定為20 fps左右時(shí),在識別準(zhǔn)確率和時(shí)間方面都較好.表2給出了每秒幀數(shù)為20 fps時(shí),各手勢識別率的混淆矩陣. 表2 本文方法識別精度的混淆矩陣(每秒幀數(shù)為20 fps)Tab.2 The recognition accuracy confusion matrix of proposed method (the frames per second is 20 fps) 表3 各種識別方法的性能比較結(jié)果Tab.3 The performance comparison of various identification methods 對于每秒幀數(shù)為20 fps的動(dòng)作視頻,本文方法對各種手勢的平均識別率達(dá)到了96.1%,其中“Hand up”和“Hips”手勢都達(dá)到了 98%.而“Swing”、“Rotate”和“Anti-rotate ”的識別率相對較低.這是因?yàn)檫@些動(dòng)作與其他動(dòng)作存在一些較為相似的幀,導(dǎo)致誤判,但識別率都達(dá)到了91%以上. 將本文方法與[5]和[8]方法進(jìn)行比較,計(jì)算了所有手勢類別的平均識別率和每個(gè)手勢的平均識別時(shí)間,實(shí)驗(yàn)結(jié)果如表3所示.由表3可以看出,本文方法在識別率和識別時(shí)間方面都優(yōu)于其他方法.這是因?yàn)椋琜8]采用簡單的關(guān)節(jié)點(diǎn)信息和閾值判斷,雖然其識別時(shí)間較短,但由于其缺乏考慮變化的空間角度信息,只有待識別手勢非常適合標(biāo)準(zhǔn)動(dòng)作時(shí)才能被識別,導(dǎo)致未識別率較高.[5]利用HMM對手勢動(dòng)作中的關(guān)節(jié)點(diǎn)特征進(jìn)行學(xué)習(xí)和建模,一定程度上提高了識別率.然而,當(dāng)特征較多時(shí),其存在維數(shù)災(zāi)難問題,影響識別性能,并嚴(yán)重影響識別時(shí)間.本文方法中,通過提出的PDL和規(guī)則,根據(jù)關(guān)節(jié)點(diǎn)的位置和角度信息,直接識別手勢動(dòng)作.對于每個(gè)動(dòng)作,都定義了詳細(xì)的判斷規(guī)則,使其具有較高的識別率和穩(wěn)定性.另外,由于本文方法不需要進(jìn)行特征學(xué)習(xí)等復(fù)雜計(jì)算,所以識別時(shí)間較短,實(shí)時(shí)性較好.另外,本文方法中可以隨時(shí)添加定義新動(dòng)作的規(guī)則,具有很好的可擴(kuò)展性. 本文提出一種基于關(guān)鍵幀和PDL的實(shí)時(shí)手勢識別方案.利用手勢視頻關(guān)鍵幀的骨架關(guān)節(jié)點(diǎn)的位置和角度信息,根據(jù)PDL規(guī)則識別手勢.與現(xiàn)有方法相比,本文方法具有較高的識別率和實(shí)時(shí)性,對上述8種手勢的平均識別率達(dá)到了96%,而平均識別時(shí)間僅為36 ms,完全符合高精度實(shí)時(shí)識別的應(yīng)用要求. [1] 王向前, 張?jiān)路? 四維時(shí)空興趣點(diǎn)提取結(jié)合多流形判別分析的人體動(dòng)作識別[J]. 湘潭大學(xué)自然科學(xué)學(xué)報(bào), 2016, 38(1): 111-114. [2] 李慶, 師小凱. 基于隱馬爾科夫模板模型的視頻動(dòng)作識別算法[J]. 武漢理工大學(xué)學(xué)報(bào):信息與管理工程版, 2013, 35(6):789-793. [3] DENG T T, WANG Z L, ZHU M Q, et al. Ahierarchical algorithm for human posture recognition based on spatial and frequency domain features[J]. Moshi Shibie Yu Rengong Zhineng/pattern Recognition & Artificial Intelligence, 2011, 24(3):411-416. [4] 武東輝, 王哲龍, 陳野. 基于HMMs和SVM的人體日常動(dòng)作序列分割識別研究[J]. 大連理工大學(xué)學(xué)報(bào), 2015(4):411-416. [5] GU Y, DO H, OU Y S, et al. Human gesture recognition through a Kinect sensor[C]// IEEE International Conference on Robotics and Biomimetics,2012:1379-1384. [6] 朱國剛, 曹林. 基于Kinect傳感器骨骼信息的人體動(dòng)作識別[J]. 計(jì)算機(jī)仿真, 2014, 31(12):329-333. [7] LIU W T, CHEN A Y. Humanaction recognition based on Kinect and MCRF model[J]. Applied Mechanics & Materials, 2014, 68(7):3559-3563. [8] 謝亮, 廖宏建, 楊玉寶. 基于Kinect的姿勢識別與應(yīng)用研究[J]. 計(jì)算機(jī)技術(shù)與發(fā)展, 2013(5):258-260. [9] 劉瑤, 余旭, 黃智興. 基于Kinect傳感器的動(dòng)態(tài)手勢實(shí)時(shí)識別[J]. 西南大學(xué)學(xué)報(bào):自然科學(xué)版, 2015, 37(8):132-137. [10] IWANE N. Arm movement recognition for flag signaling with Kinect sensor[J].Virtual Environments Hnman-Concputer Interfaces and mesaurement systems,2012, 35(4):86-90. [11] WEI Z Q, WU J A, WANG X. Research onapplied technology in human action recognition based on skeleton information[J]. Advanced Materials Research, 2013, 25(9):498-502. [12] 石祥濱, 劉拴朋, 張德園. 基于關(guān)鍵幀的人體動(dòng)作識別方法[J]. 系統(tǒng)仿真學(xué)報(bào), 2015, 27(10):2401-2408. 責(zé)任編輯:龍順潮 Real-time Gesture Recognition Scheme Key Frame and Posture Description Language BAOYing-ying1*,WANGHua-jun1,XUPing-ping2 (1.School of Engineering, Taihu University of Wuxi, Wuxi 214064;2.School of Information Science and Engineering, Southeast University, Nanjing 211189 China) For the issue that the existing human motion recognition methods are poor in accuracy and real-time performance, a real time gesture recognition scheme based on key frame and posture description language (PDL) is proposed. Firstly, Kinect camera is used to obtain the gesture video frame, and the 3D coordinates of the frame joint point are obtained by the NITE tool. Then, the representative keyframes for gesture type are found out from the video sequence. Finally, a kind of posture description language is proposed, which uses a series rules to recognize gesture according the position and angle of the joint points in the key frame. Experimental results show that the proposed method has higher recognition rate and good real-time performance. human action recognition; skeleton joint point; key frame; posture description language 2016-04-07 包瑩瑩(1983-),女,江蘇 宿遷人,講師. E-mail:baoyingyingjs@sina.com TP391 A 1000-5900(2016)03-0078-063 PDL手勢識別舉例
4 實(shí)驗(yàn)及分析
5 結(jié)束語