張 艷,肖文琛,張 博
(北華航天工業學院 計算機學院,河北 廊坊 065000)
人體動作識別是計算機視覺領域中一項復雜的任務,在智慧醫療、運動賽事、監控、人機交互等方面有著重要的社會應用價值[1]。人體動作識別根據數據源的不同可以分為基于RGB圖像[2]的人體動作識別算法和基于骨架信息[3]的人體動作識別算法。基于RGB圖像的人體動作識別算法魯棒性差且易受外界環境的影響。相反,基于骨架信息的人體動作識別算法具有泛化能力強、不易受外界環境影響等優點。根據特征提取方式的不同,人體動作識別可以分為基于深度學習的人體動作識別算法和基于傳統的機器學習的人體動作識別算法。基于深度學習的人體動作識別算法泛化能力相較于傳統的機器學習的人體動作識別算法有了很大的提高。基于深度學習的人體動作識別算法可以分為基于CNN(Convolutional Neural Networks)、基于RNN(Recurrent Neural Network)的人體動作識別算法[4]。比如Chen等人[5]提出了一種基于序列的視點不變的方法來進行特征編碼,并且將特征編碼后的RGB圖像通過多流CNN進行識別。文獻[6]提出了基于注意力機制的RNN網絡,分別賦予了不同幀之間骨骼節點不同的權重,進一步提高了動作的識別率。上述方法一定程度上提高了識別率,但是上述方法都是將骨架數據表示二維數據[7],不能完全表達骨骼關節點的時空信息。因此,從以上背景出發,該文提出了一種基于注意力機制的AGCNS(Attention Graph Convolutional Networks)與CNN相結合的雙流人體動作識別算法。主要創新點如下:提出了基于注意力機制的圖卷積網絡(AGCNS),通過AGCNS提取骨架信息的時空特征;結合骨架運動圖進行時空特征的補充,提出了基于雙流骨架信息的人體動作識別方法。
隨著微軟Kinect度相機的問世和OpenPose[8]算法的出現,提取人體動作的骨架信息不再是一件困難的事情。2012年2月,微軟正式發布了適合Windows平臺的Kinect版本,并提供了Kinect開發包。通過Kinect開發包,配備Kinect相機可以提取到人體運動的三維骨架信息,這為基于三維骨架信息的動作識別提供了數據源,基于三維骨架信息的人體動作識別得到了進一步發展。OpenPose人體姿態識別算法是一種有效檢測圖像中多人二維姿勢的方法,是由美國卡耐基梅隆大學開發的開源庫,可以實現實時的人體動作姿態的估計。該方法在首屆COCO2016關鍵點挑戰賽中排名第一,在性能和效率方面都大大超過了之前的最新結果,具有極好的魯棒性。通過OpenPose進行姿態估計并提取骨架信息,為基于人體骨架信息動作識別奠定了基礎。
神經網絡是由大量人工神經元構成的、按照不同連接方式構建的網絡。而卷積神經網絡是神經網絡中一種應用比較廣泛的網絡,主要應用在圖像識別領域。卷積神經網絡的結構主要可以分為三層:卷積層、池化層、全連接層。其中卷積層的作用是提取特征;池化層可以將無用的信息過濾掉,同時可以保留最顯著的特征,這樣大大減少了計算的復雜性;全連接層是一個完全連接的神經網絡,主要作用是分類。
由何愷明等人提出的ResNet[9],解決了深度網絡退化問題,直到今天依舊有著廣泛的應用場景。ResNet的殘差結構既不會增加參數,也不會增加模型復雜度。某種情況下,當上一層的輸出結果達到最優時,在大多數情況下,恒等映射往往無法達到最優,這時就需要通過殘差模塊進行修正。ResNet通過學習去擬合相對于上一層輸出的殘差,實驗表明,ResNet可以不斷地增加網絡的深度提高網絡的性能,并且參數量更少,在眾多數據集都有非常好的表現。
傳統的CNN在圖像識別領域有較大的提升,CNN的研究對象往往在有著規則空間結構的正方形柵格數據,比如圖片數據,這些數據可以通過二維矩陣表示,很適合CNN進行處理。但是,現實生活中很多數據并不是有規則的空間結構,比如分子結構、腦神經結構以及人體骨骼點之間的連接關系。這些不規則的空間結構很難通過傳統的CNN進行處理,這時可以通過圖卷積網絡來進行處理。圖卷積的流程可以分為三步:第一步,將每個節點自身的特征信息經過轉換發送給鄰居節點;第二步,將每個圖節點的鄰居節點的信息進行聚合;第三步,將聚合后的信息做非線性變換,增加模型的表征能力。
圖卷積網絡的核心是圖卷積操作,圖卷積類似于CNN網絡的卷積操作,作用是進行特征提取,具體公式為:
(1)

