趙俊男,佘青山,孟 明,陳 云
(杭州電子科技大學(xué)自動化學(xué)院,浙江杭州 310018)
人類行為的識別是計算機視覺中一項基本又富有挑戰(zhàn)性的任務(wù),促進了許多應(yīng)用的產(chǎn)生,如人機交互、異常行為檢測等[1].與傳統(tǒng)利用RGB 圖片或視頻流進行動作識別的方法相比,基于骨架的動作識別不受背景雜波、光照變化等限制,對目標動作的表示更加健壯.
近年來,研究人員充分挖掘骨架數(shù)據(jù)的圖結(jié)構(gòu)信息,開始將圖卷積網(wǎng)絡(luò)推廣到骨架圖上,來進行動作識別任務(wù).Yan等[2]提出了基于圖的動態(tài)骨架建模通用公式,提出時空圖卷積(Spatio-Temporal Graph Convolutional Networks,ST-GCN)網(wǎng)絡(luò),應(yīng)用于骨架動作識別.ST-GCN 采用空間圖卷積捕捉骨骼數(shù)據(jù)的空間信息,利用時間卷積在時間維度上對數(shù)據(jù)建模,獲得了更好的識別效果.而Si 等[3]發(fā)揮了長短時記憶網(wǎng)絡(luò)(Long Short Time Memory,LSTM)強大的序列建模性能,并將空間圖卷積操作嵌入LSTM 的門計算中,提出了注意力增強圖卷積LSTM 網(wǎng)絡(luò)(AGC-LSTM),取得了比ST-GCN更好的效果.Lei 等[4]則更多地關(guān)注骨骼數(shù)據(jù)蘊含的二階信息,包括骨骼的長度和方向,提出了多流注意增強型自適應(yīng)圖卷積網(wǎng)絡(luò)(MS-AAGCN).該方法增加了骨骼圖構(gòu)造模型的靈活性,增強了模型的泛化能力,顯著提高了識別精度.然而,上述算法為了達到更高的識別精度,采取疊加多層網(wǎng)絡(luò)或者使用時間維度建模能力強的模塊,會導(dǎo)致模型在訓(xùn)練和測試中更耗時.因此,以上算法仍然存在模型推理速度慢、計算復(fù)雜度高等問題,值得進一步研究.
最近,Lei 等[5]提出了一種簡單循環(huán)單元(Simple Recurrent Unit,SRU)結(jié)構(gòu),具有比LSTM 更高的并行性和更快的推理速度.She 等[6]提出一種全局上下文注意力時空SRU 模型(GCA-ST-SRU).該方法首先通過SRU單元來構(gòu)建模型,以克服LSTM 推理速度慢等的問題.但是該方法未考慮骨骼間的結(jié)構(gòu)聯(lián)系,而且對數(shù)據(jù)的利用比較單一.
為了解決上述方法的不足,本文提出了一種新的多流空間注意力圖卷積SRU 網(wǎng)絡(luò)(MSAGC-SRU)方法.首先,用圖卷積算子替換SRU 模型中的單元結(jié)構(gòu)門的全連接計算,提出圖卷積SRU(GC-SRU)方法.同時對數(shù)據(jù)的空間和時間域進行建模.然后,為了加強關(guān)節(jié)間的區(qū)分性,進一步引入了空間注意力網(wǎng)絡(luò),構(gòu)建空間注意力圖卷積SRU(SAGC-SRU)網(wǎng)絡(luò),使模型更加關(guān)注重要的關(guān)節(jié).最后,受MS-AAGCN 方法中多流數(shù)據(jù)輸入方式的啟發(fā),進一步提出一種簡單高效的多流數(shù)據(jù)融合方式,該方式將多數(shù)據(jù)流一次輸入、同時訓(xùn)練,能顯著減少運行時間.最后在兩個公共數(shù)據(jù)集上的實驗表明,所提方法在識別精度和計算效率間達到了良好的平衡.
基于骨架的動作識別是對骨架序列進行建模,并學(xué)習(xí)序列的時間動力學(xué)信息.本文提出一種端到端的多流空間注意力圖卷積SRU 網(wǎng)絡(luò)(MSAGC-SRU),用于骨架動作識別任務(wù),其網(wǎng)絡(luò)架構(gòu)如圖1所示.
圖1 MSAGC-SRU網(wǎng)絡(luò)架構(gòu)
對于骨架序列,本文首先通過多流數(shù)據(jù)融合方法,得到多流融合數(shù)據(jù).然后,設(shè)計三層SAGC-SRU 網(wǎng)絡(luò)來模擬時空特征,如圖2 所示.其中,圖卷積算子能夠捕捉骨骼數(shù)據(jù)的空間結(jié)構(gòu)信息和時間動態(tài)的判別特征.同時,在SAGC-SRU 層的輸出位置引入空間注意力網(wǎng)絡(luò),增加了對重要關(guān)節(jié)點的關(guān)注度.參考Si等人[3]的設(shè)置,本文在SAGC-SRU 數(shù)據(jù)輸入時,在時間維度上進行平均池化操作.能夠在時間域上壓縮輸入數(shù)據(jù)和參數(shù)的量,增加SAGC-SRU 頂層的時間感受野,同時減小網(wǎng)絡(luò)過擬合的可能性,并加快了模型的推理速度.最后是全連接層,實現(xiàn)動作的分類任務(wù).
圖2 GCN可視化過程
骨架數(shù)據(jù)的一階(關(guān)節(jié)點坐標)和二階信息(骨骼的方向和長度)[4]以及它們的動態(tài)信息都是區(qū)分不同動作的重要信息.因此,有必要對骨架數(shù)據(jù)的多種模式建模.受到Lei等[4]相關(guān)工作的啟發(fā),本文使用4種模式的數(shù)據(jù)流,分別為以原始關(guān)節(jié)點坐標為輸入的節(jié)點流,以關(guān)節(jié)點空間坐標的差分為骨骼流,以及基于節(jié)點流和骨骼流數(shù)據(jù)在時間維度上的差分得到的動態(tài)數(shù)據(jù)流.
一般定義靠近骨架重心的關(guān)節(jié)點為父關(guān)節(jié)i,遠離重心的為子關(guān)節(jié)j,在第t幀的骨架中,設(shè)父關(guān)節(jié)vi,t=(xi,t,yi,t,zi,t)和子關(guān)節(jié)vj,t=(xj,t,yj,t,zj,t),則骨骼可表示為
通過式(1)對原始的節(jié)點流數(shù)據(jù)處理,可以得到骨骼流數(shù)據(jù).設(shè)vi,t=(xi,t,yi,t,zi,t)為第t幀的關(guān)節(jié),vi,t+1=(xi,t+1,yi,t+1,zi,t+1)為第t+1 幀的關(guān)節(jié),則兩幀間節(jié)點的動態(tài)流信息可以表示為
本文沒有采用將各流數(shù)據(jù)依次訓(xùn)練后,再將訓(xùn)練結(jié)果融合的方法.而是在一次訓(xùn)練中同時輸入多流融合數(shù)據(jù),減少實驗次數(shù),減少訓(xùn)練時間.如圖1 的多流數(shù)據(jù)融合部分所示,具體步驟如下:
步驟1:原始骨架序列數(shù)據(jù)為節(jié)點流數(shù)據(jù),經(jīng)過上述骨骼的定義式(1),得到骨骼流數(shù)據(jù);
步驟2:將Step1 獲得的兩流數(shù)據(jù)拼接后,通過全連接層,將信息編碼成高維向量,作為數(shù)據(jù)的融合特征;
步驟3:通過步驟Step2 得到的兩流融合數(shù)據(jù),獲取其動態(tài)流數(shù)據(jù).再和它拼接后經(jīng)過全連接層和ReLU激活函數(shù),得到目標的多流融合數(shù)據(jù).
圖卷積神經(jīng)網(wǎng)絡(luò)(Graph Convolutional Network,GCN)是一種通用而有效的圖結(jié)構(gòu)數(shù)據(jù)學(xué)習(xí)表示框架[3].在基于骨架的動作識別中,設(shè)? t={vt,εt}表示第t幀的人體骨骼圖,vt={vt1,vt2,...,vtN}是N個關(guān)節(jié)點的集合,則εt={(vti,vtj):vti,vtj∈vt,vti~vtj}可以表示成骨骼邊的集合,vti~vtj表示節(jié)點i和節(jié)點j是無向邊連接.鄰接矩陣At可以通過εt指定:
在一個骨架圖上,定義節(jié)點vti的鄰集B(vti)={vtj|d(vtj,vti)≤D},其中d(vtj,vti)表示從節(jié)點vti到vtj的任何路徑的最小長度.可以給出在點vti上的圖卷積公式:
其中,X(vtj)表示節(jié)點vtj的特征,W(·)是一個權(quán)重函數(shù),vtj為與vti距離為1 的相鄰節(jié)點.?(·)是一個映射函數(shù).因為鄰集B(vti)的節(jié)點數(shù)量是變化的,權(quán)重函數(shù)數(shù)量是固定的,所以需要將所有相鄰的節(jié)點映射到一個固定標簽的子集[4]中,每個子集都有一個唯一的關(guān)聯(lián)權(quán)重向量.本文參考了ST-GCN[2]的映射策略,將B(vti)分為三個子集:第一個子集為vtj本身,第二個為空間位置上比vtj更靠近骨架重心的鄰點集合,第三個則為更遠離重心的鄰點集合,Zti(vtj)即為對應(yīng)子集個數(shù).
引入鄰接矩陣,圖卷積可以表示為:
其中,k∈{1,2,…,k}是根據(jù)映射策略得到的子集的固定標簽.Ak是標簽k空間構(gòu)型中的鄰接矩陣是一個度矩陣.為了更好地理解圖卷積在骨架序列數(shù)據(jù)中的計算過程,圖2 給出可視化形式.圖中c表示骨架數(shù)據(jù)的輸入通道數(shù),t是數(shù)據(jù)的序列長度,v是骨架數(shù)據(jù)中的關(guān)節(jié)點數(shù)量,h表示輸出通道.
本文選擇GCN 與SRU 結(jié)合.SRU 是一種簡單的循環(huán)單元模型[7],它解決了因反向傳播引起的梯度消失問題[8],并通過在門輸入中隱去前一時刻的隱藏狀態(tài)實現(xiàn)計算上的并行性[9],具有更快的訓(xùn)練速度和推理速度.從Di等人[10]的思路來看,SRU需要堆疊更多層,才能獲得與單層LSTM 相似的性能.本文將SRU 應(yīng)用到骨架動作識別中,需要對SRU進行改進.
本文使用空間注意力圖卷積SRU(SAGC-SRU),對骨架序列數(shù)據(jù)進行時空域建模[11],結(jié)構(gòu)如圖3所示.將SRU 的輸入門、遺忘門、重置門的全連接計算替換成圖卷積計算,捕獲數(shù)據(jù)的空間信息,并在隱藏狀態(tài)引入空間注意力機制,來關(guān)注不同重要程度的關(guān)節(jié)點.
圖3 SAGC-SRU模型結(jié)構(gòu)
SAGC-SRU 的輸入xt、隱藏狀態(tài)和存儲狀態(tài)Ct都是圖結(jié)構(gòu)數(shù)據(jù).其功能定義如下:
其中,AveragePooling 表示平均池化操作,使用Pytorch中的F.avg_pool1d 函數(shù)對輸入xt進行平均池化.*表示圖卷積算子表示W(wǎng)和的圖卷積.⊙表示哈達瑪積,σ(·)是Sigmoid激活函數(shù),g(·)表示tanh激活函數(shù),fatt(·)是選擇關(guān)鍵節(jié)點信息的空間注意力網(wǎng)絡(luò).引入注意力機制后,輸出Ht能增強關(guān)鍵點的信息,且不會削弱非關(guān)鍵點的信息,來保持空間信息的完整性[3].
一般情況下,不同動作涉及到不同關(guān)節(jié)點,不同關(guān)節(jié)點的重要程度就會不同.由此,本文提出一種空間注意力模型(Spatial Attention Model)來區(qū)分節(jié)點的重要程度,模型結(jié)構(gòu)如圖4 所示.該模型引入了軟注意力機制[12],為幀內(nèi)每個關(guān)節(jié)點分配一個空間注意權(quán)重,使得模型能夠自適應(yīng)地將注意力集中在某些關(guān)節(jié)上.
圖4 空間注意力網(wǎng)絡(luò)
空間注意力網(wǎng)絡(luò)的輸入是圖卷積SRU(GC-SRU)的隱藏狀態(tài)它含有骨架動作序列的時態(tài)信息和豐富的空間結(jié)構(gòu)信息,有利于關(guān)鍵關(guān)節(jié)點的選擇[13].首先將每個節(jié)點的輸出信息通過一層全連接層和ReLU 激活函數(shù),聚合成一個查詢向量
其中,αt=(αt1,αt2,…,αtN)表示節(jié)點的注意力分數(shù).全連接層防止了網(wǎng)絡(luò)復(fù)雜化也提升了模型的泛化能力,最后利用激活函數(shù)得到注意力分數(shù).
經(jīng)過最后一層SAGC-SRU后,本文將所有節(jié)點和注意力分數(shù)加權(quán)后的特征聚合得到Ft,將每個時間步長的聚合特征Ft轉(zhuǎn)換成C類的分數(shù)ot,其中ot={ot1,ot2,…,otC},i類的預(yù)測可以表示成式(14):
本文采用下面的損失函數(shù)來監(jiān)督所建模型:
其中,Tj表示第j層SAGC-SRU上的時 間步長,y={y1,y2,…,yC}表示真實標簽,與預(yù)測標簽進行對比.λ和β是權(quán)重衰減系數(shù),平衡了正則化項的作用,減輕了反向傳播中的梯度消失和過擬合現(xiàn)象.本文分別設(shè)置λ和β為0.01和0.001.
Northwestern-UCLA 數(shù)據(jù)集包含1 494 個樣本,分別由三臺Kinect 攝像頭同時從三個不同的視角拍攝.一共涵蓋10 個動作類別,分別是單手撿起、雙手撿起、丟垃圾、四處走動、坐下、起立、穿、脫、扔、搬運.本實驗采用了文獻[14]中的評估方案:使用前兩個攝像機視角的樣本作為訓(xùn)練集,另一個視角的樣本作為測試集.
NTU RGB+D 數(shù)據(jù)集包含56 880 個樣本[12],包含60種行為,包含了日常、相互和健康相關(guān)的行為.對于該數(shù)據(jù)集,本文采用跨受試者(Cross Subjects,CS)和跨視角(Cross Views,CV)評估協(xié)議.在CS 協(xié)議中,由20 名受試者采集的數(shù)據(jù)構(gòu)成訓(xùn)練集,其余20 名受試者用于測試.對于CV 協(xié)議中,前兩個視角捕獲的樣本用于訓(xùn)練,另一個視角的數(shù)據(jù)用作測試.
為了評估算法在分類任務(wù)的有效性,本文使用主流的評估指標:分類準確率(Accuracy)和算法的浮點運算數(shù)(FLOPs).在Northwestern-UCLA 數(shù)據(jù)集的實驗中,實驗增加了訓(xùn)練1 000次訓(xùn)練和測試樣本的耗時統(tǒng)計.
根據(jù)文獻[15]提供的計算方法,F(xiàn)LOPs值計算與數(shù)據(jù)集的動作類別C、骨節(jié)點數(shù)量N、骨架序列長度T以及網(wǎng)絡(luò)層類型等有關(guān).以本文提出的MSAGC-SRU 模型和Northwestern-UCLA Dataset 為例,其中N=20,T=52.該模型的FLOPs 計算包含三部分:多流數(shù)據(jù)融合部分,三層SAGC-SRU網(wǎng)絡(luò)層和最后的全連接分類層.
首先是多流數(shù)據(jù)融合部分,有兩層的全連接層.根據(jù)實驗的超參數(shù)設(shè)置,它們的FLOPs 分別為2×3×256×N×T和2×C2×N×T,其中C=512.然后是三層SAGC-SRU.每一層的SAGC-SRU 由SRU、圖卷積、空間注意力機制三部分FLOPs 相加得到.SRU 的FLOPs 可表示為(3×2C2)×N×T.圖卷積的計算過程已通過圖2可視化,其將骨骼節(jié)點按分區(qū)規(guī)則分為三部分的圖卷積操作.代碼實現(xiàn)中,使用了Pytorch 中的torch.matmul函數(shù),可視為矩陣相乘的操作.圖卷積部分的FLOPs可表示為3×(NC2+N2C)×T×2.空間注意力部分使用了全連接層,F(xiàn)LOPs 可表示為2×2×C2×N×T.因為在時間維度上使用了平均池化,三層網(wǎng)絡(luò)的T分別為26,13,7,C=512.最后一層是全連接層,F(xiàn)LOPs 為2×C×10,其中C=512.在計算完每部分的FLOPs 后,將其相加后乘以數(shù)據(jù)集包含的人數(shù)即為模型的FLOPs.
實驗使用Northwestern-UCLA和NTU RGB+D兩個公共數(shù)據(jù)集,將抽取每個骨架序列中的固定長度T,其中Northwestern-UCLA數(shù)據(jù)集的T設(shè)置為50,NTU RGB+D數(shù)據(jù)集設(shè)為100.訓(xùn)練使用Adam 優(yōu)化器來優(yōu)化網(wǎng)絡(luò)[16],Dropout 設(shè)為0.5,初始學(xué)習(xí)率分別設(shè)為0.001 和0.01,weight-decay 為1e-5,訓(xùn)練的批次大分別設(shè)為32 和64.網(wǎng)絡(luò)設(shè)置三層SAGC-SRU 網(wǎng)絡(luò),實驗均在Pytorch 框架上進行,GPU為2塊NVIDIA GTX 1080ti.
3.3.1 Northwestern-UCLA Dataset
為了驗證本文所提方法的有效性,首先在Northwestern-UCLA 數(shù)據(jù)集上與同領(lǐng)域的其他先進方法進行對比.這里將要比對的方法包括:基于人工提取特征的方法[17,18]、CNN 和RNN 方法[19,20]、改進型LSTM 方法[3,21].結(jié)果如表1 所示.較于傳統(tǒng)的手工提取特征方法和經(jīng)典的RNN、CNN 方法,本方法在分類精度方面優(yōu)勢明顯.本文提出的MSAGC-SRU 方法與Ensemble TSLSTM[21]方法相比,在分類精度上提高了3.9%,僅僅比AGC-LSTM 方法低了0.2%,但是FLOPs 值低于AGCLSTM 的1/2.初步說明,MSAGC-SRU 方法在大大減小計算復(fù)雜度的同時,能夠達到良好的分類精度.
表1 Northwestern-UCLA 數(shù)據(jù)集上實驗結(jié)果比較
為了說明本方法中采用的多流數(shù)據(jù)融合方法和空間注意力機制在實驗中的有效性,再進行圖卷積、數(shù)據(jù)融合方式和空間注意力機制的消融實驗,以SRU 作為基線方法,并與AGC-LSTM 方法進行比較,實驗結(jié)果如表2所示.以下實驗方法將主要用于消融實驗對比:
(1)SRU:標準的3層SRU堆疊網(wǎng)絡(luò);
(2)GC-SRU:3層GC-SRU網(wǎng)絡(luò),輸入單流數(shù)據(jù);
(3)MSGC-SRU:3 層的GC-SRU 網(wǎng)絡(luò),輸入多流融合數(shù)據(jù);
(4)SAGC-SRU:3 層SAGC-SRU 網(wǎng)絡(luò),輸入單流數(shù)據(jù);
(5)MSAGC-SRU:3 層的SAGC-SRU 網(wǎng)絡(luò),輸入多流融合數(shù)據(jù).
表2 給出了本文方法在Northwestern-UCLA 數(shù)據(jù)集上的消融實驗結(jié)果.只加入圖卷積運算的GC-SRU 方法的分類準確率為84.8%,比單純的SRU 提高了3.5%,說明圖卷積的應(yīng)用提高了分類性能.當GC-SRU 使用多流融合數(shù)據(jù)時,其分類結(jié)果達到了90.3%,在單流輸入的基礎(chǔ)上提高了5.5%.在此基礎(chǔ)上加入空間注意力機制,得到的SAGC-SRU以及MSAGC-SRU,分類精度分別為90.1%和93.1%.說明空間注意力機制同樣帶來比較大的性能提升.消融實驗的結(jié)果表明,MSAGC-SRU方法中使用的圖卷積、多流數(shù)據(jù)融合以及空間注意力機制都能提升模型的分類性能.
表2 Northwestern-UCLA 數(shù)據(jù)集上消融實驗結(jié)果
下面,本文獲取算法的訓(xùn)練和測試時間,能直觀地看出MSAGC-SRU 的輕量級優(yōu)勢.表3 給出不同方法連續(xù)訓(xùn)練和測試1 000次的耗時.每次測試時只輸入一個樣本,并重復(fù)5 次實驗,取測試時間的平均值.可以看出,SRU 的訓(xùn)練和測試速度是最快的,使用多流融合模塊、圖卷積運算和注意力機制都會增加模型的訓(xùn)練和測試耗時.與AGC-LSTM 方法相比,提出的MSAGCSRU 方法在該條件下的訓(xùn)練效率提高了2.1 倍,測試效率提升了2倍.
表3 在Northwestern-UCLA 上測試不同算法訓(xùn)練和測試1 000次樣本的時間
表1~表3 的結(jié)果表明,MSAGC-SRU 方法在Northwestern-UCLA 數(shù)據(jù)集上,不僅在動作分類任務(wù)中表現(xiàn)出色,還大幅提高了模型的訓(xùn)練和測試效率,在分類準確率和計算成本之間有很好的平衡.
3.3.2 NTU RGB+D Dataset
為了驗證本文方法的泛化能力,繼續(xù)在更大的數(shù)據(jù)集NTU RGB+D 上實驗.比較的方法包括ST-GCN[2]、2s-Adaptiva GCN[22]、AGC-LSTM[3]和MS-AAGCN[4],實驗結(jié)果如表4所示.
表4 在NTU RGB+D數(shù)據(jù)集上實驗結(jié)果比較
從表4 中可以看出,在CV 協(xié)議中,本文提出的MSAGC-SRU 方法比ST-GCN 提高了4.4%的分類準確率;在CS 協(xié)議中,本文方法提高了5.8%的準確率.與AGC-LSTM[3]相比,CV 協(xié)議中MSAGC-SRU 的分類精度低了2.3%,CS 協(xié)議中低了1.9%,但FLOPs 低于AGCLSTM 的1/2.與更先進的算法MS-AAGCN 相比,CV 協(xié)議下低了3.5%,CS 協(xié)議中低了2.7%,但是從算法復(fù)雜度看,本文方法的FLOPs 僅為MS-AAGCN 的1/3.結(jié)果表明,MSAGC-SRU 方法在類別增多、數(shù)據(jù)特征增加的情況下分類準確率有明顯損失,但是顯著降低了算法復(fù)雜度.在重視設(shè)備的運行效率的場景下,比如嵌入式或移動端的應(yīng)用中,MSAGC-SRU 能盡可能保持損失很小的精度來滿足非常高效的應(yīng)用任務(wù).
在Northwestern-UCLA 數(shù)據(jù)集的實驗中,本文用混淆矩陣分析了訓(xùn)練模型的測試分類結(jié)果.從圖5 中可以看到,SRU 方法在“單手撿起”和“雙手撿起”兩種動作間分類精度不高,在“丟垃圾”和“四處走動”兩個動作也不能很好的區(qū)分,尤其是“扔”的動作識別效果很差,主要因為這些動作間的相似度較高,普通的SRU 方法不能很好的區(qū)分.而本文提出的MSAGC-SRU 方法很好的提高了對這些動作的分類精度,即使與AGCLSTM 相比,在“自處走動”、“搬”等動作的分類精度會略微高一些.這些結(jié)果表明,MSAGC-SRU 方法在骨架動作識別任務(wù)中是一種有效的方法.
圖5 Northwestern-UCLA數(shù)據(jù)集上測試結(jié)果的混淆矩陣對比圖
本文提出了一種多流空間注意力圖卷積SRU(MSAGC-SRU)方法,并應(yīng)用于基于骨架的三維動作識別.MSAGC-SRU 方法將圖卷積算子代替門的全連接運算,利用數(shù)據(jù)的空間信息.同時,引入空間注意力網(wǎng)絡(luò),增強節(jié)點的關(guān)注度.此外,為了表現(xiàn)骨骼數(shù)據(jù)的多樣性,采用多流融合數(shù)據(jù)輸入.在兩個公開數(shù)據(jù)集上的實驗表明,與先進方法比,所提出的MSAGC-SRU 提高了數(shù)倍的計算效率,同時保持了不錯的分類準確率.接下來研究的開展會將該算法應(yīng)用在嵌入式平臺上,開發(fā)相關(guān)應(yīng)用.