石祥濱,王 佳
(沈陽航空航天大學 計算機學院,沈陽 110136)
人體動作識別是計算機視覺領域的重要研究內容,已經被廣泛應用于醫療保健、視頻監控和人機交互等諸多領域。雖然人體動作識別已經取得了飛速發展,但由于人體動作語義的模糊性和多樣性,使得人體動作識別仍然面臨著巨大挑戰。
人體骨架反映了人體的空間結構,骨架中關節點的連續變化代表了人體動作的時序特征。隨著深度傳感器的發展,利用其可以獲取3D關節點的位置信息,從而使得基于骨架的動作識別成為可能。目前基于人體骨架的動作識別方法可分為兩類:基于人工特征的傳統方法和基于深度學習的方法。在基于人工設計特征方法中,Hussein等[1]提出了關節軌跡的協方差矩陣方法,Wang等[2]利用關節的相對位置,Chellappa等[3]利用了身體部位之間的旋轉和平移特征,這些方法通過人工制定的規則分析骨架的空間結構,只能獲取有限的動作特征,且只針對某種特定的動作進行識別,很難泛化。基于深度學習的人體骨架動作識別方法,可以自動捕獲關節的空間結構特征和時序動態特征,進而提取骨架的高層次特征,因此基于骨架的圖神經網絡成為動作識別的研究熱點。
在基于人體骨架數據的深度學習方法中,在Yan等[4]沒有將圖卷積應用于動作識別之前,人們普遍一直使用RNN方法進行動作識別。文獻[5]提出了分層RNN從骨架序列中學習運動表示特征。Shahroudy等[6]引入了部分感知的LSTM網絡,進一步提高了LSTM框架的性能。為了對辨別特征進行建模,Song等[7]提出了一種基于LSTM的時空注意模型,以聚焦于辨別關節并對不同幀給予不同的權重。為了將圖神經網絡和CNN結合,Yan等[4]成功地將圖卷積網絡應用于人體動作識別領域,提出了ST-GCN模型,通過對骨架中每個節點一階鄰域做卷積,獲取了整個骨架的動作特征,但是該方法不能準確獲得不同肢體的動作特征。該方法在劃分肢體邊緣節點的鄰域時,將與此節點相鄰的肢體外部的節點包含在此節點的一階鄰域內;對該肢體進行卷積提取特征時,導致不能準確獲得該肢體的動作特征。例如,做一個鞠躬動作時,軀干部分有較大的移動幅度,但是腿部并未移動,這種將腿部因素也考慮在內的卷積方式,實際上削弱了軀干的動作特征。
為了捕獲不同肢體的動作特征,Thakkar等[8]提出了基于Part的動作識別方法。該方法在劃分鄰域時,僅考慮肢體內的相鄰節點,通過卷積可以有效獲得單個Part的動作特征,但是該方法仍然存在兩個嚴重問題。首先,該方法忽略了不同肢體之間內在的關聯性關系,而這種關系為動作識別提供重要特征。例如,當人體走路時,腿部向前移動,同時需要手臂的擺動來協調身體的平衡,這表明手臂和腿部之間存在一種內在的關聯性關系;其次,過多數量的Part會導致特征值丟失。在訓練階段,網絡在反向傳播時,Part數量過多會因梯度消失引起Part特征值丟失。
通過以上分析,本文設計了一種基于肢體子圖的圖卷積動作識別方法。首先,為了捕獲不同肢體的動作特征,本文給出了一種骨架劃分方式。考慮到人在做某些動作時,存在偏側性的習慣,將左臂和右臂以及左腿和右腿分別劃分為手臂和腿部,因此本文將骨架劃分為有公共頂點的4個肢體,分別為頭部、手臂、軀干和腿部。在劃分節點的鄰域時,采用文獻[4]的鄰域劃分方式,僅考慮肢體內部相鄰的節點,如圖1所示,圖1包圍區域表示手臂肢體中脖子節點的一階鄰域。

圖1 手臂肢體中脖子節點的一階鄰域
其次,針對PB-GCN不能捕獲肢體之間的關聯性關系問題,本文設計了組合肢體子圖表示兩個肢體之間的空間結構,如圖2所示,其表示人體走路時,手臂和腿部空間關聯關系。對肢體子圖進行空間卷積,得到肢體的空間特征;對組合肢體子圖進行空間卷積,可捕獲兩個不同肢體之間的空間關聯關系特征;根據權重聚合每一幀骨架中肢體的空間特征和關聯關系特征,再對聚合特征進行時間卷積。