雙流網絡是結合了圖卷積神經網絡和卷積神經網絡,其中圖卷積網絡用來提取時間空間特征,卷積神經網絡用來提取時空特征作為圖卷積網絡的補充。
提出的模型整體結構如圖1所示。

圖1 模型整體結構
首先,構建骨架信息時空圖,然后將時空信息圖送入基于注意機制的AGCNS,得到動作預測結果。其次,將骨架信息特征編碼為骨架信息運動圖,將生成的RGB圖像送入ResNet18中,得到動作預測結果。最后,將兩個預測結果融合得到動作的預測類別。具體的,設AGCNS預測結果為yAGCNS,ResNet預測結果為yResNet,將雙流的預測結果按權重進行相加,即y=yAGCNS+a*yResNet,通過調參得到最好的識別效果。
骨架序列是連續時間內二維骨架信息或三維骨架信息的集合。人體骨架可以看作為一個圖的拓撲結構,在骨架信息的空間拓撲圖結構加入時間信息就構成了時空信息圖。本節遵循Yan等人[10]提出的動態骨架模型來構建時空骨架圖,它可以通過自動學習骨架數據中的時空信息來克服以往方法的局限性。首先構建無向時空圖,記為G=(V,E),其中V是節點集合,V={vti|t=1,2,…,T,i=1,2,…,N},vti表示一段時間內所有骨骼點的時空信息,其中T表示人體運動的總幀數,N表示人體骨架中的所有關節點的數量;E是邊集,由E1和E2組成,其中E1表示同一幀內骨骼點的連接,具體E1={vtivtj|(i,j)∈H},其中H表示同一幀內所有骨架點的集合,E2表示不同幀之間同一骨架點之間的連接,E2={vtiv(t+1)i}。
根據已定義好的圖G,在空間維度上基于圖形的卷積實現不像2D或者3D卷積那樣簡單,GCN網絡的圖卷積網絡定義的具體公式為:
(2)
其中,fin表示輸入特征,其維度為(C,V,T),fout表示輸出特征,A表示單幀人體骨架的連接關系的鄰接矩陣,單位矩陣I表示關節自連接,將多個輸出通道的權重向量疊加,形成權重矩陣W,Λ表示對角矩陣,具體公式為:
(3)
為了實現可學習邊緣重要性加權,對于每個鄰接矩陣,將其與一個可學習的權重矩陣M相伴。將等式中的矩陣(A+I)*M,其中*表示兩個矩陣之間的元素乘積。上述公式可以被替換成:
(4)
注意力機制是目前常用的數據處理方法,廣泛用在圖像識別、自然語言處理等不同的學習任務當中。人體動作識別過程中,不同幀之間的同一關節點的運動有一定的關聯性,時間注意力機制,分別賦予不同幀之間不同關節點的時間權重,可以提高時空圖卷積網絡特征提取的能力。該時間注意力機制的結構如圖2所示,具體公式為:
f1=σ(Mt(AvgPool(fin)))
(5)
其中,輸入fin特征為C×T×N,AvgPool表示平均池化,Mt表示以一維卷積操作,σ表示Sigmoid激活操作。一維卷積操作之后,通過一個Sigmoid函數獲得0~1之間歸一化的權重得到f1,其特征大小為1×T×1,然后將f1和fin相乘并加入殘差機制生成fout。

圖2 時間注意力機制
人體動作識別過程中,相同幀之間的同一關節點的運動有一定的關聯性,同時不同幀的不同關節點之間也存在著一定關聯性。空間變化程度的不同會影響動作識別的過程,因此本節引入了空間注意力機制。分別賦予不同關節點不同的權重,幫助時空圖卷積網絡更好地進行特征提取。該空間注意力機制結構和時間注意力機制結構類似,輸入和輸出特征相同。
通道注意力機制的目的是給不同的通道賦予不同的權重,增強模型的表征能力。具體結構如圖3所示。

圖3 通道注意力機制
首先,將輸入fin特征(C×H×W)進行壓縮操作,從空間維度來進行特征壓縮,生成f1將特征變成一個1×1×C的特征,得到的特征向量具有較強的全域性感受野,并且輸出的通道數和輸入的特征通道數相匹配,表示在特征通道上響應的全域性分布。具體公式為:
(6)
其中,vc∈RH×W,全局平均池化操作,從而使其具有全局的感受野,使得網絡低層也能利用全局信息通過此步驟得到。其次是激勵操作,通過加入參數k1和k2為每個特征通道賦予不同的權重,并通過Sigmoid進行歸一化操作,得到0和1之間的權重f2,其特征大小為1×1×C,然后將f2和fin相乘并加入殘差機制生成f1。具體公式為:
f2=σ(k2δ(k1f1))
(7)

