LoginSignup
2
3

More than 1 year has passed since last update.

論文まとめ:Skeleton-Based Action Recognition with Shift Graph Convolutional Network

Posted at

はじめに

CVPR2020から以下の論文
[1] K. Cheng, et. al."Skeleton-Based Action Recognition with Shift Graph Convolutional Network." CVPR2020
のまとめ

CVF open access:
https://openaccess.thecvf.com/content_CVPR_2020/html/Cheng_Skeleton-Based_Action_Recognition_With_Shift_Graph_Convolutional_Network_CVPR_2020_paper.html

公式コード:
https://github.com/kchengiva/Shift-GCN
-> pytorch 0系

概要

  • 骨格から行動を推定する系のモデル
  • graph convolutionにshift-convの仕組みを取り入れた
  • それにより直近SOTAなモデルと比較して高い精度を達成しながら、かつ10倍以上の高速化を実現した

以下はGCN系の有名モデルと精度(accuracy)、速度(GFLOPs)を比較したもの

shift_GCN_img00.png

関連研究

ここではshift-GCNを理解する上で必要となる、1)通常のconv、2)GCN、3)shift-cnnをざっくりおさらい。

1)通常のconv

言わずもがな、通常のconv。説明略。以下の図で概観すると

shift_GCN_img01_2.png

$(D_F, D_F, C)$ のfeature mapに対して3 x 3 x C x C'のkernelで畳み込む。

2)GCN

こちらも略。
拙著記事等参考に。
https://qiita.com/masataka46/items/78480b730df1326b883b

以下の図で概観すると

shift_GCN_img01_4.png

左端は隣接行列や単位行列など(を恐らく正規化したもの)で、これをmultiplyすることで関係のないconnectionを削除する。その右はfeature mapで、縦のNが各joint、奥側のCがchannel。それに1x1convで畳み込む。

3)shift-CNN

shift-CNNは[2]などで提案されているconvolutionのしくみ。以下の図

shift_GCN_img01_3.png

のようにfeature mapをチャンネル毎に別の方向にずらす。その後1x1 conv(point-wise)で畳み込む。

通常のconvではkernelの大きさの分だけ層を重ねる毎に受容野が広がっていくが、shift-convの場合はshiftすることにより受容野が広がる。

$S_i = (x_i, y_i)$ を i チャンネルにおける x 方向および y 方向のshiftとして、受容野は1つの層で

R = \{ -S_1 \} \cup \{ -S_2 \} \cup \cdots \cup \{ -S_C \}

だけ広がる。具体的には各方向1のshiftなら、3x3となる。

これによって畳み込みの演算量を大幅に減らすことができる。例えば、通常の畳み込みでは、
$D_F$ :feature mapの大きさ
$D_K$ :kernelの大きさ
$C$ :入力側チャンネル数
$C'$ :出力側チャンネル数
として

D^2_K \times D^2_F \times C \times C'

だが、shift-convの場合はkernelが 1x1なので

1^2 \times D^2_F \times C \times C'

となり、大幅に減る。

Shift graph convolutional network

本題のshift-GCN。

  • local graph shift operation
  • non-local graph shift operation

の2種類がある。

local graph shift operation

shiftさせるのは隣のnodeに対してのみ。以下の図で考える。

shift_GCN_img02_1.png

node7つが図中左のようにつながっている。中央・右のmatrixは縦がnode、横がchannelを表す。channel数は20。

node 1 に注目すると、node 2 のみとつながっている。よって1)shiftしない、2)node 2がshiftしてくる、の2パターン。20 channelを2で割って、前半のチャンネルはshiftせず、後半のチャンネルでnode 2をshiftさせる。(図中、中央上)

次に node 2 に注目すると、node 1, node 3, node 4 と繋がっているので、1)shiftしない、2)node 1がshiftしてくる、3)node 3がshiftしてくる、4)node 4がshiftしてくる、の4パターン。チャンネルを4つのpartにわけ、第1partはshiftしない、第2partはnode 1をshiftさせる、第3partはnode 3をshiftさせる、第4partはnode 4をshiftさせる。(図中、中央下)

こうすると最終的に図中、右のようなshift後のfeature mapができあがる。

non-local graph shift operation

上記の local graph shift operation は以下2つの問題点がある。

  1. shift後のmatrix(図中、右)のnode3に注目すると、第4partでは無くなっている。このようにチャンネルによっては無くなるnodeが発生する
  2. 隣接したnodeのみに注目しているため、最近の研究で注目されている離れたnode間の関係性を反映していない

2の具体例として、「拍手」や「読書」は両手の関係性が重要である、など。

ならばいっそのこと、全てのnodeと全てのnodeを繋げてしまえ、というのがnon-local graph shift operation。

shift_GCN_img02_2.png

この図の左では全てのnodeとnodeが繋がっている。

node 1 に注目すると、図の中央上のように ${\bf mod} N$ が0の場合はshiftせず、1の場合はnode 2がshiftする、2の場合はnode 3がshiftする、・・・とする。

node 2 も同様で、図の中央下のように ${\bf mod} N$ が0の場合はshiftせず、1の場合はnode 3がshiftする、2の場合はnode 4がshiftする、・・・とする。

結局、図の右のようなfeature mapが出来上がる。

learnable mask

node間の結合は重要度が違うので、学習するmaskをかけることでこれに対応する。

\tilde{\bf F}_M = \tilde{\bf F} \circ Mask

temporal shift graph convolution

時間方向にもshift convを適応する。以下の2パターンがある。

naive temporal shift graph convolution

時間方向に単純なshiftを行うパターン。

チャンネルを $2u+1$ にわけ、それぞれ -u, -u+1, ・・・, 0, ・・・, u-1, uだけshiftする。

adaptive temporal shift graph convolution

上記 naive temporal shift graph convolution は以下2つの欠点があると著者らは主張。

  1. 任意のframe間の組み合わせが実現できない・・・最近の研究ではこれが重要だそう
  2. manuelにu値を設定することは、そのdatasetに過適合してしまう??? -> ここ意味わからん

よってu 値を適応的にする??

アーキテクチャ全体

  • ST-GCNをベースにする

実験と結果

NTU-RGB+D 60 による他のモデルとの比較

以下はNTU-RGB+D 60を用いた場合の他のモデルとのaccuracy, GFLOPsの比較。

shift_GCN_img09.png

accuracy はSOTAなモデルと大差ないが、GFLOPsは大幅に小さい。

spatial shift の ablation study

shift_GCN_img04.png

local shiftとnon-local shiftを比較すると、後者の方が若干よい。

temporal shift の ablation study

shift_GCN_img06.png

naive shiftとadaptive shiftを比較すると、後者が若干よい。

reference

[2] B. Wu, et. al. "Shift: A Zero FLOP, Zero Parameter Alternative to Spatial Convolutions"

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3