圖卷積在基於骨架的動作識別中的應用

極驗發表於2019-05-28
作者簡介  復旦大學微電子工程碩士研究生,即將入學南加州大學,進修計算機工程博士學位。

基於骨架的動作識別(skeleton-based action recognition)一直是計算機視覺領域中的一個研究熱點,在計算機視覺的各大頂會AAAI、CVPR、NeurIPS 等會議中都能見到它的身影。本文將介紹圖卷積在基於骨架的動作識別中的應用。

在進入正題之前,我們先介紹一下這個問題的一些背景知識。

什麼是基於骨架的動作識別


人的骨架是什麼?相信沒有誰比我們自己更瞭解我們身體的構造了。通俗地說,人骨架框架包括六個部分——頭部、左手、右手、軀幹、左腳和右腳。

在維基百科中有對人骨架更加精確的定義:人體骨架是人身體的內在框架。人剛出生時,體內約有270塊骨頭,成年之後體內骨頭的數量減少為206塊。 

圖卷積在基於骨架的動作識別中的應用

一副骨架可以抽象為兩種元素組成——關節點(joint)和骨骼(bone)。關節點的作用是連線兩根相鄰的骨骼。因此,我們可以把骨架簡化為一個由點和邊所構成的圖(graph)。點對應骨架中的關節點,邊對應骨架中的骨骼。

圖卷積在基於骨架的動作識別中的應用

把一副骨架放在三維歐幾里得空間中,點的屬性就是其對應的三維空間中的座標(x,y,z),邊就是三維空間中的一條線段。在動作識別中,還需要加入另一個維度——時間。人在一段時間內連續有語義的姿勢(pose)變化被定義為動作。例如,招手、坐下、自拍等。在實際應用中,骨架的座標點是通過感測器連續取樣所得到的,在時間維度上是離散的。在計算機視覺領域內,基於骨架的動作識別的定義為:對一副骨架序列進行模式判別,識別這副骨架語義上所代表的執行者所表達的動作。

圖卷積在基於骨架的動作識別中的應用

通常,獲取骨架點的方式有兩種: 