結合2.2節和2.3節,本節引入了注意力機制,提出的AGCNS模型基本單元的結構如圖4所示。數據輸入分別經過空間卷積層、歸一化處理、激活處理、時間注意力層、空間注意力層、通道注意力層、時間卷積層,歸一化處理、激活處理和失活處理得到輸出特征,然后將原始輸入特征和經過時空卷積后的輸出特征相加作為AGCNS模型單元的輸出。空間卷積層的作用是提取空間特征信息,時間卷積層的作用是提取時間信息。其中,時間注意力層、空間注意力層以及通道注意力層順序連接,并以殘差結構的形式置于空間卷積層和時間卷積層的中間。

圖4 AGCNS的基本單元
基于注意力機制AGCNS模型結構由上述9個基本單元構成,輸入數據的通道為3,前三個基本單元的輸出通道為64,步長為1,中間三個基本單元的輸出通道為128,最后三個基于單元的輸出通道為256。經過9個基本單元后,將輸出的特征圖送入最大池化層和一個全連接層,最后經過SoftMax函數處理得到預測結果。
遵循文獻[11]中的方法,該文將骨架信息轉換為骨骼運動圖骨架信息運動圖,從而更好地提取時空信息特征。該運動圖包含骨架的運動信息。首先,將深度第一樹遍歷順序應用于骨架關節,以生成預定義的骨架鏈順序J,進而可以有效地保留原始骨架關節的空間信息。然后,將預定義的骨架鏈順序J按照時間序列T的逐行堆疊得到矩陣M。其中矩陣M的大小為J×T×3,T為骨架信息序列的總幀數,3表示三維通道。根據矩陣M計算運動結構,具體公式為:
NM,t=MJ,t+d-MJ,t
(8)
其中,每個矩陣NM,t由兩個相差d幀的矩陣M計算差值而得,其大小為J×(T-d)×3。通過使用所提出的運動結構,建立了兩種不同的表示:一種基于關節運動的大小,另一種基于關節運動的方向。使用以下公式計算兩種表示:
(9)
(10)
(11)
(12)
(13)

(14)

實驗是在公共大型數據集NTU RGB+D60[12]上進行測試與驗證。NTU RGB+D60包含60個動作類型,共56 880個樣本,其中有40類為日常行為動作,9類為與健康相關的動作,11類為雙人動作。該數據集通過3臺不同角度的KinectV2傳感器采集獲得,采集的數據形式包括深度信息、3D骨骼信息、RGB信息以及紅外序列。這些樣本都是由40名志愿者在特定的環境下進行采集的。其中每一幀骨架序列中的骨架序列包含25個關節,并且提供的注釋給出了由Kinect深度傳感器檢測到的攝像機坐標系中的3D關節位置(x,y,z)。數據集按照訓練集和測試集劃分的不同方式分為兩類:
(1)交叉對象(Cross-Subject,CS):訓練集包括40 320個樣本,測試集包括16 560個樣本。其中,訓練集來自同一個志愿者的動作,測試集來自剩余志愿者的動作。
(2)交叉視角(Cross-View,CV):訓練集包括37 920個樣本,測試集包括18 960個樣本。其中,訓練集來自攝影機2號和3號,而測試集都來自攝影機1號。
遵循以上基準,驗證所提算法的有效性。
實驗通過Pytorch深度學習框架進行驗證,并在Ubuntu18.04系統,TeslaV100-PCIE、顯存為32 GB的服務器上進行實驗。將雙流網絡在一臺服務器上分別進行訓練,然后將預測結果融合得到最終的輸出結果。
其中ResNet18包含18層,17層卷積網絡和1層全連接網絡,在輸出通道數為64、步幅為2的7×7卷積層后,接步幅為2的3×3的最大池化層。ResNet18使用4個由殘差塊組成的模塊,每個模塊使用若干個同樣輸出通道數的殘差塊。AGCNS與ResNet18的初始學習率和dropout分別設置為0.001和0.5,epoch為100,分類器都為SoftMax,訓練批次和測試批次設置為64。
該文采用召回率和準確率作為模型評價的指標,召回率的具體公式為:
(15)
準確率的具體公式為:
(16)
其中,TP,TN,FP,FN分別代表真正例、真負例、假正例、假負例的樣本個數。文中的混淆矩陣通過計算每個類別的召回率來衡量模型的效果,即混淆矩陣中對角元素表示預測值占真實值的百分比,通過混淆矩陣可以有效評估算法模型的視圖變化和嘈雜等骨架挑戰問題。
首先,按照預設的參數訓練GCNS網絡。為了觀察文中算法在NTU RGBD+60上的分類結果,采用混淆矩陣進行評估。混淆矩陣可以很清晰地觀察文中模型在數據集各種不同動作的識別效果。作為后續實驗結果的對比,且考慮到圖像清晰的問題,給出初始化的GCNS的第10到第30類動作混淆矩陣,如圖5所示。識別結果中,在21類動作中,有11類動作的識別率在90%及以上,8類動作識別率大于95%甚至接近100%,有13類動作識別率在90%以下,有5類動作識別率在80%以下,分別為10-鼓掌,11-讀書,12-寫字,16-穿鞋,30-在鍵盤上打字。原因是極其相似的動作對識別率會產生一定的影響,比如讀書和寫字、在鍵盤上打字和玩手機,這些動作確實很難區分。

