はじめに
arXivにある以下の論文
[1] J. Liu, et. al."A Graph Attention Spatio-temporal Convolutional Network for 3D Human Pose Estimation in Video
"
のまとめ
Journal等は不明。
github:
https://github.com/fabro66/GAST-Net-3DPoseEstimation
MIT license, pytorch 1系
概要
- 3次元の人の姿勢推定に関するモデルで、sequentialな2Dの骨格を入力として3Dへliftingするもの
- graph convolutionを使うが、隣接関節における対応のみならず、体の対称性に関する対応、及びより広範囲の対応も考慮に入れる
- 特に広範囲の対応はattentionを使う
こんな感じで、姿勢によって体の一部が別の一部によって見えなくなる(self-occulution)でも割と正確に推定する
アーキテクチャ全体
アーキテクチャの全体像は以下
1)まず左のようなビデオフレームに対して2D骨格推定モデル(例えばHRNet)で各フレームの2D keypointsを推定する。
2)それをGAST-Netで3D poseにliftingする。
3)3Dのground truthと MSE lossを計算し、学習する
特にGAST-Netは
(a) 時間方向に畳み込む temporal convolution model
(b) 近接する関節ペアに対してgraph convする local attention graph
(c) 離れた関節ペアに対してgraph convする global attention graph
などからなる
以下はモデルのアーキテクチャの詳細
左上は全体像だが、3回のgraph attention block、2回のtemporal conv blockを含む。
graph attention blockは右のように、1) GCN Global attention系統、2)GCN Connection系統、3)GCN Symmetry系統などに分岐するが、最終的にaddされて、1つに統合される。
Temporal conv blockはresicualな形。
以下は各要素の詳細
Temporal convolutional Network
dilated convで時間方向に畳み込む
Local Attention Graph
$N$ :関節数
$A \in \mathbb{R}^{N \times N}$ :adjacency matrix or symmetric matrix
$I \in \mathbb{R}^{N \times N}$ :identity matrix
$\tilde{A} = (A + I)$
$W \in \mathbb{R}^{C_l \times C_{l+1}}$ :outputのチャンネルへ変換する学習対象の重みmatrix
$X^{(l)}$ :l 層からの出力
$X^{(l+1)}$ :l+1 層からの出力
$M \in \mathbb{R}^{N \times N}$ :学習対象のマスク
として
X^{(l+1)} = \rho (M \odot \tilde{A} ) X^{(l)} W
マスクをチャンネルごとにすると
X^{(l+1)} = \|^{C_{l+1}}_{c=1} \rho (M_c \odot \tilde{A} ) X^{(l)} w_c
ここで記号 $ || $ はチャンネルのconcat。
A は adjacency matrixの場合(つまり先のFig 3 右図によけるGCN Connection)以下の図の(c)
second orderの隣まで考慮している。
symmetric matrixの場合(つまり先のFig 3 右図によけるGCN Symmetry)は(b)。左右の手における動きの違いになどに注目することを狙ったか?
Global Attention Graph
global attention graphに関しては以下の演算を行う。
X^{(l+1)} = \|^{C_{K}}_{k=1} (B_k + C_k) X^{(l)} W_k
$B_k \in \mathbb{R}^{N \times N}$ :適応的globalな隣接行列
$C_k \in \mathbb{R}^{N \times N}$ :学習対象のglobalな隣接行列
だそうだが、割愛。
実験と結果
Human3.6Mでの定量的評価
本モデルはlifting部分なので、Protocol 1 のGTで見ると、31.4と結構良い。