全面詳解!圖卷積在動作識別方向的應用(下)

極驗發表於2020-01-03

本文結合現有的文獻和方法以及作者自己的實踐理解,詳細闡述了圖卷積在基於骨架的動作識別方向的應用,內容翔實,值得一讀。

文章的脈絡為:

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γtdt],其中前三個分別對應是三個軸的旋轉引數,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 演算法獲得。

相關文章