Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition (ST-GCN)


Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition

摘要

動態人體骨架模型帶有進行動作識別的重要信息,傳統的方法通常使用手工特征或者遍歷規則對骨架進行建模,從而限制了表達能力並且很難去泛化。

作者提出了一個新穎的動態骨架模型ST-GCN,它可以從數據中自動地學習空間和時間的patterns,這使得模型具有很強的表達能力和泛化能力。

在Kinetics和NTU-RGBD兩個數據集上achieve substantial improvements over mainstream methods(與主流方法相比,取得了質的提升)

一、引言

(引言是摘要的詳細擴充版本,從引言可以看出,用一個新的方法做一個問題,要調查這個問題的其他解決方法,指出目前的方法的弊端,另外還需要對這個新的方法進行介紹,指出前人沒有用此方法解決該問題,然后介紹自己的方法)

動作識別可以從人體的多種形態去識別,比如外形、深度、光流、身體骨架,但是人們對外形和光流的研究比較多,對包含有大量信息的動態骨架研究較少,作者提出了一種有原則的、高效的方法對動態骨架進行建模

現今對人體動態骨架的研究:早期的算法利用動態骨架的時序信息而忽略了空間信息;后來提出的算法大多數都依賴於人工制定的原則去分析骨架的空間模式,這樣的只針對某一個特定應用的方法很難去泛化。

作者需要提出一種方法,可以自動捕捉(嵌套在關節空間結構以及其時序動態)中的模式。

GCN被應用在像圖像分類、文獻分類、半監督學習等任務中,然而很多任務都是將一個固定的圖作為輸入。用GCN去對動態圖在大規模數據集上進行建模還沒有被研究,比如人體骨架序列。

作者通過將圖卷積網絡擴展到時空圖模型,設計了一種(用於動作識別的骨架序列)的通用表示,叫做時空圖卷積網絡。

模型建立在骨架圖構成的序列之上,其中的每一個點都對應人體骨架結構中的每一個節點。這里有兩種類型的邊,一種是空間邊(spatial edges)它建立在每一幀人體骨架的自然連接節點上,另外一種是時序邊(temporal edges)它將連續兩幀中相同節點連接起來。時空圖卷積網絡中的很多層也根據他們建立起來了,這就使得信息在時間和空間域被整合起來了。

層級性的ST-GCN避免了手動設計遍歷規則,這不僅使得表達能力更強並且性能更好,同時也很容易在不同的場景中泛化。在通用的GCN表達之上,作者在圖像模型的啟發下,學習了新的策略去設計圖卷積核。

總結:

  1. 提出了ST-GCN,一個通用的基於圖的框架去對動態人體骨架進行建模
  2. 在ST-GCN中提出了幾個卷積核設計規則去滿足骨架模型特殊的要求
  3. 與原始的基於手工部分和遍歷規則的算法相比,作者提出的方法在兩個大規模的基於骨架的動作識別數據集上取得了優越的性能,並且大大減少了人工設計。

二、相關工作

圖卷積網絡主要有兩種主流方法:

  1. 基於光譜的觀點(spectral perspective)圖卷積中的位置信息被看做是以光譜分析的形式。
  2. 基於空間的觀點(spatial perspective)卷積核直接被應用在圖節點和他們的鄰居節點。
  3. 作者采用第二種做法,限制每一個濾波只應用到一個節點的一個鄰域

基於骨架的動作識別:

  1. 基於手工特征的方法,設計幾種手工特征去捕獲連接點的運動信息,比如,關節點軌跡的協方差矩陣
  2. 基於深度學習的方法,循環神經網絡,端到端進行動作識別(Among these approaches, many have emphasized the importance of modeling the joints within parts of human bodies. But these parts are usually explicitly assigned using domain knowledge.)
  3. 作者是第一個將圖卷積網絡應用在基於骨架的動作識別任務中的。它和以前的方法都不同,可以隱式地通過圖卷積網絡將位置信息和時序動態信息結合起來。

三、時空圖卷積網絡

在現有的基於骨架的動作識別方法中提出,body parts的信息對於基於骨架的動作識別非常有效。作者提出,性能的提升主要是body parts比整個骨架具有更多的局部特征,因此有了用局部信息層級表示的骨架序列,因此有了ST-GCN

