解讀:基於動態骨骼的動作識別方法ST-GCN(時空圖卷積網絡模型)
解讀:基於動態骨骼的動作識別方法ST-GCN(時空圖卷積網絡模型)
本文為 AAAI 2018 錄用論文「Spatial Temporal Graph Convolutional Networks for Skeleton Based Action Recognition」,香港中文大學提出一種時空圖卷積網絡,並利用它們進行人類行為識別。這種算法基於人類關節位置的時間序列表示而對動態骨骼建模,並將圖卷積擴展為時空圖卷積網絡而捕捉這種時空的變化關系。
ST-GCN 時空圖卷積網絡模型
作者:顏思捷,熊元駿,林達華
文章鏈接:https://arxiv.org/abs/1801.07455
Github 代碼:https://github.com/yysijie/st-gcn?
一、簡介
近日,香港中大-商湯科技聯合實驗室的最新 AAAI 會議論文「Spatial Temporal Graph Convolution Networks for Skeleton Based Action Recognition」提出了一種新的 ST-GCN,即時空圖卷積網絡模型,用於解決基於人體骨架關鍵點的人類動作識別問題。該方法除了思路新穎之外,在標准的動作識別數據集上也取得了較大的性能提升。
圖1 ST-GCN 最末卷積層的響應可視化結果圖
近年來,人類動作識別已經成為一個活躍的研究領域,它在視頻理解中起着重要的作用。一般而言,人類行為識別有着多種模態(Simonyan and Zisserman 2014; Tran et al. 2015; Wang, Qiao, and Tang 2015; Wang et al. 2016; Zhao et al. 2017),例如外觀、深度、光流和身體骨骼(Du, Wang, and Wang 2015; Liu et al. 2016)等。在這些模態當中,動態人類骨骼通常能與其他模態相輔相成,傳達重要信息。然而,比起外觀和光流建模,動態骨骼建模受到的關注較少。在這篇論文中,作者系統地研究這種模態,旨在開發一種原則性且有效的方法模擬動態骨骼,並利用它們進行人類行為識別。
在 2D 或 3D 坐標形式下,動態骨骼模態可以自然地由人類關節位置的時間序列表示。然后,通過分析其動作模式可以做到人類行為識別。早期基於骨骼進行動作識別的方法只是在各個時間步驟使用關節坐標形成特征向量,並對其進行時序分析 (Wang et al. 2012; Fernando et al. 2015)。但這些方法能力有限,因為它們沒有明確利用人類關節的空間關系,而這種空間關系對理解人類行為而言至關重要。最近,研究者開發了試圖利用關節間自然連接的新方法 (Shahroudy et al. 2016; Du, Wang, and Wang 2015)。這些方法的改進令人鼓舞,表明了骨骼連通性的重要性。然而,現有的大多數方法依賴手動划分的部分或手動設定的規則來分析空間模式。因此,為特定應用設計的模型難以在其他任務中推廣。
為了跨越上述限制,我們需要一種新方法自動捕捉關節的空間構型、時間動態中所嵌入的模式。這就是深度神經網絡的力量。然而,如前所述,骨骼並未以 2D 或 3D 網格的方式展現,而是以圖像的形式展現。這就使得使用諸如卷積網絡等已證實的模型變得困難。最近,將卷積神經網絡(CNN)泛化到任意結構圖形的圖卷積網絡(GCN)得到了越來越多的關注,而且被成功應用於圖像分類 (Bruna et al. 2014)、文獻分類 (Defferrard, Bresson, and Vandergheynst 2016)、半監督學習 (Kipf and Welling 2017) 等領域。但是,順着這條思路,大部分前人的工作都把輸入假定為一個固定的圖形。GCN 在大規模數據集上的動態圖模型應用,例如人類骨骼序列,還有待探索。
圖2 NTU-RGBD 數據集上建立的時空圖示例
在本文中,通過將圖卷積網絡擴展到時空圖模型,設計用於行為識別的骨骼序列通用表示,稱為時空圖卷積網絡(ST-GCN)。如圖 2 所示,該模型是在骨骼圖序列上制定的,其中每個節點對應於人體的一個關節。圖中存在兩種類型的邊,即符合關節的自然連接的空間邊(spatial edge)和在連續的時間步驟中連接相同關節的時間邊(temporal edge)。在此基礎上構建多層的時空圖卷積,它允許信息沿着空間和時間兩個維度進行整合。
ST-GCN 的層次性消除了手動划分部分或遍歷規則的需要。這不僅能獲得更強的表達能力和更高的性能(如我們的實驗所示),而且還使其易於在不同的環境中推廣。在通用 GCN 公式化的基礎上,我們還基於圖像模型的靈感研究設計了圖卷積核的新策略。
這項工作的主要貢獻在於三個方面:1)我們提出 ST-GCN,一個基於圖的動態骨骼建模方法,這是首個用以完成本任務的基於圖形的神經網絡的應用。2)我們提出了在 ST-GCN 中設計卷積核的幾個原則,旨在滿足骨骼建模的具體要求。3)在基於骨骼動作識別的兩個大規模數據集上,我們的模型與先前使用的手動分配部分或遍歷規則的方法相比,需要相當少的手動設計,實現了更優越的性能。
二、ST-GCN
當我們運動的時候,人體在小范圍運動的關節稱之為“body parts”。現在基於骨骼點的動作識別方法都是具有在建模中具有明確的身體部分。相對於整個骨架,我們主要的改進是在建關鍵軌跡模型中建立有限制的部位“local regions”,並形成一個多層骨骼序列的表示。在例如圖像目標識別任務中,分層表示與局部化通常由CNN的特性來表示。這種思路使得我們也想在基於骨骼點的動作識別中使用。所以我們創造了ST-GCN模型。
2.1 通道
基於骨骼的數據可以從運動捕捉設備或視頻的姿態估計算法中獲得。通常來說,數據是一系列的幀,每一幀都有一組聯合坐標。給定 2D 或 3D 坐標系下的身體關節序列,我們就能構造一個時空圖。其中,人體關節對應圖的節點,人體身體結構的連通性和時間上的連通性對應圖的兩類邊。因此,ST-GCN 的輸入是圖節點的聯合坐標向量。這可以被認為是一個基於圖像的 CNN 模擬,其中輸入由 2D 圖像網格上的像素強度矢量形成。對輸入數據應用多層的時空圖卷積操作,可以生成更高級別的特征圖。然后,它將被標准的 SoftMax 分類器分類到相應的動作類別。整個模型用反向傳播進行端對端方式的訓練。現在,我們將介紹 ST-GCN 模型的各個部分。
2.2 骨骼圖結構
通常使用每一幀每一個人體骨骼的2D或者3D坐標來表示骨骼序列。之前基於骨骼點的動作識別是通過,每一幀中所有的關節向量鏈接成一個特征向量。再本文中,使用時空卷積圖去形成多層骨骼序列的表達。構建骨骼時空圖G = (V,E),幀數為T,關節點數為N.
在圖中,節點矩陣集合V={vti|t=1,...,T,i=1,...N}V={vti|t=1,...,T,i=1,...N},包括骨骼序列上的所有的關節點。當ST-GCN作為輸入的時候,關鍵點上的第t幀、第i個關節點的特征向量F(vti)F(vti)是由坐標點坐標以及置信度組成。使用兩步構建骨骼序列的時空圖。第一步,幀與幀之間的邊表示人體對應骨骼點的時序關系;第二步,在每一幀內部,按照人體的自然骨架連接關系構造空間圖。這種鏈接的建立是依靠自然結構的,沒有人工手動設計的。這個模型也支持不同數量的骨骼點集上使用。例如,Kinect dataset,我們使用openpose工具在2D姿態估計中得到18個骨骼點,在NTU-RCB+D數據集上,我們是用3D骨骼跟蹤的輸出作為本模型的輸入,產生25個骨骼點。STGCN可以在兩種情況下運行,並提供一致的卓越性能。 圖1中示出了構建的空間時間圖的示例。
正式上,邊的集合E有兩個子集組成,第一個子集是每一幀幀內骨骼點的鏈接Es={vtivtj|(i,j)∈H}Es={vtivtj|(i,j)∈H},H表示人體骨骼點集合。第二個子集表示不同幀間的鏈接,EF={vtiv(t+1)i}EF={vtiv(t+1)i}。因此E_F中的每一個邊代表一個特定的關節隨着時間推移其軌跡。
2.3 Spatial Graph Convolutional Neural Network
在我們深入了解完整的ST-GCN之前,我們先看看在一個單一幀內的圖CNN模型。在實例中,在時間t的單幀中,有N個關鍵點VtVt,骨骼內的邊Es(t)={vtivtj|(i,j)∈H}Es(t)={vtivtj|(i,j)∈H}。從2D自然圖像或特征圖上的卷積運算的定義來看,它們可被視為二維網格。卷積操作輸出的feature map也是一個2D網格。當選用步長為1及恰當的padding,可以使得輸出faeture map與輸入圖像保持一樣的大小。下述討論建立在這種討論上。設一個大小為K x K的卷積核,輸入圖像為finfin ,通道數為c。單個通道在位置x的輸出:
(1)
sampling function p: Z2∗Z2→Z2Z2∗Z2→Z2表示位置x及其領域。在圖像卷積中,p(x,h,w)=x+p‘(h,w)p(x,h,w)=x+p‘(h,w)。weight function w:Z2→RcZ2→Rc表示權重w提供c維實空間中的權向量,用於計算具有維度c的采樣輸入特征向量的內積。權重函數與輸入x的位置無關。因此,輸入圖像上的所有濾鏡權重都是共享的。圖像域的標准卷積,通過對p(x)中的矩形網格進行編碼來實現。將上述公式的卷及操作應用到空間圖Vt的features map。其中feature mapftin:Vt→Rcfint:Vt→Rc為在圖上的每一個節點。
Sampling function
在圖上,sampling function p(h,w)被定義為中心像素x的領域像素。在圖上,我們同樣定義點vtivti領域集的sampling function B(vti)={vtj|d(vtj,vti≥D)}B(vti)={vtj|d(vtj,vti≥D)}。這里d(vtj,vtid(vtj,vti為vtjvtj到vtjvtj的最小路徑。
(2)
本任務中D=1,即取距離為1的為領域集
Weight function
與sampling function相比,權值函數更難以定義。 在二維卷積中,中心位置周圍自然存在一個剛性網格。所以領域像素可以具有固定的空間順序。 然后可以通過根據空間順序索引(c; K; K)維度的張量來實現權重函數。對於像我們剛剛構建的圖一般的圖,沒有這種規律的排布。 這個問題首先在(Niepert,Ahmed和Kutzkov,2016)中進行了研究,其中順序是由根節點周圍的領域圖中的圖標記過程定義的。我們遵循這個想法來構建我們的權重函數。 我們不是給每一個領域節點一個獨特的標簽,而是通過將一個骨骼點vtivti的鄰居集B(vti)B(vti)划分成固定數量的K個子集來簡化過程,其中每個子集都有一個數字標簽。
(3)
Spatial Graph Convolution
隨着重新定義sampling function 與weight function,我們可以將公式1應用到圖卷積上:
這里正則化項Zti(vtj)=|{vtk|lti(vtk)=lti(vtj)}|Zti(vtj)=|{vtk|lti(vtk)=lti(vtj)}|等於相應子集的基數。這一項增加了不同子集的貢獻。從公式2,3,4中我們可以得出:
(5)
值得注意的是,如果我們將圖像視為常規2D網格,則該公式可以類似於標准2D卷積。 例如,為了類似於3x3卷積運算,我們在3x3中有一個9像素的領域。 以像素為中心的3格。 然后應該將鄰居組分割成9個子集,每個子集有一個像素。
Spatial Temporal Modeling
在定義了空間圖CNN之后,我們現在開始進行在骨架序列時空動態進行建模。回想一下,在圖的構建中,圖的時間方面是通過在連續幀之間連接相同的關節來構建的。 這使我們能夠定義一個非常簡單的策略來將空間圖CNN擴展到空間時間域。也就是說,我們將鄰域的概念擴展為也包含時間連接的關節
(6)
參數��控制時間范圍以包含在鄰居圖中,因此可以稱為時間內核大小。為了完成ST圖上的卷積運算,我們還需要sampling function與weight function,sampling function與空間圖唯一的情況相同,並且權重功能,或者特別是標簽圖lST。 因為時間軸是有序的,所以我們直接修改標簽映射lST,以便根據vti生成一個空間時間鄰域
(7)
2.4 划分方式
給定空間時間圖的高級表達式卷積,實施不同的划分策略得到標簽地圖。 在這項工作中,我們探討了幾種分區策略 為了簡單起見,我們只討論單個框架中的情況,因為它們可以使用方程式自然擴展到時空域。
圖3 本文提出的用於構建卷積操作的分割策略。從左到右:(a)輸入骨骼的框架示例。身體關節以藍點表示。D=1 的卷積核感受野由紅色的虛線畫出。(b)單標簽划分策略。其中近鄰的所有節點標簽相同(綠色)。(c)距離划分。這兩個子集是距離為 0 的根節點本身,和距離為 1 的根節點相鄰節點(藍色)。(d)空間構型划分。根據節點到骨架重心(圖中黑色十字)的距離和到根節點(綠色)的距離的比較進行標記。向心節點(藍色)到骨架重心的距離比根節點到骨架重心的距離短,而離心節點(黃色)到骨架重心的距離比根節點長
第一種稱為「唯一划分」(uni-labeling)。其與原始 GCN 相同,將節點的 1 鄰域划分為一個子集。
第二種稱為「基於距離的划分」(distance partitioning),它將節點的 1 鄰域分為兩個子集,即節點本身子集與鄰節點子集。引入基於距離的划分使得我們可以分析骨架關鍵點之間的微分性質。
進一步,我們針對動作識別的特點,提出了第三種,「空間構型划分」(spatial configuration partitioning)。這種划分規則將節點的 1 鄰域划分為 3 個子集,第一個子集為節點本身,第二個為空間位置上比本節點更靠近整個骨架重心的鄰節點集合,第三個則為更遠離重心的鄰節點集合。建立這種划分規則在根據運動分析的研究中對向心運動與離心運動的定義。三種划分規則的示意圖請見圖 4。
(8)
3.5 使用ST-GCN
使用圖卷積網絡不僅僅只是將數據當做2D或者3D,還需要有些細節。
通過圖的鄰接矩陣A與單位矩陣I表示單幀內的骨骼點的鏈接。在單幀內,使用第一種划分策略的ST-GCN的表示如下:
(9)
fout=Λ−12(A+I)Λ−12finWfout=Λ−12(A+I)Λ−12finW
這里Λii=∑j(Aij+Iij)Λii=∑j(Aij+Iij)。這里,多個輸出通道的權重矢量被堆疊以形成權重矩陣W。實際上,在時空下,輸入的特征圖作為張量(C,V,T)維度。
三、網絡結構與訓練
圖4 我們對視頻進行姿態估計,並在骨骼序列上構建時空圖。此后,對其應用多層時空圖卷積操作(ST-GCN),並逐漸在圖像上生成更高級的特征圖。然后,利用標准的 Softmax 分類器,能將其分類到相應的操作類別中
由於ST-GCN在不同節點上共享權重,因此保持輸入數據的比例在不同節點上保持一致非常重要。在實驗中,將數據進行正則化在輸入到batch normalization。ST-GCN模型由九層時空圖卷積組成。前三層輸出64通道數,中間三層輸出128通道,最后三層輸出256層通道數。一共有9個時間卷積核,在每一個ST-GCN使用殘差鏈接,使用dropout進行特征正則化處理,將一半的神經元進行dropout處理。第4、7層的時間卷積層設置為poling層。最后將輸出的256個通道數的輸出進行全局pooling,並由softmax進行分類。是由SGD進行優化,學習率設置為0.01,並每10個epoch迭代減小0.01。
四、實驗
作者在兩個性質迥異的骨架動作識別數據集上進行了實驗來驗證 ST-GCN 的性能。
第一個數據集是 Kinetics-Skeleton,它來自於最近由 Google DeepMind 貢獻的 Kinetics 視頻人類動作識別數據集。我們使用 OpenPose 姿態估計軟件得到視頻中所有的骨架關鍵點信息來構成 Kinetics-Skeleton。該數據集共有約 30 萬個視頻與 400 類動作。
第二個數據集是 NTU-RGB+D,這是三維骨架動作識別的標准測試數據集。它包含了用 Microsoft Kinect 采集的三維骨架序列。該數據集共有約 6 萬個視頻,60 個動作類別。這個數據集包含了兩個測試協議,即跨表演人(X-Sub)與跨視角(X-View)協議。在兩個數據集的三個測試協議上,ST-GCN 相比現有方法在識別精度上均有很大提高,具體結果可見表。