本文結合現有的文獻和方法以及作者自己的實踐理解,詳細闡述了圖卷積在基於骨架的動作識別方向的應用,內容翔實,值得一讀。
文章的脈絡為:
1. 問題簡述
2. 基本概念介紹
3. 方法和思路分析
4. 文獻解讀
4.1 時空特徵的提取
4.2 更全面的空間特徵抽取策略
4.3 資料增強
4.4 綜合方法
由於篇幅較長,將分為上下進行釋出,這是下篇。上篇見:全面詳解!圖卷積在動作識別方向的應用(上)
更全面的空間特徵抽取策略
03
PBGCN: Part-based Graph Convolutional Network for Action Recognition(BMVC, 2019
典型的 part-based 方法,將人體骨架分為多個子圖,定義了子圖內部和子圖之間的資訊傳播方式,這樣便能更好的抽取區域性關節資訊,同時加快資訊傳播速度。
何(geometric)特徵與動力學(kinematic)特徵
這裡的幾何資訊就是骨骼特徵(包含非骨骼連線),即在空間上計算相鄰關節座標差值,動力學特徵就是運動特徵,透過計算相鄰幀對應關節的差值得到。
基於區域性劃分的圖卷積(PBGC)
首先將人體骨架圖分為多個子圖:
並且保證相鄰兩個子圖間至少有一個公共關節。然後對每個節點,首先在其所在的子圖內執行圖卷積,再執行子圖間的資訊傳播:
其中(5)表示在分圖p中的點vi的卷積結果,Nkp是點vi在子圖p中的鄰接節點集合,Wp表示點子圖p的權重矩陣(不與其他子圖共享),(6)表示點vi與相鄰子圖的鄰接節點之間的資訊聚合。其中聚合函式定義如下:
即加權平均。因此,每個點先在其所屬子圖內的鄰域進行圖卷積,再與相鄰子圖的鄰接節點進行資訊聚合。
由於不同子圖之間不共享權重,因此子圖劃分策略就異常重要。本文提出了多種不同的劃分策略,可以按上下不同肢體劃分,可以按左右劃分,其中效果最好的是四部劃分:
這是因為人體骨架左右對稱,左手和右手往往具有非常相似的行為,適合共享權重,而不同型別的肢體往往具有不同的運動特徵,因此適合劃分到不同子圖。
時空圖卷積
這部分與ST-GCN中的時空圖卷積比較相似。
公式15表示時域卷積,將每個關節與該關節前後τ幀內的值做加權求和。
04
2s-SDGCN Spatial Residual Layer and Dense Connection Block Enhanced Spatial Temporal Graph Convolutional Network for Skeleton-Based Action Recognition(ICCV 2019,workshop)
本文方法相對較簡單,即認為空間資訊重要性更強,因此在殘差連線中也進行圖卷積:
上方綠色部分是本文使用的殘差連線,而ST-GCN是用的殘差連線只有簡單的通道變換,沒有鄰接矩陣參與運算。
用公式表示如下:
此外,還新增了dense連線(DCB):
將這兩種方法結合到一起,再嵌入到其他方法中。
05
STGR: Spatio-temporal graph routing for skeleton-based action recognition(AAAI, 2019)
本文從時間和空間的角度設計了鄰接矩陣計算方法,以計算節點之間的時間和空間關係。雖然設計了較為複雜的鄰接矩陣策略,但效果並不如2S-AGCN。
空間圖路由子網路
首先根據一種無引數圖劃分策略,將每一幀的原始圖劃分為K個子圖。將每個子圖都當成強連通圖,這樣就能得到空間圖序列:
為1時,表示關節i與j在時刻t是相連的,為0時表示不相連,是否相連是根據子圖劃分情況來決定的,而任意兩個子圖的節點之間都不會相連(完全隔離)。
得到了空間連線圖序列後,就要從所有圖中選出最具資訊的一個,首先用7*7的卷積來聚集區域性特徵,然後再全域性取平均(GAP):
這樣就將每一時刻的圖都用一個標量值來表示:
這樣就包含了圖的所有資訊,並且是一個序列。使用兩層全連線層來對m進行進一步加權:
其中:
得到的μ也是一個長為T的權重向量,將T作為權值,回代到原圖G中,並在時間範圍做平均:
整個這一步,實際上就是對每個時刻的圖做了一次加權平均。
時間路由子網路
首先將輸入序列用每個關節的時序軌跡來表示,這樣就得到了N個獨立的關節軌跡。接著用一個LSTM來學習每個關節軌跡的淺層表示:
將LSTM最後一個時間步的隱狀態作為該關節軌跡的最終表示。(這裡說LSTM在不同關節軌跡間引數不共享)得到關節特徵經過編碼後的特徵序列:
接著透過FC層轉換和向量點乘(類似於embedded高斯函式)來計算兩個關節之間的聯絡:
最終學習到關節之間的時域聯絡。
時空特徵融合
網路結構示意圖
透過concate的方法融合學習到的圖,然後進行圖卷積。
關節連線視覺化
圖(a)是關節的原始關節骨骼連線,圖(b)是空間圖路由學習到的關節連線,圖(c)是時間圖路由學習到的連線。
學習到了時間和空間圖分別對應各自的鄰接矩陣,在進行圖卷積時透過加法進行特徵融合:
其中。這個公式和ST-GCN很相似,只不過ST-GCN中只有三個不同的空間圖,沒有時間圖。因此本文的工作實際上就是在ST-GCN的基礎上,增加了兩個額外的鄰接矩陣策略,其他地方沒有明顯改動。最佳化時不僅使用分類損失函式,還使用圖稀疏損失函式,以確保圖的稀疏性:
06
AGC-LSTM: An Attention Enhanced Graph Convolutional LSTM Network for Skeleton-Based Action Recognition(CVPR,2019)
傳統的 LSTM 每一時間步的輸入都是一維向量, convLSTM 將卷積操作作為元計算方式,從而讓LSTM 可以接受圖片時間序列作為輸入,進一步地,本文將 GCN 作為 LSTM 的元計算方式,從而可以讓 LSTM 可以接受圖時間序列作為輸入。
資料增強
透過求相鄰幀插值可以得到motion資訊,再透過FC和將motion資訊與原始資料結合,然後透過LSTM進行初步的通道擴張:
得到的Eti具有512通道數,作為LSTM網路的輸入。此外,本文還將part流作為另一個資料流:
透過雙流融合來提升效果。
注意力增強型圖卷積LSTM網路
和傳統LSTM一樣都具有三個門結構,輸入門,遺忘門,輸出門。但是這些門是透過圖卷積操作來計算的。單元結構和計算公式如下:
空間注意力機制
對每個時步而言,將其所有節點對應的輸出值加權求和:
然後再新增res連線:
計算得到一個attention係數αt,注意αt長度是一個長度為N(節點數)的向量,最終該時間步節點 i 的輸出值為:
在最後一層,將不同節點的輸出聚合起來,就得到了該時間步的最終輸出值:
得到的(global)和(local)用於最終的動作類別預測。
時序平均池化
在AGC-LSTM層之間進行時間維度上的池化,可以逐步提高AGC-LSTM層的時間感受野,同時也能大幅度降低計算量。
損失函式
不僅對和輸出進行監督,還額外對他們的 attention 值進行監督,第三項保證對不同的關節賦予的相同的注意力,第四項保證關注的關節數量是有限的。
筆者認為只要是多輸入網路,不侷限於單純的關節位置,就可以看成是一種資料增強方法。從前面的一些文章中可以發現資料增強是廣泛使用的策略,這裡介紹一些以資料增強為核心的文章。
01
VA-fusion: View Adaptive Neural Networks for High Performance Skeleton-based Human Action Recognition(TPAMI, 2018)
光學估計和穿戴式感測器是目前常用的兩種三維運動資料採集方法。而光學估計會受到機位和視角的影響,即對同一段動作,在不同的機位和角度下,估計得到的3D骨骼資料是有差異的:
本文提出了一種視角自動學習網路來解決這個問題,即讓網路自行學習最佳的攝像機視角,即對骨架進行一定的旋轉和平移,引數為[αt, βt, γt, dt],其中前三個分別對應是三個軸的旋轉引數,dt表示位移,因此變換公式為:
對每一幀,都有一組對應的視角變換引數。
可以分別在RNN和CNN上學習視角變換,不同的網路對應不同的變換方法:
其中LSTM作為主網路時,透過LSTM層學習四個引數(對每一幀)在CNN作為主網路時,先將骨架對映為偽RGB圖,然後透過以下公式進行座標變換:
其中 R 是旋轉矩陣,由旋轉引數得到。
本文還提出了隨機旋轉骨架的資料增強方法,可以在一定程度上降低過擬合。此外,將座標原點移動到每個動作第一幀的身體中心,這樣可以讓網路對起始位置不敏感。
02
3SCNN:Three-Stream Convolutional Neural Network with Multi-task and Ensemble Learning for 3D Action Recognition(CVPR workshop, 2019)
傳統的資料增強方法中,joint, bone, motion資料通常是獨立的,透過在網路最後進行融合來提高識別精度。本文提出可以在網路中段對三個特徵流做資訊互動。
整個網路分為三個stage:
資料增強
從原始資料中額外生成motion 和 bone 資料,這樣就有三個資料流。
Enhanced point-level feature learning
資料特徵增強。作者認為即便是3D骨骼資料,同一序列不同的機位下估計得到的資料仍然具有差異,因此可以將原始動作透過座標旋轉變換來增強,即coordinate adaptive module。而旋轉矩陣不是人工提前設定,而是由網路透過FC層學習得到:
L就是旋轉矩陣的個數,即增強的資料倍數。將得到的L組增強資料在通道維度進行concat,然後再透過point-level convolution(參考HCN)進一步提取特徵。
Pairwise feature fusion
將三個資料流進行特徵融合,有兩種融合方法:
Conv block包含兩層卷積,卷積核大小都是3*3,channel為128, 256。Concat即特徵融合,在通道維度上融合。圖(a)是不共享conv block的引數,其效果要好於圖(b)的共享引數block,但相應的引數也增多。
Ensemble
將三個資料流透過損失函式求和的方法實現相互監督:
03
SGN: Semantics-Guided Neural Networks for Efficient Skeleton-Based Human Action recognition
側重於模型的效率,透過人工特徵工程來進行資料增強,從而保證網路能在更少的層數下(相對於之前的GCN工作),仍然能達到很好的效果。
Dynamics and Semantics information
其中velocity就是同一關節前後幀之間的差值(到目前為止,我們所瞭解到的差值有兩種:一種是時間上,相鄰幀的差值,這是一種簡單的 temporal資訊,另一種是空間上,相鄰關節的座標差,稱為bones資訊,從2s-AGCN和DGNN的實驗結果來看,透過求差得到的bones資訊對分類帶來的提升效果要遠高於temporal資訊)。Velocity 和 position 統稱為dynamics資訊。
Frame index 和 joint type 就是 semantics 資訊,用 One-hot 表示。
透過兩層FC分別將這四種資訊對映到高維空間,然後再透過concate的方式進行特徵聚合:
Semantic-aware graph convolution
不能只使用dynamic資訊來決定關節之間的連線,因為不同關節對的dynamics資訊可能相同,而他們的連線權重應該是不同的。即便是同一個序列,其在不同幀中的關節之間的關係也可能不同。因此還需要聯合sematic資訊。對於一個T幀,每幀有J個關節的序列,為其構建一個有T*J個節點的圖。其中幀號為t,關節號為j的關節,其對應第J(t-1) + j 個節點。這樣便能得到一個spatio-temporal graph,可以對這個graph計算相應的鄰接矩陣,接著透過動態的圖內容自適應連線(content adaptive connections)來計算鄰接矩陣,和2S-AGCN不同的是,本文提出即便是在一個序列內,不同幀所包含的關節併發資訊也不同,因此需要將自適應性細化到每一幀。計算方法類似於高斯函式:
接著透過GCN和 residual 殘差連線的結合,來實現資訊在關節間的傳播:
其中 G 是鄰接矩陣,所有W都是可學習的權重矩陣(變換矩陣)。自適應鄰接矩陣會將圖變成強連通圖,因此發掘的資訊是全域性 global 資訊,而對於區域性的資訊(parts, local),可以用CNN來發掘。
Semantics-aware convolution
GCN主要是提取了關節之間全域性關聯(global correlation)的探究,這是因為adaptive connections讓每個關節都有一個覆蓋其他所有關節的卷積核(表現在鄰接矩陣G上),而CNN具有更小的卷積核,可以發掘關節之間的區域性關聯(local correlation)模式(pattern),這和之前的那些基於parts的方法有相同的思想。
01
Sym-GNN: Symbiotic Graph Neural Networks for 3D Skeleton-based Human Action Recognition and Motion Prediction(submitted to IEEE-TPAMI,2019)
本文是CVPR 2019文章:Actional-Structural Graph Convolutional Networks for Skeleton-based Action Recognition(AS-GCN)的期刊版本。進行了一些改進,效果要比AS-GCN好一些。
本文融合使用了諸多上面已經介紹過的方法,並提出了預測和分類任務相互監督的訓練方法,可以有效提升模型對關節特徵的獲取能力。
資料增強
首先將 bone 也作為一個獨立資料分支,透過和 joint 流融合得到預測結果。(上圖中的 Dual 和 Prime )。
其次提出透過求差值,求導操作(difference operate)獲取關節的動態資訊,包括移動向量(motion),速度和加速度:
β 取0,1,2時分別對應motion,velocity和accleration。
鄰接矩陣策略
本文的鄰接矩陣策略相對其他工作要複雜一些,主要由以下兩部分構成:
1. Actional Graph Convolution(AGC)
首先設計了一種資訊在節點和邊之間迴圈傳播更新的方法,這樣做是為了得到節點的高維特徵表示,進而用於計算鄰接矩陣,而不是直接更新節點資訊:
注意,第0次迭代時,每個節點的輸入是該節點在所有幀的位置所構成的序列,即關節軌跡(node trajectory),因此以上公式不包含維度t的資訊。F都表示FC層。
實際上,這樣的資訊逐層傳播迭代的思想與GCN相同,但細節不同。首先始終以節點為終點,而邊只是中間變數,其次任何兩個點之間都要進行傳播,相當於是在強連通圖下進行特徵傳播,而不侷限於關節的物理連線。多次迭代後每個節點都能充分的聚合其他所有節點的資訊。且不同於ST-GCN,因為節點在資訊傳播時,是帶著時序所有資訊進行傳播的。
在經過了K次迭代後,每個節點的特徵都得到了更新,此時根據embedded高斯函式來計算兩個節點之間的關聯絡數,由此得到一個新的鄰接矩陣:
f 和g分別是兩個 embedding 全連線層。學習到的鄰接矩陣類似於2S-AGCN中的 attention 鄰接矩陣,只不過embedding採用的是全連線層而不是卷積層。這部分的整體計算流程如下:
計算得到鄰接矩陣後,進行常規的圖卷積:
注意此時圖卷積的物件就是每一幀的資料(t上標),而不是關節軌跡。
1.2 Structural Graph Convolution(SGC)
這部分透過對基礎鄰接矩陣取不同的冪次來提升每個節點的感受野,卷積公式如下:
依然是對每幀進行圖卷積,其中γ表示對鄰接矩陣取γ冪次。此外,類似於ST-GCN,還為A新增了加權權重:
1.3 joint scale graph convolution(JGC)
對前面兩部分卷積結果加權求和:
注意這裡卷積物件都是單幀圖。本文還提出了一種關節位置限制機制,來限制每一層提取的特徵的變化程度,從而提高穩定性,降低噪聲資料的影響。
時序特徵提取
joint-scale graph and temporal convolution block(J-GTC)
時序卷積就是在沿著時間維度做卷積,這部分的思想和ST-GCN相同,先進行空間上的圖卷積,再進行時間上的一般卷積,如此反覆,可以串聯地學習時空特徵:
ρ 是非線性啟用函式。TC 將每個關節與其前後多幀範圍內的值進行卷積,屬於1D 卷積。
J-GTC block同時包含了batch norm,dropout,residual connection模組。
多尺度卷積:Part-based策略
GC-LSTM將part-based流作為獨立資料流輸入,只在最後與Joint流做特徵融合,本文加強了兩個資料流之間的資訊交流,主要是在合適的位置將兩個特徵流沿節點維度進行拼接:
首先將人體分為多個part,每個part內的關節取平均值,這樣每個part就變成了一個節點這麼做相當於降低了圖的解析度。兩個資料流透過pooling和matching的方法進行特徵互動。Matching是將part scale圖的單個節點複製多次,得到joint scale圖。
分類和預測任務共同監督
同時進行動作識別和動作預測的任務(分別使用不同的任務網路),在最佳化時,損失函式為二者的加權和:
其中引數透過 multiple gradient descent algorithm 演算法獲得。