1. pipeline

給出一個動作視頻的骨架序列信息,首先構造出表示該骨架序列信息的圖結構,ST-GCN的輸入就是圖節點上的關節坐標向量,然后是一系列時空圖卷積操作來提取高層的特征,最后用SofMax分類器得到對應的動作分類。整個過程實現了端到端的訓練。

2. 構造骨架的圖結構

記一個有\(N\)個節點和\(T\)幀的骨骼序列的時空圖為\(G=(V,E)\),其節點集合為\(V=\left\{v_{t i} | t=1, \ldots, T, i=1,...,N\right\}\),第\(t\)幀的第\(i\)個節點的特征向量\(F\left(v_{t i}\right)\)由該節點的坐標向量和估計置信度組成。

圖結構由兩個部分組成:

  • 根據人體結構,將每一幀的節點連接成邊,這些邊形成spatial edges \(E_{S}=\left\{v_{t i} v_{t j} |(i, j) \in H\right\}\) H是一組自然連接的人體關節
  • 將連續兩幀中相同的節點連接成邊,這些邊形成temporal edges \(E_{F}=\left\{v_{t i} v_{(t+1) i}\right\}\)

3. 空間圖卷積網絡

在這里只針對某一幀討論圖卷積模型操作

以常見的圖像的二維卷積為例,針對某一位置\(\mathbf{x}\)的卷積輸出可以寫成如下形式

\[f_{o u t}(\mathbf{x})=\sum_{h=1}^{K} \sum_{w=1}^{K} f_{i n}(\mathbf{p}(\mathbf{x}, h, w)) \cdot \mathbf{w}(h, w) \]

輸入通道數為\(c\)的特征圖\(f_{in}\),卷積核大小\(K*K\)sampling function采樣函數\(\mathbf{p}(\mathbf{x}, h, w)=\mathbf{x}+\mathbf{p}^{\prime}(h, w)\)weight function通道數為\(c\)的權重函數。

(1)sampling function

在圖像中,采樣函數\(\mathbf{p}(h,w)\)指的是以\(x\)像素為中心的周圍鄰居像素,在圖中,鄰居像素集合被定義為:\(B\left(v_{t i}\right)=\left\{v_{t j} | d\left(v_{t j}, v_{t i}\right) \leq D\right\}\)\(d(v_{tj},v_{ti})\)指的是從\(v_{tj}\)\(v_{ti}\)的最短距離,因此采樣函數可以寫成\(\mathbf{p}\left(v_{t i}, v_{t j}\right)=v_{t j}\),這里的\(\mathbf{p}\left(v_{t i}, v_{t j}\right)=v_{t j}\)

(2)weight function

在2D卷積中,鄰居像素規則地排列在中心像素周圍,因此可以根據空間順序用規則的卷積核對其進行卷積操作。類比2D卷積,在圖中,將sampling function得到的鄰居像素划分成不同的子集,每一個子集有一個數字標簽,因此有\(l_{t i} : B\left(v_{t i}\right) \rightarrow\{0, \ldots, K-1\}\)將一個鄰居節點映射到對應的子集標簽,權重方程為\(\mathbf{w}\left(v_{t i}, v_{t j}\right)=\mathbf{w}^{\prime}\left(l_{t i}\left(v_{t j}\right)\right)\)

(3)空間圖卷積

\[f_{o u t}\left(v_{t i}\right)=\sum_{v_{t j} \in B\left(v_{t i}\right)} \frac{1}{Z_{t i}\left(v_{t j}\right)} f_{i n}\left(\mathbf{p}\left(v_{t i}, v_{t j}\right)\right) \cdot \mathbf{w}\left(v_{t i}, v_{t j}\right) \]

其中歸一化項\(Z_{t i}\left(v_{t j}\right)=\left|\left\{v_{t k} | l_{t i}\left(v_{t k}\right)=l_{t i}\left(v_{t j}\right)\right\}\right|\),等價於對應子集的基。將上述公式帶入上式得到:

