徐寅鵬 臧嚴(yán) 李秋潔
摘要:借助MSRC-12人體動作數(shù)據(jù)集中的動作樣本數(shù)據(jù),選取80個不同人體的相同動作序列作為訓(xùn)練數(shù)據(jù),構(gòu)建動作模板,選取除上述80個樣本外的400個動作序列作為測試數(shù)據(jù),分別提取兩者骨骼向量的角度特征,運(yùn)用動態(tài)時間規(guī)整算法(DTW)進(jìn)行模板匹配,從而識別出人體典型動作。實驗結(jié)果表明,不同人體執(zhí)行的同一動作的多個樣本作為訓(xùn)練模板時能夠有效識別人體動作,但是在輸入的動作序列與模板在時間上有一定差距時、次要部位的角度特征的變化占主要地位時會影響識別效果。
關(guān)鍵詞:關(guān)節(jié)數(shù)據(jù);動作識別;特征提取;DTW
中圖分類號:TP3? ? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2019)27-0200-04
1 引言
人體行為識別是一個多學(xué)科交叉的研究方向,涉及圖像處理、計算機(jī)視覺、模式識別、機(jī)器學(xué)習(xí)和人工智能等多個學(xué)科, 是計算機(jī)視覺領(lǐng)域的重要研究課題之一。隨著數(shù)字圖像處理和智能硬件制造技術(shù)的飛速發(fā)展, 人體行為識別在智能視頻監(jiān)控、自然人機(jī)交互、智能家居和虛擬現(xiàn)實等領(lǐng)域具有廣泛的應(yīng)用前景[1]。
手勢識別主要包括靜態(tài)手勢識別和動態(tài)手勢識別。靜態(tài)手勢是指靜止不動的手的狀態(tài),其識別方法主要包括模板匹配等。模板匹配是通過計算待識別的手勢和手勢模板庫中的手勢模板的相似度進(jìn)行識別的,當(dāng)相似度達(dá)到設(shè)定值時,則認(rèn)為待識別手勢就是該模板手勢。Hernandez等人采用模板匹配的方法,采集了176個手語詞匯集,對美國手語進(jìn)行動作識別。動態(tài)手勢是由一幀一幀的手勢序列組成的,主要的識別算法有動態(tài)時間規(guī)整(DTW)、隱馬爾科夫模型(HMM)、支持向量機(jī)(SVM)、AdaBoost算法、人工神經(jīng)網(wǎng)絡(luò)(ANNs)等。王兵等人采用基于像素分類的指尖檢測算法找到指尖的個數(shù),對人手的運(yùn)動軌跡進(jìn)行分析,并針對運(yùn)動軌跡中運(yùn)動方向的變化,提取了動態(tài)手勢的運(yùn)動方向變化角度作為特征,采用隱馬爾科夫模型進(jìn)行訓(xùn)練和識別各個手勢[2]。
本課題主要研究基于關(guān)節(jié)數(shù)據(jù)的人體動作識別,提取多個具有典型區(qū)分度的角度特征,運(yùn)用動態(tài)時間規(guī)整算法(DTW)進(jìn)行模板匹配識別典型人體動作。
2 人體關(guān)節(jié)數(shù)據(jù)集
2.1 MSRC-12動作數(shù)據(jù)集
本課題采用的是MSRC-12(Microsoft Research Cambridge-12)人體動作數(shù)據(jù)集。MSRC-12動作數(shù)據(jù)集由人體各個部位的骨骼數(shù)據(jù)序列組成,是由微軟研究院劍橋大學(xué)計算機(jī)實驗室制作的,是由Kohli[3]等通過Kinect體感設(shè)備訓(xùn)練采集的。
Kinect是一款融合了許多先進(jìn)視覺技術(shù)的新一代體感交互設(shè)備,它的硬件集合了聲、電、光以及機(jī)械學(xué)等多個領(lǐng)域的先進(jìn)技術(shù),其主要的零部件有將近上百個,是目前電子產(chǎn)品中工藝極為復(fù)雜的一款[4]。
2.2 數(shù)據(jù)集內(nèi)容
MSRC-12動作數(shù)據(jù)集是由30個人執(zhí)行12類動作而采集的人體坐標(biāo)數(shù)據(jù)。在不同的引導(dǎo)機(jī)制下,不同的人執(zhí)行同一個動作,每個動作重復(fù)了多次,包括594個動作序列,總計6244個動作實例。數(shù)據(jù)集的每一幀數(shù)據(jù)都是由Kinect采集的人體20個骨骼關(guān)節(jié)點的坐標(biāo)組成的,動作實例就是由這20個骨骼關(guān)節(jié)點的坐標(biāo)隨時間變化的序列組成[5]。20個骨骼關(guān)節(jié)點如圖1所示。
MSRC-12動作數(shù)據(jù)集包含594個動作序列(存儲在594個csv文件中)和594個動作標(biāo)簽文件(存儲在594個tagstream文件中)。其中csv和tagstream文件的命名方式統(tǒng)一為:P[1]_[2]_[3]_P[4].[csv][tagstream],其中[1]和[2]表示存儲的動作序列的引導(dǎo)機(jī)制,[3]表示存儲的動作序列的類別,[4]表示執(zhí)行動作的人的編號。
2.3 典型動作介紹
數(shù)據(jù)集總共有12類動作,本課題的實驗就是基于其中4個動作的樣本數(shù)據(jù)進(jìn)行模板匹配,從而識別出人體典型動作的。定義的典型動作分別為蹲下、投擲、舉起并伸展雙臂和彎腰,如圖2所示。
3 基于關(guān)節(jié)數(shù)據(jù)的人體動作識別
3.1 基本流程
動作識別的基本思路為借助MSRC-12動作數(shù)據(jù)集中的樣本數(shù)據(jù),采用DTW算法將樣本訓(xùn)練集提取的角度特征和測試集中的角度特征進(jìn)行模板匹配,從而識別出人體動作,具體流程見下圖3。
3.2 特征提取
人體身高、胖瘦、形體各不相同,如果以選取的特征與上述特征有關(guān),必然會使匹配率降低,所以選取的特征應(yīng)與上述特征無關(guān)。當(dāng)不同的人執(zhí)行同一個動作時,需要通過相似的特征來解析出這個動作。
以“蹲下”這個動作為例,不同的人做出的動作都具有一定的差異性,骨骼與骨骼之間位置、長度、姿態(tài)等不盡相同,但是都表達(dá)了同一個動作,如圖4所示,所以必須找到一個共同的表達(dá)方式來表達(dá)同一個動作。
由此可以用骨骼間的夾角來代替骨骼的變化即動作的變化,從而識別出動作。動作數(shù)據(jù)集中的20個關(guān)節(jié)點數(shù)據(jù)并不是全部都用得到,所以可以通過篩選剔除不需要的關(guān)節(jié)點,實現(xiàn)數(shù)據(jù)的降維處理,使數(shù)據(jù)更具可靠性和普適性[6]。
利用人體的四肢及其與脊椎的夾角就可以基本確定人體的動作。本課題采用了15個關(guān)節(jié)點,如圖1所示,將WristRight簡記為WR,所以15個關(guān)節(jié)點分別為WR、ER、SR、SC、SL、EL、WL、S、HC、HR、KR、AR、HL、KL、AL,這些關(guān)節(jié)點組成了13根骨骼,以右腕、右肘和右肩組成的夾角為例,記為WR-ER-SR,有WR-ER-SR,ER-SR-SC,SC-SL-EL,SL-EL-HL,HC-HR-KR,HR-KR-AR,HC-HL-KL,HL-KL-AL這8個夾角,還有SR-SC、SL-SC、HR-HC和HL-HC與S-HC組成的4個夾角。
本課題的模板訓(xùn)練集使用了MSRC-12數(shù)據(jù)集,其中不同的動作序列簡化了樣本采集過程。訓(xùn)練集中的關(guān)節(jié)點坐標(biāo)數(shù)據(jù)是三維坐標(biāo),先利用坐標(biāo)數(shù)據(jù)得出骨骼向量,由于骨骼向量是矢量,骨骼長度和方向也可得出;再通過空間向量夾角公式計算出骨骼間的夾角,見式(1)。
3.3 動作識別算法
本課題主要通過提取人體動作的關(guān)節(jié)角度特征并運(yùn)用動態(tài)時間規(guī)整算法(DTW)識別出人體典型動作。該算法最初應(yīng)用在語音識別領(lǐng)域,它通過動態(tài)規(guī)劃思想去解決發(fā)音長短不同的兩條音頻曲線的語義識別。DTW算法就是使用warping扭曲的方式對時間軸進(jìn)行拉伸或收縮,從而計算兩條曲線的相似性。假設(shè)有兩個時間序列A和B,分別為模板序列和測試序列,他們的長度分別用m和n來表示,序列中每個時間點對應(yīng)一個特征值,見式(2)和(3)。
其中,A為樣本空間模板,B為測試模板。具體方法是把短的曲線序列延伸到和長的曲線相同長度進(jìn)行計算,或者把長的時間軸收縮到和短的曲線相同長度。所以,使用[DTW]算法匹配兩條曲線的最短距離總和前,需要先構(gòu)造一個[n×m]的矩陣,如圖6所示。
其中,元素[(i,j)]表示其中一條曲線上的點Ai到另一條曲線上的點Ai的距離d(Ai,Bj),一般使用歐氏距離進(jìn)行計算,計算公式為[dAi,Bj=(Ai-Bj)2],表示矩陣中路線途經(jīng)的點。W的第k個元素定義為[Wk=(i,j)k],表示A和B兩條時間序列的映射關(guān)系。K表示規(guī)整路徑的終點標(biāo)號,其值應(yīng)不小于測試序列與模板序列中的最大長度,不大于兩者的序列長度和,數(shù)學(xué)公式可以表示為式(4)[8]。
矩陣中的每一個點只有三個方向可以選擇,如圖7所示。如果規(guī)整路徑W已經(jīng)經(jīng)過(i,j)點,下一個方向只能是以下三種情況之一,分別是(i+1,j)、(i,j+1)、(i+1,j+1)。
定義累加距離D(i,j),從起點開始,每選擇出兩條序列(i,j)點之間的一條最短距離,就進(jìn)行累加。累加距離D(i,j)表示當(dāng)前格點的距離d(i,j),即Ai和Bj兩點間的歐氏距離,與該點前一點的累加距離之和,見式(5)。
4 實驗結(jié)果和結(jié)論
4.1 實驗結(jié)果及分析
通過對骨骼關(guān)節(jié)點數(shù)據(jù)的特征提取,運(yùn)用動態(tài)時間規(guī)整算法(DTW)將經(jīng)過特征提取的兩個集合進(jìn)行模板匹配,實現(xiàn)對人體典型動作的識別。
在不同動作序列條件下,隨著幀數(shù)的增加,角度特征具有明顯差異,以蹲下和舉起雙臂這兩個動作為例,所提取的角度特征如圖8所示;在同一人執(zhí)行相同動作序列條件下,隨著幀數(shù)的增加,所提取的角度特征具有相似性,以舉起雙臂這個動作為例,所提取的角度特征如圖9所示;在不同人執(zhí)行相同動作序列條件下,隨著幀數(shù)的增加,所提取的角度特征雖然有所差別,但是也具有一定的相似性,以舉起雙臂這個動作為例,所提取的角度特征如圖10所示。
選取左臂和左腿上共4個角度特征,其中紅色實線表示左臂的兩個角度特征,藍(lán)色實線表示左腿的兩個角度特征。
經(jīng)過上述對提取角度特征的分析,下面進(jìn)行同一動作的識別。每個動作樣本實際上是由同一個人重復(fù)多次組成的,所以單個數(shù)據(jù)文件中就有多個樣本。先選取動作數(shù)據(jù)集中的80個樣本作為模板,然后選取除上述樣本外的400個相同動作序列作為輸入數(shù)據(jù),設(shè)置累計歐式距離的閾值為20,動作識別率如表1所示。
通過模板匹配,舉起雙臂和投擲這兩個動作的識別率很高,而蹲下和彎腰這兩個動作的識別率較高。以蹲下這個動作為例,匹配的主要部位在腿部,沒有大幅度的變化,如圖10所示。而手臂部位的角度隨著幀數(shù)的增加出現(xiàn)毛刺現(xiàn)象,兩者完成的時間長度有較大差距,在DTW進(jìn)行幀數(shù)的匹配時差距就會放大,累計歐式距離變大,致使識別失敗。
4.2 總結(jié)與展望
基于MSRC-12數(shù)據(jù)集的關(guān)節(jié)點數(shù)據(jù),選取多個樣本作為模板,輸入測試數(shù)據(jù),提取能夠表征基本動作的角度特征進(jìn)行模板匹配,從而識別出人體動作。
由于MSRC-12動作數(shù)據(jù)集中樣本較多,所以進(jìn)行模板匹配時更易找出相似度最高的動作序列。仍然存在的問題是如果輸入的動作序列與模板在時間上有一定差距時,會影響識別效果;當(dāng)次要部位的角度特征的變化占主要地位時也會影響識別效果。這與算法本身、特征提取的方式等有關(guān)。所用數(shù)據(jù)集是由Kinect采集的,其中也包含一些不屬于動作序列的幀數(shù)據(jù),例如人體靜止時的數(shù)據(jù)。所以我們將會從這些方面繼續(xù)改進(jìn)。
參考文獻(xiàn):
[1] 朱紅蕾,朱昶勝,徐志剛.人體行為識別數(shù)據(jù)集研究進(jìn)展[J].自動化學(xué)報,2018,44(06):978-1004.
[2] 王健.基于Kinect的手勢識別及人機(jī)互動[D].南京郵電大學(xué),2018.
[3] S.Fothergill, H.M.Mentis, P.Kohli, and S.Nowozin.? Instructing people for training gestural interactive systems[J]. In ACM annual conference on Human Factors in Computing System(CHI), 2012:1737-1746.
[4] 姜延豐.基于Kinect的動作評價方法研究[D].沈陽工業(yè)大學(xué),2017.
[5] 刁俊方.基于Kinect的人體動作識別技術(shù)研究[D].重慶大學(xué),2015.
[6] 胡青松,張亮.人體行為序列化識別算法研究[J].電子技術(shù)應(yīng)用,2018,44(04):122-125+129.
[7] 顧軍華,李碩,劉洪普,等.基于骨骼向量夾角的人體動作識別算法[J].傳感器與微系統(tǒng),2018,37(02):120-123.
[8] 邢志飛.基于Kinect的人體姿態(tài)檢測與動作識別技術(shù)的研究[D].沈陽工業(yè)大學(xué),2015.
【通聯(lián)編輯:代影】