圖2 手臂和腿部的關聯性關系
最后,在訓練階段,在每個時空單元加入了殘差結構。由于過多數量的子圖在反向傳播時存在特征值丟失現象,因此本方法在每個時空卷積單元中加入了殘差結構[9],將時空單元分解為附加的殘差項,一定程度上避免了特征值丟失。此外,為了進一步優化模型,本文引入幾何特征[10]和運動特征[5]作為每個骨架關節的原始特征,可進一步提高動作識別的準確率。圖3是本文提出模型的整體結構圖。

圖3 網絡結構圖
為了提取一幀骨架圖中不同肢體的動作特征以及肢體之間內在的關聯性關系特征,首先根據人體骨架圖構造不同肢體子圖,分別表示相應的身體部位;其次,用組合肢體子圖表示兩個不同身體部位之間的關聯性關系;最后,定義肢體子圖和組合肢體子圖的時空圖卷積進行動作識別。
人體骨架圖定義為:G=(V,ε),其中V是圖的頂點集合,ε?(V×V)是邊的集合,圖4a表示人體骨架圖。用A表示骨架圖的鄰接矩陣,如果(vi,vj)∈ε,則A(i,j)=w,w∈R,否則A(i,j)=0,w表示人體骨架圖的邊權重。用Nk:v→V關節點v的k鄰域集合。在本方法中,用標簽函數L:V→{0,1,2,…,J}(J 為了表示不同身體部位的空間結構,本模型把人體骨架圖劃分成p個肢體子圖,分別表示不同的身體部位,劃分方式如下 G=Uk∈{1,2…,p}Pk|Pk=(Vk,εκ) (1) 其中,Pk表示肢體子圖,Vk是肢體子圖Pk節點的集合,εκ為其邊集合。圖4b是文獻[8]中提出的骨架劃分方法,將人體骨架劃分為6個部分,分別為頭部、左臂、右臂、軀干、左腿和右腿。這種劃分方式沒有考慮到人體偏側性的習慣,并且在訓練階段,過多數量的子圖會因梯度消失引起肢體特征值丟失,降低網絡模型的擬合能力。為了避免上述問題,本文給出了一種新的肢體子圖劃分方式,如圖4c所示,將人體劃分為4個子圖,分別為頭部、手臂、軀干和腿部。本劃分方式在相鄰肢體之間共享一個公共節點,以便對其進行聚合。 圖4 人體骨架劃分方式 (2) 圖5 組合肢體子圖 在輸入到網絡的骨架序列中,節點vi的時間關系定義為相鄰幀中同一個子圖中的相同節點,圖6b表示手臂子圖中脖子節點的時空鄰域。本方法首先對每一幀中劃分的肢體子圖和組合肢體子圖獨立地進行空間卷積,分別得到肢體子圖的空間動作特征和內在關聯性關系特征;其次,用Fagg函數對一幀中肢體子圖的動作特征和關聯性關系特征進行聚合;最后,對其聚合結果進行時間卷積。在對肢體子圖和組合肢體子圖進行空間和時間卷積之前,首先定義骨架序列中節點vi的時空鄰域為 N1Qk(vi)={vj|d(vi,vj)≤1,vi,vj∈VQk} (3) (4) 其中,N1Qk(vi)表示組合肢體子圖Qk中節點vi的1鄰域,VQk是組合肢體子圖中節點的集合。ta和tb表示骨架序列中兩個瞬時時刻,Nτ(vita)表示節點vita的τ鄰域。同理,用式(3)和式(4)定義肢體子圖Pk(k=1,2,…,m)的空間鄰域和時間鄰域。圖6a、圖6b和圖6c分別表示手臂子圖中脖子節點的空間鄰域、時間鄰域和時空鄰域。 圖6 手臂中脖子的空間、時間和時空鄰域 為了保證子圖中不同節點vi卷積核的大小,為其中心節點時空鄰域內的每一個節點分配標簽,方式如下 LS(vjt)={0|vjt∈N1Qk(vit)} (5) (6) 其中,Ls(vitb)表示為節點vit的空間鄰域內的每個節點分配相同標簽,從而實現共享卷積核;在時間上,LT(vitb)表示為骨架序列中節點vit的時間鄰域分配不同的標簽。同理,用式(5)和式(6)分別為肢體子圖Pk中節點vi的時空鄰域分配標簽。 分別為每一幀中肢體子圖和組合肢體子圖分配標簽之后,開始定義組合肢體子圖和肢體子圖空間和時間圖卷積,如式(7)~(10)所示。 (7) (8) (9) (10) 圖7 手臂和軀干的時空圖卷積 人體做一個動作時,不同肢體的位移不同,并且各部位之間關聯關系的重要性程度不同。因此,在訓練模型時,每個肢體子圖和組合肢體子圖分別學習不同權重。本方法聚合函數Fagg定義如下 (11) 其中,Wagg(i)表示肢體子圖和組合肢體子圖的權重,Yi表示肢體子圖和組合肢體子圖的空間卷積輸出特征。 在訓練階段為了避免因子圖數量過多,導致網絡在反向傳播時因梯度消失引起的子圖特征值丟失問題,本文在每個時空單元中加入了殘差結構,將時空單元分解為附加的殘差項,在一定程度上避免了特征值丟失。為了進一步優化模型,本文將幾何特征和位移特征作為人體關節點的原始特征。 本模型用幾何特征和運動特征作為骨架節點的原始特征,使用隨機梯度下降(SGD)作為優化器。本網絡模型由9個時空單元組成,前3層輸出通道為64,中間3層輸出通道為128,最后3層為256。NTU-RGB+D數據集一共迭代了90次,初始學習率為0.1,在20、50、70、80次時分別衰減一次,衰減系數為0.000 5。HDM05數據集一共迭代了120次,迭代80次時衰減一次,衰減系數為0.000 1。本實驗使用的顯卡為NVIDIA GTX1070,一次批量處理數據的數量為4。測試本模型時,用到2個3D數據集分別為NTU-GRB+D和HDM05。 NTU-GRB+D是目前最大的人體骨架數據集,此數據集一共包含了56 880個視頻序列,60個動作類別,每個骨架有25個人體關節。該數據集是由3個Kinect V2 相機從不同角度拍攝的,并且設置了交叉對象(CS)和交叉視角(CV)2種訓練基準。在交叉對象(CS)中包含的訓練集和測試集的樣本數量分別為:40 320個和16 560個。在交叉視角(CV)中,訓練集和測試集的樣本數量分別為:37 920和18 960個。 HDM05是運動類別最多的數據集,此數據集中每個骨架有31個關節點,2 337個動作序列,涵蓋了由5名動作表演者表演的130個動作類別。本文在此數據集中采用Huang等[11]提出的驗證方式,即在這個數據集上共進行10次實驗,每次實驗隨機選擇一半的序列進行訓練,另一半用于測試。 本文提出了基于肢體子圖的圖卷積動作識別方法,通過構建肢體子圖和組合肢體子圖,可以有效提取肢體之間的關聯性特征。為了驗證本模型的有效性,分別在NTU-RGB+D和HDM05兩大數據集中進行了測試。 (1)表1中CS為本方法在NTURGB+D(CS)中的實驗結果,本模型在CS中的準確率為87.9%,比PB-GCN高0.4%,比ST-GCN高6.4%,這初步驗證了本方法的有效性。 (2)表1中CV為本方法在NTURGB+D(CV)中的實驗結果,本模型在CV中的準確率為94.3%,比ST-Attention的82.1%高出12.2%,比PB-GCN高出0.4%,比ST-GCN高出6%。 表1 不同算法在CS和CV的實驗結果 (3)表2為本方法在HDMO5數據集上的實驗結果,在該數據集上采用了文獻[11]所給出的實驗方法,即在這個數據集上共進行10次實驗,每次實驗隨機選擇一半的序列進行訓練,另一半用于測試,實驗結果為88.79%±1.13%。通過實驗充分證明了本文提出方法的可行性和優越性。 表2 不同算法在HDM05數據集的實驗結果 在NTU-RGB數據集和HDM05數據集上,對于一些日常動作,如刷牙、走路、跑步、搓兩手等動作具有更好的識別效果,但是一些區分左右手臂和左右腿部的動作,如舉手、撿東西等動作本方法識別效果欠佳。一種可能的原因是人的偏側行習慣,如有的人用左手撿東西,有的人用右手。本方法在劃分肢體子圖時,將左手和右手劃分成一個子圖,一定程度上導致了不能區分偏側行的問題,該問題是一步研究的重點。 本文提出了基于肢體子圖的時空圖卷積動作識別方法。本方法挖掘人體骨架中更多的動作特征,定義肢體子圖和組合肢體子圖分別表示肢體的空間結構和肢體之間內在關聯性關系,對它們分別進行時空卷積,得到每個肢體的動作特征和肢體之間的關聯性關系特征,通過實驗證明本模型的有效性。本模型在兩個3D數據集上得到了驗證,進一步研究將本模型應用在2D數據集進行動作識別,例如COCO姿態數據集。未來,本文提出的動作識別方法可應用于考場異常行為分析中,識別考生更多的動作特征。2.2 子圖劃分方法




2.3 基于肢體子圖的時空圖卷積




3 實驗對比分析
3.1 實驗配置與數據集
3.2 實驗結果分析


4 結論