\[f_{o u t}\left(v_{t i}\right)=\sum_{v_{t j} \in B\left(v_{t i}\right)} \frac{1}{Z_{t i}\left(v_{t j}\right)} f_{i n}\left(v_{t j}\right) \cdot \mathbf{w}\left(l_{t i}\left(v_{t j}\right)\right) \]

(4)時空模型

將空間域的模型擴展到時間域中,得到的sampling function為\(B\left(v_{t i}\right)=\left\{v_{q j}\left|d\left(v_{t j}, v_{t i}\right) \leq K,\right| q-t | \leq\lfloor\Gamma / 2\rfloor\right\}\)\(\Gamma\)控制時間域的卷積核大小,weight function為\(l_{S T}\left(v_{q j}\right)=l_{t i}\left(v_{t j}\right)+(q-t+\lfloor\Gamma / 2\rfloor) \times K\)看不懂

4. 划分子集的方式

(1)唯一划分 Uni-labeling:將節點的1鄰域划分為一個子集

(2)基於距離的划分 Distance partitioning:將節點的1鄰域划分為兩個子集,節點本身子集與鄰節點子集

(3)空間構型划分 Spatial configuration partitioning:將節點的1鄰域划分為3個子集,第一個子集連接了空間位置上比根節點更遠離整個骨架的鄰居節點,第二個子集連接了更靠近中心的鄰居節點,第三個子集為根節點本身,分別表示了離心運動、向心運動和靜止的運動特征

5. 注意力機制

在運動過程中,不同的軀干重要性是不同的。例如腿的動作可能比脖子重要,通過腿部我們甚至能判斷出跑步、走路和跳躍,但是脖子的動作中可能並不包含多少有效信息。

因此,ST-GCN 對不同軀干進行了加權(每個 st-gcn 單元都有自己的權重參數用於訓練)

6. TCN

GCN 幫助我們學習了到空間中相鄰關節的局部特征。在此基礎上,我們需要學習時間中關節變化的局部特征。如何為 Graph 疊加時序特征,是圖網絡面臨的問題之一。這方面的研究主要有兩個思路:時間卷積(TCN)和序列模型(LSTM)。

ST-GCN 使用的是 TCN,由於形狀固定,我們可以使用傳統的卷積層完成時間卷積操作。為了便於理解,可以類比圖像的卷積操作。st-gcn 的 feature map 最后三個維度的形狀為\((C, V, T)\),與圖像 feature map 的形狀\((C, W, H)\)相對應。

  • 圖像的通道數\(C\)對應關節的特征數\(C\)
  • 圖像的寬\(W\)對應關鍵幀數\(V\)
  • 圖像的高\(H\)對應關節數\(T\)

在圖像卷積中,卷積核的大小為『w』\(\times\)『1』,則每次完成 w 行像素,1 列像素的卷積。『stride』為 s,則每次移動 s 像素,完成 1 行后進行下 1 行像素的卷積。

在時間卷積中,卷積核的大小為『temporal_kernel_size』\(\times\) 『1』,則每次完成 1 個節點,temporal_kernel_size 個關鍵幀的卷積。『stride』為 1,則每次移動 1 幀,完成 1 個節點后進行下 1 個節點的卷積。

7. ST-GCN的實現

實際項目中使用的圖卷積公式是

\[(x)=D^{-1} A X \]

化簡:

\[\begin{aligned} \text {aggregate}\left(X_{i}\right) &=D^{-1} A X \\ &=\Sigma_{k=1}^{N} D_{i k}^{-1} \Sigma_{j=1}^{N} A_{i j} X_{j} \\ &=\Sigma_{j=1}^{N} D_{i i}^{-1} A_{i j} X_{j} \\ &=\Sigma_{j=1}^{N} \frac{A_{i j}}{D_{i i}} X_{j} \\ &=\Sigma_{j=1}^{N} \frac{A_{i j}}{\Sigma_{k=1}^{N} A_{i k}} X_{j} \end{aligned} \]

論文中的公式(不太懂):

\[\mathbf{f}_{o u t}=\mathbf{\Lambda}^{-\frac{1}{2}}(\mathbf{A}+\mathbf{I}) \mathbf{\Lambda}^{-\frac{1}{2}} \mathbf{f}_{i n} \mathbf{W} \]

