论文超详细精读|六千字:ST-GCN
文章目錄
- 前言
- 總覽
- 一、Introduction
- 背景與局限
- 解決問題思路
- 新方法及主要貢獻
- 二、Related work
- Neural Networks on Graphs(圖神經網絡)
- Skeleton Based Action Recognition(基于骨骼的動作識別)
- 三、Spatial Temporal Graph ConvNet(時空圖卷積網絡)
- 3.1 Pipeline Overview (網絡架構)
- 3.2 Skeleton Graph Construction(骨架圖的構建)
- 3.3 Spatial Graph Convolutional Neural Network(空間圖卷積神經網絡)
- 3.4 Partition Strategies(分區策略)
- 3.5 Learnable edge importance weighting(可學邊界權重)
- 3.6 Implementing ST-GCN
- 小白知識
- 原文實現
藍點表示身體的關節。幀間邊緣連接連續幀之間的相同節點。關節坐標被用作ST-GCN的輸入。
前言
筆者從人工智能小白的角度,力求能夠從原文中解析出最高效率的知識。
之前看了很多博客去學習AI,但發現雖然有時候會感覺很省時間,但到了復現的時候就會傻眼,因為太多實現的細節沒有提及。而且博客具有很強的主觀性,因此我建議還是搭配原文來看。
請下載原文《Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition》搭配閱讀本文,會更高效哦!
總覽
首先,看完標題,摘要和結論,我了解到了以下信息:
一、Introduction
背景與局限
1.動態骨骼形態可以用人類關節位置的時間序列來表示,以2D或3D坐標的形式。然后,通過分析人類的運動模式,可以識別人類的行為。
2.早期使用骨骼進行動作識別的方法簡單地利用單個時間步的關節坐標形成特征向量,并對其進行時間分析,這些方法的能力是有限的,因為它們沒有明確地利用關節之間的空間關系,這是理解人類行為的關鍵。
3.現有的方法大多依賴于手工制作的部件或規則來分析空間模式。因此,針對特定應用設計的模型很難推廣到其他應用。
解決問題思路
1.神經網絡解決自動問題。為了超越這些限制,我們需要一種新的方法,能夠自動捕獲嵌入關節空間配置中的模式以及它們的時間動態。然而,骨架是圖形形式的,而不是2D或3D網格,這使得使用卷積網絡等經過驗證的模型變得困難。
2.圖神經網絡解決卷積對象非圖像問題。Graph Neural networks (GCNs)是一種將卷積神經網絡(CNNs)推廣到任意結構圖的方法,但需要固定的圖作為輸入。
3.通過將圖神經網絡擴展到一個時空圖模型,即時空圖卷積網絡(ST-GCN),設計一種用于動作識別的骨架序列的通用表示。
新方法及主要貢獻
圖1:時空骨架圖(1)提出了一種基于圖的動態骨骼建模通用公式ST-GCN,這是第一個將基于圖的神經網絡應用于該任務的方法。
(2)針對骨骼建模的具體要求,提出了ST-GCN中卷積核的設計原則。
(3)在基于骨骼的動作識別的兩個大規模數據集上,與使用手工制作部件或遍歷規則的方法相比,所提模型在手工設計方面的工作量大大減少,取得了更好的性能。
二、Related work
Neural Networks on Graphs(圖神經網絡)
兩種思路:
1.光譜視角,以光譜分析的形式考慮圖卷積的局部性。
2.空間視角,其中卷積濾波器(filter)直接應用于圖節點及其周邊點。
本文選了第二種思路。在空間域上構建CNN濾波器,將每個濾波器的應用限制在每個節點的1個鄰居節點。
Skeleton Based Action Recognition(基于骨骼的動作識別)
人體的骨骼和關節軌跡對光照變化和場景變化具有魯棒性,通過高度精確的深度傳感器或位姿估計算法很容易獲得。因此,這里有一系列基于骨架的動作識別方法。這些方法可以分為基于特征的人工方法和深度學習方法。第一種方法設計了幾個人工特征來捕捉關節運動的動態。
三、Spatial Temporal Graph ConvNet(時空圖卷積網絡)
在圖像目標識別等任務中,層次化表示和局部性通常是利用卷積神經網絡的固有性質來實現的。
3.1 Pipeline Overview (網絡架構)
1.數據來源:從運動捕獲設備或從視頻中的姿勢估計算法獲得
2.輸入:圖形節點上的關節坐標向量。通常數據是一系列的幀,每個幀都會有一組關節坐標。這可以被認為是對基于圖像的CNN的模擬。將對輸入數據進行多層時空圖形卷積運算,并在圖形上生成更高級別的要素地圖。
3.輸出:然后,標準SoftMax分類器將其分類到相應的操作類別。
4.訓練方式:整個模型采用端到端的反向傳播方式進行訓練。
3.2 Skeleton Graph Construction(骨架圖的構建)
骨架序列通常由每個幀中每個人體關節的2D或3D坐標表示。以前的工作使用卷積來識別骨骼動作,將所有關節的坐標向量連接在一起,形成每幀的單個特征向量。本文利用時空圖來形成骨架序列的層次表示,在具有 NNN 個關節和 TTT 個幀的骨架序列上構造了一個無向時空圖 G=(V,E)G=(V,E)G=(V,E) ,該圖既具有體內連接又具有幀間連接。具體表示如下:
(1)根據人體結構的連通性,將一個框架內的關節用邊連接起來,如圖1所示。
(2)將每個關節連接到連續幀中的同一關節。因此,此設置中的連接是自然定義的,不需要人工來手動配置。這還使網絡體系結構能夠處理具有不同連接數或連接性的數據集。
(1)ES={vtivtj∣(i,j)∈H}E_S=\{v_{ti}v_{tj}|(i,j)∈H\}ES?={vti?vtj?∣(i,j)∈H},其中 HHH 是自然連接的人體關節的集合。第一個子集描述了每一幀的骨架內連接。
(2) EF={vtiv(t+1)i}E_F=\{v_{ti}v_{(t+1)i}\}EF?={vti?v(t+1)i?},第二個子集包含幀間邊,這些邊將連續幀中的相同關節連接。因此,一個特定關節 III的 EFE_FEF?中的所有邊都將表示其隨時間變化的軌跡。
3.3 Spatial Graph Convolutional Neural Network(空間圖卷積神經網絡)
1.單個幀情況: 幀 TTT 上,有 NNN 個關節節點 VtV_tVt? ,以及骨架邊 ES={vtivtj∣(i,j)∈H}E_S=\{v_{ti}v_{tj}|(i,j)∈H\}ES?={vti?vtj?∣(i,j)∈H},它們都可以被視為2D網絡,卷積運算的輸出特偵圖也是2D網絡。步長設置為1,選擇合適的padding,輸出特征映射可以具有與輸入特征映射相同的大小。
2.空間位置x處的單個通道輸出值:
其中,
(1)采樣函數 p:Z2×Z2→Z2p:Z^2 \times Z^2\rightarrow Z^2p:Z2×Z2→Z2 枚舉了位置x的鄰居節點。
(2)權重函數 w:Z2→Rcw:Z^2\rightarrow\mathbb{R^c}w:Z2→Rc 提供 ccc 維實空間中的權重向量,用于計算具有 ccc 維的采樣輸入特征向量的內積。
**注意,權重函數與輸入位置x無關。因此,在輸入圖像上均共享濾波器權重。**
然后,通過將上述公式擴展到輸入特征圖駐留在空間圖 VtV_tVt? 上的情況來定義圖上的卷積運算。也就是說:特征圖 fint:Vt→Rcf_{in}^t : V_t→R^cfint?:Vt?→Rc 中的特征映射在圖形的每個節點上都有一個向量。擴展的下一步是重新定義采樣函數 ppp 和權重函數 www 。
3.4 Partition Strategies(分區策略)
呈現以下 3 種構成 Subset 的方法
這種方法是對該中心節點及其鄰近節點採用等價的權重計算,算是最簡單、直接的做法。
這方法是依照中心節點 ( Root ) 到其他節點的距離做加權,而中心節點的權重會設定為 0。
這方法比較特別,會依空間上的相對關系進行分 3 群的動作,這 3 群分別是 Root 、向心群、離心群,這邊的向心離心的判定是以所有節點的重心做判斷 ( 可參考上圖 d 的圖示,打叉的地方就是重心,綠色的是 Root ,藍色是向心群,黃色是離心群 )
上述 3 點的圖示可依序對應到上圖的 (b)、(c)、(d):
從左到右:
(a):輸入骨架的示例幀。身體關節用藍色圓點繪制。D=1的過濾器的接受域用紅色虛線圓圈繪制。
(b):單標簽劃分策略,其中一個鄰域中的所有節點都有相同的標簽(綠色)。
(c):距離劃分。這兩個子集是距離為0(綠色)的根節點本身和距離為1(藍色)的其他鄰接點。
(d):空間構型劃分。節點根據其到骨骼重心的距離(黑色十字)與根節點的距離(綠色)進行標記。向心節點的距離較短(藍色),而離心式節點的距離較長(黃色)。
3.5 Learnable edge importance weighting(可學邊界權重)
盡管當人們執行動作時,關節會成組移動,但一個關節可能會出現在身體的多個部位。進行建模時應該具有不同的重要性。在這個意義上,本文在時空圖卷積的每一層都增加了一個可學習的掩碼M。掩碼將基于ESE_SES?中每條空間圖邊的學習重要性權重來縮放節點特征對其相鄰節點的貢獻。實驗發現,加入這種掩碼可以進一步提高ST-GCN的識別性能。
3.6 Implementing ST-GCN
小白知識
普通圖像的二維卷積,他可以看成: X?=XW+bX^*=XW+bX?=XW+b。
圖卷積可以看成: X?=AXW+bX^*=AXW+bX?=AXW+b,多左乘了一個鄰接矩陣A。鄰接矩陣就是他的行和列都是點,而點與點有沒有連接用對應矩陣的元素表示,1就代表有連接,0就代表沒有連接。這篇論文用的是無向圖。簡單來說鄰接矩陣就是描述點與邊有無聯系的一個矩陣。
原文實現
在實作上,這些 Graph 的 Edge 會以 Adjacency matrix A 做重現,而每個節點對應自己的重現方法則以 Identity matrix I 實作,而前面Partition Strategies 里的第一種方法則可表述為:
Λii=∑j(Aij+Iij)Λ^{ii} = ∑_j(A^{ij} + I^{ij})Λii=∑j?(Aij+Iij),WWW 是進行加權的矩陣。
而在 ST-GCN 的實作上,會同時對時空的維度上進行特徵抽取的操作,所以輸入的特征圖維度會是 ( C,V,TC, V, TC,V,T )。
另外 2 種 Partition Strategies 因為有 Subset ,在 Adjacency matrix 的數量上上就比較多,也可以把上個公式的 A+IA + IA+I 拆解來看:
若以 Distance partitioning 為例,AjA_jAj?可表述為:
整個 SGC 則可表述為:
而前面提到過可訓練的 Mask M,在這邊會加在 A+IA + IA+I 或 AjA_jAj? 后方:
? 表示 Element-wise 的相乘。
總結
以上是生活随笔為你收集整理的论文超详细精读|六千字:ST-GCN的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Excel操作:使用offset函数让数
- 下一篇: 如何做好“全面”预算管理?提升企业综合竞