1. 一種方式是通過深度感測器,例如最有名的微軟公司研發的 Kinect 感測器套件,配合Kinect 開發的 SDK,能夠每秒鐘獲取30幀骨架,同時支援採集 6 副骨架,每一副骨架採集 25 個關節點的 3D 座標。2019年,微軟推出了新一代的Microsoft Kinect Azure(https://www.microsoftstore.com.cn/vr-and-mr/azure-kinect-dk/p/mic2574),首次官方支援了 Ubuntu 系統,這對開發者來說是一個好訊息。此前的kinect SDK在 ubuntu 系統上執行需要使用開源的libfreenect2。

(https://github.com/OpenKinect/libfreenect2) 

2. 第二種方式是通過影象配合骨架提取演算法來從視訊中獲取骨架序列,但是提取到的骨架座標是在影象中的 2 維座標。

從影象中提取骨架比較有名的開源庫有 

Deep pose

https://github.com/mitmul/deeppose 

open pose

https://github.com/CMU-Perceptual-Computing-Lab/openpose


骨架序列的資料集


目前,在該領域內比較常用的資料集是NTU  RGB+D(http://rose1.ntu.edu.sg/datasets/actionrecognition.asp) 資料集。資料集用3個Microsoft Kinect v2 感測器採集,含有 56880 動作序列的樣本,一共包含 60 類動作,主要分為三個大類:
日常動作(daily activity)

圖卷積在基於骨架的動作識別中的應用


醫療相關的動作

圖卷積在基於骨架的動作識別中的應用
雙人的互動行為

圖卷積在基於骨架的動作識別中的應用

最近,NTU RGB+D 資料集的釋出者 Rose 實驗室又推出了NTU RGB+D資料集的增強版——NTU RGB+D 120。新的資料集中包含了120類動作,114480個骨架序列的樣本。而且最值得注意的是,為了增加資料的多樣性,採集時攝像機的視角增加到了155個。想深入瞭解新資料集的作者可以參考文獻TPAMI的最新文獻《NTU RGB+D 120: A Large-Scale Benchmark for 3D Human Activity Understanding》。(https://arxiv.org/abs/1905.04757)文中,作者詳細地介紹了新的資料集的各項特性。

基於骨架的動作識別中的應用


問題的數學建模

圖卷積在基於骨架的動作識別中的應用

spatial-temporal graph 中有兩個維度,一個是時間(temporal)維度,一個是空間(spatial)維度。空間維度為一幀內的骨架圖,時間維度的構造是將相鄰幀中的圖同一位置的結點連線起來,從而根據骨架序列構造出了一個spatial-temporal graph。

這種圖的構造方式還在交通網路中用的比較多,來預測交通流量。構造出了骨架序列的spatial-temporal graph(STG),很多論文中採用graph Spatial-Temporal Networks對骨架STG進行分類。下面來介紹幾篇具有代表性的文章:

ST-GCN


《Spatial temporal graph convolutional networks for skeleton-based action recognition》這篇文章是發表在 AAAI 2018 會議上的一篇論文。文章中,作者首次運用Spatial temporal graph convolutional networks在基於骨架的動作識別的問題上。

圖卷積在基於骨架的動作識別中的應用

在文章中,作者提出一種卷積的思路,首先確定一個卷積中心(也就是一個關節點):
1. 在spatial維度上,取與之相鄰的點,作為需要參與卷積的點;

2. 在temporal維度上,取前後幀在相同位置的點,作為需要參與卷積的點。

確定了卷積中心和需要參與卷積的點,進行卷積,聚合時間維度和空間維度上的資訊。作者在文章中給出了多種卷積的策略,有興趣的讀者可以參考原論文了解其數學模型。文章中的ST-GCN 每一層的ST-GCN 的特徵圖結構都一致,中間沒有加入池化層,在最後一層卷積層之後採用了全域性平均池化的策略,將每一個 channel 收縮為一個點,之後採用全連線層進行分類。

作者在github上開源了文章的原始碼:

https://github.com/yysijie/st-gcn

DPRL+GCNN


圖卷積在基於骨架的動作識別中的應用

這是 CVPR 2018 中的一篇論文,作者提出了一種取關鍵幀的方法,類似於視訊壓縮中的取關鍵幀。因為在骨架序列中前後幀的資訊可能會比較冗餘,所以只需要選取序列中比較有代表性的關鍵幀,就可以進行動作的分類識別。所以在 GCNN 之前,作者加入了一個 FDNe t用來提取關鍵幀。作者實驗證明,運用了取關鍵幀的方法,能夠增加識別的準確率。

GEGCN


在文章中,作者提出除了給圖中的點做卷積之外,還可以給圖中的邊做卷積,這就是所說的Graph edge convolution,卷積方式如下圖所示:

圖卷積在基於骨架的動作識別中的應用

取一條邊與之相鄰的邊作為參與卷積的邊,邊的屬性為其在三維空間中的向量表示。 據此,作者設計了一個雙流的圖卷積神經網路,一個是點的圖卷積網路,另一個是邊的圖卷積神經網路:

圖卷積在基於骨架的動作識別中的應用

作者通過實驗證明,加入了Graph edge convolution 能夠有效增加識別的準確率。

SGR-GCN


在文章中,作者提出了一個graph regression based GCN(GR-GCN)網路。GR-GCN的作用是用來學習骨架圖中關節點聯絡的強弱程度,如下圖所示: 

圖卷積在基於骨架的動作識別中的應用

其中Sparsified Spatio-Temporal Graph為通過graph regression 的過程所學習到的圖中結點的聯絡,其中黑色的邊代表具有生理意義上的強聯絡,紅色的邊代表非生理連線但是對於動作判斷很重要的語言聯絡,綠色的邊代表比較弱的聯絡。得到了Sparsified Spatio-Temporal Graph再進一步通過GCN對東西進行分類。作者在實驗中證明了通過graph regression的過程能夠很好地提高識別的準確率。


2s-NLGCN


最開始,文章的標題叫做《Adaptive Spectral Graph Convolutional Networks for Skeleton-Based Action Recognition》,後來不知道什麼原因,作者將文章的名字改為了《Non-Local Graph Convolutional Networks for Skeleton-Based Action Recognition》。筆者覺得可能用《Adaptive Spectral Graph Convolutional Networks for Skeleton-Based Action Recognition》這個標題會更好,因為文章中採用的是 spectral-based graph convolution networks,並且也使用了雙流的網路結構,一個網路處理點(joint)的資訊,另一個網路處理邊(bone)的資訊:

圖卷積在基於骨架的動作識別中的應用


總結

總結前人的論文,我們會發現,在論文中作者往往都會思考一個問題——如何從骨架的序列圖中提取資訊?從維度上考慮,有時間維度和空間維度;從特徵上考慮,有一次資訊關節點的 3D 座標(感測器+SDK直接獲取),有二次資訊關節邊的向量表示;從連線上考慮,可以學習關節點之間語義上連線的強弱(將連線設定為 learnable parameter ),或者是提取骨架序列中的關鍵幀。筆者覺得可以從更多的角度來思考這個問題,或許能夠發現新的想法,進行創新。

例如:
1. 利用新的特徵
2. GCN中間加入pooling層

之前,圖卷積已經將 NTU RGB+D 準確率刷得很高了,基本上算是屠榜了,準確率一點小的提升都很困難了。而新的 NTU RGB+D 120 資料集釋出在即,預計一個新的分數榜將要出現,相信會有更多好的 idea 出現,將這一領域繼續推進下去。如果讀者有興趣研究該領域,可以更多地關注南洋理工大學的 Rose Lab,他們是該領域資料集的釋出者和演算法研究的領頭者。


感謝作者的辛勤分享!


參考文獻

1. https://en.wikipedia.org/wiki/Human_skeleton
2. Shahroudy A, Liu J, Ng T T, et al. NTU RGB+ D: A large scale dataset for 3D human activity analysis Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 1010-1019.
3. Liu J, Shahroudy A, Perez M, et al. NTU RGB+ D 120: A Large-Scale Benchmark for 3D Human Activity Understanding. arXiv preprint arXiv:1905.04757, 2019.
4. A Comprehensive Survey on Graph Neural NetworksYan 
5. S, Xiong Y, Lin D. Spatial temporal graph convolutional networks for skeleton-based action recognition Thirty-Second AAAI Conference on Artificial Intelligence. 2018.
6. Tang Y, Tian Y, Lu J, et al. Deep progressive reinforcement learning for skeleton-based action recognition Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 5323-5332.
7. Zhang X, Xu C, Tian X, et al. Graph edge convolutional neural networks for skeleton based action recognition. arXiv preprint arXiv:1805.06184, 2018.
8. Gao X, Hu W, Tang J, et al. Optimized Skeleton-based Action Recognition via Sparsified Graph Regression. arXiv preprint arXiv:1811.12013, 2018.
9. Shi L, Zhang Y, Cheng J, et al. Non-Local Graph Convolutional Networks for Skeleton-Based Action Recognition. arXiv preprint arXiv:1805.07694, 2018.

相關文章