其中,\(\Lambda^{i i}=\sum_{j}\left(A^{i j}+I^{i j}\right)\)

當采用第二種和第三種划分策略時,\(A+I=\sum_{j} A_{j}\)

\[\mathbf{f}_{o u t}=\sum_{j} \mathbf{\Lambda}_{j}^{-\frac{1}{2}} \mathbf{A}_{j} \mathbf{\Lambda}_{j}^{-\frac{1}{2}} \mathbf{f}_{i n} \mathbf{W}_{j} \]

其中,\(\Lambda_{j}^{i i}=\sum_{k}\left(A_{j}^{i k}\right)+\alpha\)\(\alpha=0.001\)

增加注意力機制后,上式中的\(\mathbf{A}_{j}=\mathbf{A}_{j} \otimes \mathbf{M}\)\(\otimes\)表示點積

8. 網絡結構與訓練

輸入的數據首先進行batch normalization,然后在經過9個ST-GCN單元,接着是一個global pooling得到每個序列的256維特征向量,最后用SoftMax函數進行分類,得到最后的標簽。每一個ST-GCN采用Resnet的結構,前三層的輸出有64個通道,中間三層有128個通道,最后三層有256個通道,在每次經過ST-CGN結構后,以0.5的概率隨機將特征dropout,第4和第7個時域卷積層的strides設置為2。用SGD訓練,學習率為0.01,每10個epochs學習率下降0.1。

在訓練Kinetcis數據集時,采用兩種策略代替dropout層:1. random moving:在所有幀的骨架序列上應用隨機仿射變換,fixed angle、translation、scaling factors。2. 在訓練中隨機抽取原始骨架序列的片段,並在測試中使用所有幀不太懂

四、實驗

1. 實驗數據集:

Kinetics human action dataset 和 NTU-RGB+D

2. 實驗環境:

8 TITANX GPUs 和 PyTorch

3. Kinetics:

300,000個視頻序列,400類動作,每個視頻持續10秒,unconstraint

數據處理流程:resize(340*256)-->30fps-->OpenPose-->18個節點的二維坐標+置信度-->(3,T,18,2)

其中T=300,3表示二維坐標+置信度,18表示節點數目,2表示置信度最高的兩個人

測評指標:top-1和top-5

240,000個視頻訓練,20,000個視頻驗證

4. NTU-RGB+D

56,000個視頻,60類動作,由40個志願者完成,constraint

25個節點,每個節點用三維坐標表示,每個clip最多有2個對象

測評指標:cross-subject 40320訓練 16560測試 cross-view 37920訓練 18960測試 top-1

5. Ablation Study

Baseline TCN:Interpretable 3d human action analysis with temporal convolutional networks.(等價於沒有共享參數的全連接時空圖網絡,網絡圖與ST-GCN不一樣)

Loacl Convolution:(沒有共享參數的ST-GCN,網絡圖就是ST-GCN)

Distance partitioning*:bind the weights of the two subsets in distance partitioning to be different only by a scaling factor -1, or w0 = -w1.

ST-GCN+Imp:ST-GCN+注意力機制

6. comparison with state of the art

Kinetic:

NTU-RGB+D:

7. 討論

table4:去掉了對象和環境進行交互的視頻,留下了人體動作相關的視頻進行測試

table5:two-stream style action recognition,不同的輸入特征測試

TSN:Temporal segment networks: Towards good practices for deep action recognition.

五、結論

作者提出了一個新穎的基於骨架的動作識別模型ST-GCN,在兩個大型數據上的性能都優於現有的基於骨架的算法。作者提出的基於骨架的模型補全了現有的基於RGB模型的不足,ST-GCN模型的靈活性也為未來的工作開辟了許多可能的方向。例如,如何將上下文信息(例如場景、對象和交互)合並到ST-GCN中就成為一個自然的問題。

參考博客:
https://blog.csdn.net/qq_36893052/article/details/79860328

https://www.zhihu.com/question/276101856/answer/385251705

圖網絡的簡單實現

看代碼需要理解的問題:圖數據的組織形式,卷積核,大小,channel,pad,stride,遍歷規則,權重值,正反向傳遞規則


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM