盛 敏,李 蘭
(安慶師范大學數(shù)學與計算科學學院,安徽安慶246133)
近年來,人體動作識別已經(jīng)滲透和影響人們生活的各個方面[1]。在醫(yī)療健康方面,可以為受傷病人做康復訓練[2];在視頻監(jiān)控方面,用于判斷被監(jiān)控人的異常行為[3];在虛擬現(xiàn)實方面,實現(xiàn)真正的人機交互[4]。由于人體動作的高復雜性和多變化性直接影響到識別的精確性和穩(wěn)定性,因此對人體動作的理解就變得尤為重要[5-6]。傳統(tǒng)的行為識別方法主要是人工手動提取出能夠表述運動的特征,再選擇合適的分類器分類。如Su等[7]提出了一種新的動作識別分層框架,在第一層中提取人體五部分重心點相對重心初始位置偏移量的均值、方差作為特征,選用支持向量機(SVM)將動作分為7大類;第二層中根據(jù)每個動作之間的差異性,提取人體五部分末端執(zhí)行器的速度和相對位置作為特征,采用隱馬爾科夫模型進行最終識別;最后在公開數(shù)據(jù)集MSR Action3D上取得91.41%的平均識別率。石祥濱等[8]對人體動作序列采用K-均值聚類(K-means)算法,提取出動作視頻序列中的關(guān)鍵幀,再將關(guān)鍵幀中關(guān)節(jié)點位置和人體剛體部分之間的骨架角度作為特征,利用SVM進行分類。與傳統(tǒng)的行為識別手動提取特征不同的是,基于深度學習的行為識別研究方法可以根據(jù)動作的運動特性,無監(jiān)督地學習出適合這個數(shù)據(jù)集的特征[9]。Simonyan等[10]將視頻分成兩種數(shù)據(jù),一種是使用單幀數(shù)據(jù)的靜態(tài)幀數(shù)據(jù)流,另一種是使用光流數(shù)據(jù)的幀間動態(tài)數(shù)據(jù)流,然后使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)對每個數(shù)據(jù)提取特征,最后將提取到的特征用SVM進行動作的分類識別。這兩類行為識別方法都能很好地解決目前行為識別魯棒性不高和實時性不強的問題。但算法復雜度高,計算過程較為復雜。文獻[11]提取三維模型的正視圖作為特征描述,以降低計算復雜度。因此,本文提出一種基于動作主視圖的行為識別方法。將三維空間動作投影作為動作正前方視角的二維平面動作,得到三維動作的二維特征描述,降低動作空間的維度。在傳統(tǒng)的行為識別方法特征提取中,研究者憑借經(jīng)驗知識不容易發(fā)現(xiàn)合適的動作特征,但在深度學習領(lǐng)域中,網(wǎng)絡(luò)可以自主學習數(shù)據(jù)的內(nèi)在特征。遞歸神經(jīng)網(wǎng)絡(luò)(RNN)雖然能夠?qū)θ梭w行為進行識別,但大量的理論和實驗都證明RNN存在梯度彌散的問題,即很難學習到超過一定歷史時刻的信息[12]。因此,Hochreiter等[13]提出了長短時記憶網(wǎng)絡(luò)模型(LSTM),作為一種特殊的RNN可以很好地解決長時依賴的問題,并且可以接受動作幀數(shù)不一的數(shù)據(jù)。根據(jù)LSTM模型的這些特點,本文選擇LSTM模型對人體動作進行識別。
目前,在人體行為識別中,大多數(shù)研究者實驗的數(shù)據(jù)維度均為原始三維數(shù)據(jù),在數(shù)據(jù)特征提取和分類器執(zhí)行算法過程中,三維數(shù)據(jù)計算復雜度普遍較高。本文將三維空間動作按動作正方向投影為二維平面動作,即將三維數(shù)據(jù)降維至二維,得到動作的主視圖,以減少計算復雜度。圖1為高揮手的三維視角圖及其主視圖。
圖2為Kinect傳感器通過微軟官方軟件SDK,獲取到人體骨架20個關(guān)節(jié)點的三維坐標信息。
圖1 高揮手三維視角圖及其主視圖
圖2 Kinect下人體骨架三維坐標系
若一個動作時間長度為t幀,則動作的原始三維數(shù)據(jù)可用矩陣A表示,動作的主視圖數(shù)據(jù)用矩陣B表示,再將B中元素按時間序排列得到矩陣C,C作為LSTM的數(shù)據(jù)輸入。
LSTM在t時刻模型結(jié)構(gòu)如圖3所示。
圖3 LSTM單元結(jié)構(gòu)圖
it,ft,ot分別表示LSTM網(wǎng)絡(luò)的輸入門、遺忘門、輸出門,分別表示為
其中Wx表示輸入權(quán)值矩陣,Wh為t-1時刻隱藏層狀態(tài)權(quán)值矩陣,Wc為t-1時刻自連接單元狀態(tài)權(quán)值矩陣,b為偏置。LSTM模型的第一步是通過遺忘門決定哪些信息可以通過自連接單元狀態(tài)ct,即通過sigmoid函數(shù),根據(jù)上一時刻的輸出ht-1和當前輸入xt計算出0~1范圍內(nèi)的數(shù)值,判斷是否讓ct-1中的信息通過自連接單元狀態(tài)ct。第二步通過輸入門it中的sigmoid函數(shù)決定ht-1和xt中保留多少信息在ct中,再通過tanh 層選出可能會被添加到ct中的信息,這些更新的信息表示為=tanh(Wxcxt+Whc·ht-1+bc),所以自連接單元狀態(tài)中的信息為ct=ftct-1+。最后一步對單元模型進行輸出,先通過sigmoid函數(shù)輸出不考慮先前時刻學習到的信息ot,再通過tanh層對ct中的信息進行處理,最后將處理后的信息與ot中的信息依次相乘得到當前時刻的隱藏層狀態(tài):ht=ot·tanh(ct)。當在第T時刻,即數(shù)據(jù)已經(jīng)全部輸入之后,將得到的LSTM網(wǎng)絡(luò)模型的最終隱藏層狀態(tài)hT輸入到模型輸出層中,通過softmax函數(shù)P=softmax(W ·hT+b)計算出動作的最終識別概率,進而判斷出動作類型。
實驗硬件設(shè)置:Intel(R)Xeon(R)CPU E5-1603 0@2.8 GHz 2.80 GHZ,8 GB RAM;軟件設(shè)置:Windows 10 64位操作系統(tǒng)和MATLAB R2017b。實驗數(shù)據(jù)集:MSRAction 3D數(shù)據(jù)集。MSRAction 3D數(shù)據(jù)集中10個受試者依次做20個動作,每個動作執(zhí)行2~3遍,共有567個樣本。20個動作分別為高揮手、水平揮手、捶打、手抓、沖拳、高拋、畫叉、畫勾、畫圈、拍手、雙手揮、側(cè)拳、彎腰、向前踢、側(cè)踢、跑步、網(wǎng)球擺、正面上手發(fā)球、高爾夫揮桿、撿起和扔。由于數(shù)據(jù)集中20個樣本存在嚴重的數(shù)據(jù)丟失,因此本文實驗數(shù)據(jù)樣本量為547。采用十折交叉驗證的方式選擇訓練集和測試集,即數(shù)據(jù)集被分為10組,每組數(shù)據(jù)輪流作為測試集,剩下的9組作為訓練集。按此方法做十次十折交叉驗證,取十次驗證結(jié)果的平均值作為最終識別結(jié)果。實驗中LSTM模型參數(shù)設(shè)置:隱層單元數(shù)為500,丟包數(shù)為10,批尺寸為1,迭代數(shù)為100,交叉驗證后的平均識別率達93.06%。表1分別統(tǒng)計20個動作識別率情況。
表1 十次十折后20個動作平均識別率
從表1可以看出,絕大多數(shù)動作的識別率都超過了90%,其中有3個動作的識別率達100%。但手抓動作的識別率最低,因為手抓動作容易和其他單手動作混淆,如高拋、捶打、沖拳等。表2給出了在相同實驗數(shù)據(jù)集下與其他算法的對比。從表2可以看出,本文方法在僅使用動作主視圖數(shù)據(jù)的情況下與其他使用動作三維數(shù)據(jù)方法相比,平均識別率最高,表明動作的主視圖數(shù)據(jù)能夠較好地表征動作類型,同時表明LSTM模型處理時序問題能力較好。
表2 本文方法與其他方法識別率比較
本文提出了一種基于動作主視圖的LSTM模型的人體行為識別方法,將原始三維數(shù)據(jù)降維至平面二維數(shù)據(jù),獲得三維動作的二維特征表述,降低了算法復雜度,采用十次十折交叉驗證方法,取得了與其他使用原始三維數(shù)據(jù)相當甚至更好的識別率。但是LSTM模型更適合樣本量較大的數(shù)據(jù)集,而本文用于實驗的數(shù)據(jù)樣本量較少,在未來的實驗工作中將加入大規(guī)模數(shù)據(jù)集以驗證文中算法的普適性。