圖5 GCNS的混淆矩陣
其次,為驗證不同注意力機制對于GCNS的影響,進行了交叉實驗,實驗結果如表1所示。發現通過改進的基于注意力機制的GCNS一定程度上提高了識別率。相比于初始化GCNS,加入通道注意力機制的GCNS在Cross-Subject和Cross-View情況下識別率分別提高了2.5百分點和2.5百分點,加入空間注意力機制的GCNS在Cross-Subject和Cross-View情況下識別率分別提高了1.9百分點和1.8百分點,加入時間注意力機制的GCNS在Cross-Subject和Cross-View情況下識別率分別提高了2.0百分點和2.0百分點,加入時間、空間、通道注意力機制的GCNS在Cross-Subject和Cross-View情況下識別率分別提高了3.8百分點和3.1百分點,表明加入以上三種注意力機制的GCNS可以有效提高動作識別率。該文將加入三種注意力機制的GCNS簡稱為AGCNS。

表1 注意力機制對GCNS網絡的影響
基于AGCNS和ResNet18網絡中構成基于雙流骨架信息的人體識別算法,如圖6所示,給出第10到第30類動作的混淆矩陣。21類動作中,有16類動作的識別率在90%以上,有5類動作識別率在90%以下。16類動作當中有9類動作識別率大于95%甚至接近100%,有7類動作識別率在90%到95%之間;5類動作識別率在90%以下的分別為10-鼓掌、11-讀書、12-寫字、29-玩手機、30-在鍵盤上打字;與初始化GCNS相比,識別率分別提高了18百分點,21百分點,17百分點,3百分點,11百分點。實驗說明文中算法可以較好地區分相似動作且可以有效提高動作識別率。雖然有5類動作的識別率在90%以下,原因是極其相似的動作對識別率會產生一定的影響,但是文中算法依然有著很強的泛化能力,說明基于注意力機制的AGCNS和ResNet18雙流人體動作識別方法在缺乏背景信息的情況下對于相似動作有著較好的識別效果。

圖6 文中算法混淆矩陣
最后,為了驗證算法的識別效果,將文中算法與國內外相關算法在NTU RGB+D60數據集上進行了對比。由于該數據集的約束性質,在訓練文中模型時沒有任何數據增強。遵循訓練集和測試集劃分方式的不同分別進行不同的實驗,分別驗證Cross-Subject和Cross-View識別性能。對比結果如表2所示,相比其他算法,提出的雙流動作識別方法在該數據集上效果更好,在NTU RGBD+60數據集上Cross-Subject和Cross-View的識別率分別達到了86.5%和93.5%。

表2 不同算法在NTU RGBD+60數據集上準確率的對比
最后,為了更好地評價模型的訓練速度,在特定的實驗環境下,通過100個epoch的訓練時間來衡量模型運算速度。如表3所示,文中算法的訓練時間相比于ST-GCN的訓練時間有了進一步的減少,說明文中算法在識別效率上有了一定的提升。
針對當前基于二維圖像的人體動作識別算法魯棒性差、識別率不高等問題,引入了注意力機制和骨架信息運動圖,提出一種基于AGCNS和CNN相結合的雙流骨架信息人體動作識別方法。與傳統基于RGB圖像的人體動作識別方法不同,該文從人體骨架信息提取動作的時間與空間特征,利用加入注意機制的AGCNS網絡提取骨架信息的時間和空間特征,同時通過ResNet18提取骨架信息運動圖的時空特征,最后將兩個網絡進行融合,增強了骨架信息的表征能力,有效提高了人體動作的識別精度。該算法在NTU-RGBD+60數據集上取得了比較好的效果,Cross-Subject和Cross-View的識別率分別為86.5%和93.5%,相比其他同類算法,動作識別率有了一定的提高,同時模型訓練也有一定的提升。