石祥濱,王 佳
(沈陽航空航天大學(xué) 計算機學(xué)院,沈陽 110136)
人體動作識別是計算機視覺領(lǐng)域的重要研究內(nèi)容,已經(jīng)被廣泛應(yīng)用于醫(yī)療保健、視頻監(jiān)控和人機交互等諸多領(lǐng)域。雖然人體動作識別已經(jīng)取得了飛速發(fā)展,但由于人體動作語義的模糊性和多樣性,使得人體動作識別仍然面臨著巨大挑戰(zhàn)。
人體骨架反映了人體的空間結(jié)構(gòu),骨架中關(guān)節(jié)點的連續(xù)變化代表了人體動作的時序特征。隨著深度傳感器的發(fā)展,利用其可以獲取3D關(guān)節(jié)點的位置信息,從而使得基于骨架的動作識別成為可能。目前基于人體骨架的動作識別方法可分為兩類:基于人工特征的傳統(tǒng)方法和基于深度學(xué)習(xí)的方法。在基于人工設(shè)計特征方法中,Hussein等[1]提出了關(guān)節(jié)軌跡的協(xié)方差矩陣方法,Wang等[2]利用關(guān)節(jié)的相對位置,Chellappa等[3]利用了身體部位之間的旋轉(zhuǎn)和平移特征,這些方法通過人工制定的規(guī)則分析骨架的空間結(jié)構(gòu),只能獲取有限的動作特征,且只針對某種特定的動作進行識別,很難泛化?;谏疃葘W(xué)習(xí)的人體骨架動作識別方法,可以自動捕獲關(guān)節(jié)的空間結(jié)構(gòu)特征和時序動態(tài)特征,進而提取骨架的高層次特征,因此基于骨架的圖神經(jīng)網(wǎng)絡(luò)成為動作識別的研究熱點。
在基于人體骨架數(shù)據(jù)的深度學(xué)習(xí)方法中,在Yan等[4]沒有將圖卷積應(yīng)用于動作識別之前,人們普遍一直使用RNN方法進行動作識別。文獻[5]提出了分層RNN從骨架序列中學(xué)習(xí)運動表示特征。Shahroudy等[6]引入了部分感知的LSTM網(wǎng)絡(luò),進一步提高了LSTM框架的性能。為了對辨別特征進行建模,Song等[7]提出了一種基于LSTM的時空注意模型,以聚焦于辨別關(guān)節(jié)并對不同幀給予不同的權(quán)重。為了將圖神經(jīng)網(wǎng)絡(luò)和CNN結(jié)合,Yan等[4]成功地將圖卷積網(wǎng)絡(luò)應(yīng)用于人體動作識別領(lǐng)域,提出了ST-GCN模型,通過對骨架中每個節(jié)點一階鄰域做卷積,獲取了整個骨架的動作特征,但是該方法不能準確獲得不同肢體的動作特征。該方法在劃分肢體邊緣節(jié)點的鄰域時,將與此節(jié)點相鄰的肢體外部的節(jié)點包含在此節(jié)點的一階鄰域內(nèi);對該肢體進行卷積提取特征時,導(dǎo)致不能準確獲得該肢體的動作特征。例如,做一個鞠躬動作時,軀干部分有較大的移動幅度,但是腿部并未移動,這種將腿部因素也考慮在內(nèi)的卷積方式,實際上削弱了軀干的動作特征。
為了捕獲不同肢體的動作特征,Thakkar等[8]提出了基于Part的動作識別方法。該方法在劃分鄰域時,僅考慮肢體內(nèi)的相鄰節(jié)點,通過卷積可以有效獲得單個Part的動作特征,但是該方法仍然存在兩個嚴重問題。首先,該方法忽略了不同肢體之間內(nèi)在的關(guān)聯(lián)性關(guān)系,而這種關(guān)系為動作識別提供重要特征。例如,當(dāng)人體走路時,腿部向前移動,同時需要手臂的擺動來協(xié)調(diào)身體的平衡,這表明手臂和腿部之間存在一種內(nèi)在的關(guān)聯(lián)性關(guān)系;其次,過多數(shù)量的Part會導(dǎo)致特征值丟失。在訓(xùn)練階段,網(wǎng)絡(luò)在反向傳播時,Part數(shù)量過多會因梯度消失引起Part特征值丟失。
通過以上分析,本文設(shè)計了一種基于肢體子圖的圖卷積動作識別方法。首先,為了捕獲不同肢體的動作特征,本文給出了一種骨架劃分方式??紤]到人在做某些動作時,存在偏側(cè)性的習(xí)慣,將左臂和右臂以及左腿和右腿分別劃分為手臂和腿部,因此本文將骨架劃分為有公共頂點的4個肢體,分別為頭部、手臂、軀干和腿部。在劃分節(jié)點的鄰域時,采用文獻[4]的鄰域劃分方式,僅考慮肢體內(nèi)部相鄰的節(jié)點,如圖1所示,圖1包圍區(qū)域表示手臂肢體中脖子節(jié)點的一階鄰域。
圖1 手臂肢體中脖子節(jié)點的一階鄰域
其次,針對PB-GCN不能捕獲肢體之間的關(guān)聯(lián)性關(guān)系問題,本文設(shè)計了組合肢體子圖表示兩個肢體之間的空間結(jié)構(gòu),如圖2所示,其表示人體走路時,手臂和腿部空間關(guān)聯(lián)關(guān)系。對肢體子圖進行空間卷積,得到肢體的空間特征;對組合肢體子圖進行空間卷積,可捕獲兩個不同肢體之間的空間關(guān)聯(lián)關(guān)系特征;根據(jù)權(quán)重聚合每一幀骨架中肢體的空間特征和關(guān)聯(lián)關(guān)系特征,再對聚合特征進行時間卷積。
圖2 手臂和腿部的關(guān)聯(lián)性關(guān)系
最后,在訓(xùn)練階段,在每個時空單元加入了殘差結(jié)構(gòu)。由于過多數(shù)量的子圖在反向傳播時存在特征值丟失現(xiàn)象,因此本方法在每個時空卷積單元中加入了殘差結(jié)構(gòu)[9],將時空單元分解為附加的殘差項,一定程度上避免了特征值丟失。此外,為了進一步優(yōu)化模型,本文引入幾何特征[10]和運動特征[5]作為每個骨架關(guān)節(jié)的原始特征,可進一步提高動作識別的準確率。圖3是本文提出模型的整體結(jié)構(gòu)圖。
圖3 網(wǎng)絡(luò)結(jié)構(gòu)圖
為了提取一幀骨架圖中不同肢體的動作特征以及肢體之間內(nèi)在的關(guān)聯(lián)性關(guān)系特征,首先根據(jù)人體骨架圖構(gòu)造不同肢體子圖,分別表示相應(yīng)的身體部位;其次,用組合肢體子圖表示兩個不同身體部位之間的關(guān)聯(lián)性關(guān)系;最后,定義肢體子圖和組合肢體子圖的時空圖卷積進行動作識別。
人體骨架圖定義為:G=(V,ε),其中V是圖的頂點集合,ε?(V×V)是邊的集合,圖4a表示人體骨架圖。用A表示骨架圖的鄰接矩陣,如果(vi,vj)∈ε,則A(i,j)=w,w∈R,否則A(i,j)=0,w表示人體骨架圖的邊權(quán)重。用Nk:v→V關(guān)節(jié)點v的k鄰域集合。在本方法中,用標簽函數(shù)L:V→{0,1,2,…,J}(J 為了表示不同身體部位的空間結(jié)構(gòu),本模型把人體骨架圖劃分成p個肢體子圖,分別表示不同的身體部位,劃分方式如下 G=Uk∈{1,2…,p}Pk|Pk=(Vk,εκ) (1) 其中,Pk表示肢體子圖,Vk是肢體子圖Pk節(jié)點的集合,εκ為其邊集合。圖4b是文獻[8]中提出的骨架劃分方法,將人體骨架劃分為6個部分,分別為頭部、左臂、右臂、軀干、左腿和右腿。這種劃分方式?jīng)]有考慮到人體偏側(cè)性的習(xí)慣,并且在訓(xùn)練階段,過多數(shù)量的子圖會因梯度消失引起肢體特征值丟失,降低網(wǎng)絡(luò)模型的擬合能力。為了避免上述問題,本文給出了一種新的肢體子圖劃分方式,如圖4c所示,將人體劃分為4個子圖,分別為頭部、手臂、軀干和腿部。本劃分方式在相鄰肢體之間共享一個公共節(jié)點,以便對其進行聚合。 圖4 人體骨架劃分方式 (2) 圖5 組合肢體子圖 在輸入到網(wǎng)絡(luò)的骨架序列中,節(jié)點vi的時間關(guān)系定義為相鄰幀中同一個子圖中的相同節(jié)點,圖6b表示手臂子圖中脖子節(jié)點的時空鄰域。本方法首先對每一幀中劃分的肢體子圖和組合肢體子圖獨立地進行空間卷積,分別得到肢體子圖的空間動作特征和內(nèi)在關(guān)聯(lián)性關(guān)系特征;其次,用Fagg函數(shù)對一幀中肢體子圖的動作特征和關(guān)聯(lián)性關(guān)系特征進行聚合;最后,對其聚合結(jié)果進行時間卷積。在對肢體子圖和組合肢體子圖進行空間和時間卷積之前,首先定義骨架序列中節(jié)點vi的時空鄰域為 N1Qk(vi)={vj|d(vi,vj)≤1,vi,vj∈VQk} (3) (4) 其中,N1Qk(vi)表示組合肢體子圖Qk中節(jié)點vi的1鄰域,VQk是組合肢體子圖中節(jié)點的集合。ta和tb表示骨架序列中兩個瞬時時刻,Nτ(vita)表示節(jié)點vita的τ鄰域。同理,用式(3)和式(4)定義肢體子圖Pk(k=1,2,…,m)的空間鄰域和時間鄰域。圖6a、圖6b和圖6c分別表示手臂子圖中脖子節(jié)點的空間鄰域、時間鄰域和時空鄰域。 圖6 手臂中脖子的空間、時間和時空鄰域 為了保證子圖中不同節(jié)點vi卷積核的大小,為其中心節(jié)點時空鄰域內(nèi)的每一個節(jié)點分配標簽,方式如下 LS(vjt)={0|vjt∈N1Qk(vit)} (5) (6) 其中,Ls(vitb)表示為節(jié)點vit的空間鄰域內(nèi)的每個節(jié)點分配相同標簽,從而實現(xiàn)共享卷積核;在時間上,LT(vitb)表示為骨架序列中節(jié)點vit的時間鄰域分配不同的標簽。同理,用式(5)和式(6)分別為肢體子圖Pk中節(jié)點vi的時空鄰域分配標簽。 分別為每一幀中肢體子圖和組合肢體子圖分配標簽之后,開始定義組合肢體子圖和肢體子圖空間和時間圖卷積,如式(7)~(10)所示。 (7) (8) (9) (10) 圖7 手臂和軀干的時空圖卷積 人體做一個動作時,不同肢體的位移不同,并且各部位之間關(guān)聯(lián)關(guān)系的重要性程度不同。因此,在訓(xùn)練模型時,每個肢體子圖和組合肢體子圖分別學(xué)習(xí)不同權(quán)重。本方法聚合函數(shù)Fagg定義如下 (11) 其中,Wagg(i)表示肢體子圖和組合肢體子圖的權(quán)重,Yi表示肢體子圖和組合肢體子圖的空間卷積輸出特征。 在訓(xùn)練階段為了避免因子圖數(shù)量過多,導(dǎo)致網(wǎng)絡(luò)在反向傳播時因梯度消失引起的子圖特征值丟失問題,本文在每個時空單元中加入了殘差結(jié)構(gòu),將時空單元分解為附加的殘差項,在一定程度上避免了特征值丟失。為了進一步優(yōu)化模型,本文將幾何特征和位移特征作為人體關(guān)節(jié)點的原始特征。 本模型用幾何特征和運動特征作為骨架節(jié)點的原始特征,使用隨機梯度下降(SGD)作為優(yōu)化器。本網(wǎng)絡(luò)模型由9個時空單元組成,前3層輸出通道為64,中間3層輸出通道為128,最后3層為256。NTU-RGB+D數(shù)據(jù)集一共迭代了90次,初始學(xué)習(xí)率為0.1,在20、50、70、80次時分別衰減一次,衰減系數(shù)為0.000 5。HDM05數(shù)據(jù)集一共迭代了120次,迭代80次時衰減一次,衰減系數(shù)為0.000 1。本實驗使用的顯卡為NVIDIA GTX1070,一次批量處理數(shù)據(jù)的數(shù)量為4。測試本模型時,用到2個3D數(shù)據(jù)集分別為NTU-GRB+D和HDM05。 NTU-GRB+D是目前最大的人體骨架數(shù)據(jù)集,此數(shù)據(jù)集一共包含了56 880個視頻序列,60個動作類別,每個骨架有25個人體關(guān)節(jié)。該數(shù)據(jù)集是由3個Kinect V2 相機從不同角度拍攝的,并且設(shè)置了交叉對象(CS)和交叉視角(CV)2種訓(xùn)練基準。在交叉對象(CS)中包含的訓(xùn)練集和測試集的樣本數(shù)量分別為:40 320個和16 560個。在交叉視角(CV)中,訓(xùn)練集和測試集的樣本數(shù)量分別為:37 920和18 960個。 HDM05是運動類別最多的數(shù)據(jù)集,此數(shù)據(jù)集中每個骨架有31個關(guān)節(jié)點,2 337個動作序列,涵蓋了由5名動作表演者表演的130個動作類別。本文在此數(shù)據(jù)集中采用Huang等[11]提出的驗證方式,即在這個數(shù)據(jù)集上共進行10次實驗,每次實驗隨機選擇一半的序列進行訓(xùn)練,另一半用于測試。 本文提出了基于肢體子圖的圖卷積動作識別方法,通過構(gòu)建肢體子圖和組合肢體子圖,可以有效提取肢體之間的關(guān)聯(lián)性特征。為了驗證本模型的有效性,分別在NTU-RGB+D和HDM05兩大數(shù)據(jù)集中進行了測試。 (1)表1中CS為本方法在NTURGB+D(CS)中的實驗結(jié)果,本模型在CS中的準確率為87.9%,比PB-GCN高0.4%,比ST-GCN高6.4%,這初步驗證了本方法的有效性。 (2)表1中CV為本方法在NTURGB+D(CV)中的實驗結(jié)果,本模型在CV中的準確率為94.3%,比ST-Attention的82.1%高出12.2%,比PB-GCN高出0.4%,比ST-GCN高出6%。 表1 不同算法在CS和CV的實驗結(jié)果 (3)表2為本方法在HDMO5數(shù)據(jù)集上的實驗結(jié)果,在該數(shù)據(jù)集上采用了文獻[11]所給出的實驗方法,即在這個數(shù)據(jù)集上共進行10次實驗,每次實驗隨機選擇一半的序列進行訓(xùn)練,另一半用于測試,實驗結(jié)果為88.79%±1.13%。通過實驗充分證明了本文提出方法的可行性和優(yōu)越性。 表2 不同算法在HDM05數(shù)據(jù)集的實驗結(jié)果 在NTU-RGB數(shù)據(jù)集和HDM05數(shù)據(jù)集上,對于一些日常動作,如刷牙、走路、跑步、搓兩手等動作具有更好的識別效果,但是一些區(qū)分左右手臂和左右腿部的動作,如舉手、撿東西等動作本方法識別效果欠佳。一種可能的原因是人的偏側(cè)行習(xí)慣,如有的人用左手撿東西,有的人用右手。本方法在劃分肢體子圖時,將左手和右手劃分成一個子圖,一定程度上導(dǎo)致了不能區(qū)分偏側(cè)行的問題,該問題是一步研究的重點。 本文提出了基于肢體子圖的時空圖卷積動作識別方法。本方法挖掘人體骨架中更多的動作特征,定義肢體子圖和組合肢體子圖分別表示肢體的空間結(jié)構(gòu)和肢體之間內(nèi)在關(guān)聯(lián)性關(guān)系,對它們分別進行時空卷積,得到每個肢體的動作特征和肢體之間的關(guān)聯(lián)性關(guān)系特征,通過實驗證明本模型的有效性。本模型在兩個3D數(shù)據(jù)集上得到了驗證,進一步研究將本模型應(yīng)用在2D數(shù)據(jù)集進行動作識別,例如COCO姿態(tài)數(shù)據(jù)集。未來,本文提出的動作識別方法可應(yīng)用于考場異常行為分析中,識別考生更多的動作特征。2.2 子圖劃分方法
2.3 基于肢體子圖的時空圖卷積
3 實驗對比分析
3.1 實驗配置與數(shù)據(jù)集
3.2 實驗結(jié)果分析
4 結(jié)論