はじめに
CVPR2016 から以下の論文
[1] S. Wei, et. al. "Convolutional Pose Machines"
のまとめ。
かなり古い論文だが、その後の影響(特にOpenPoseへの影響)も加味して一読&まとめる。
arXiv:
https://arxiv.org/abs/1602.00134
既に日本語でいくつかのまとめ記事が存在する。
yusuke ujitoko氏の緑茶思考ブログ:
http://yusuke-ujitoko.hatenablog.com/entry/2017/07/21/012238
Takanori Ogata氏のslideshare:
https://www.slideshare.net/takanoriogata1121/convolutional-pose-machines
コードも著者らのを含めてgithub上に幾つか存在。
https://github.com/shihenw/convolutional-pose-machines-release
概要
- 骨格推定モデルの1つ
- 複数 stage に分けて関節位置を推定する特徴量をrefineする
- 各 stage で loss を取ることで勾配消失問題に対応する
以下の例では

左側の入力画像に対し、その右側 stage 1 では右手首位置を推定しているが、どちらかというと間違って左手首の位置を推定している。
しかしその右(stage 2)、さらにその右(stage 3)と進むに従って精度が増して、正確に右手首位置を推定している。
アーキテクチャ
まずアーキテクチャ全体は以下の図。

上側の(a), (b) は[2]Pose Machine のアーキテクチャ。中段(c), (d)の部分が本CPMs。
OpenPoseのconfidence map を出力する部分に非常に似てる。
変数等の定義
$\bf x$ :入力画像
${\mathcal{Z}}$ :画像の任意のピクセル
$t \in \{ 1 \cdots T \} $ :stage
$Y_p \in {\mathcal{Z}} \subset {\mathbb{R}^2}$ :人の体の $p$ 番目の部位(右手首など)の位置
$Y = (Y_1, \cdots , Y_p)$ :$p$ 個の全ての体の部位の位置
$g_t (\cdot)$ :$t$ stage 目における各部位を推定する関数で、今回はCNN。
stage 1 でのスコアマップの出力
まずこの図の部分。

画像 $\bf x$ を入力し、複数回畳み込み、プーリングを行い、各体部位のスコアマップ $b_1$ を出力する。
g_1 ({\bf{x}}_{ z}) \to \{ b_1^p (Y_p = z) \}_{p \in \{ 0 \cdots P \}}
stage t でのスコアマップの出力
stage 2 以降は以下。

現 stage において入力画像 $\bf x$ を畳み込み・プーリングし、特徴量 $\bf x'$ とする。
これに前 stage の出力 $b^p_{t-1}$ を加えて(concatenate?)、さらに複数回畳み込む。
複数 stage の効果
以下の図は各 stage から出力した特徴量を比較したもの。

左側4つは stage 1 からの出力。right shoulder や head などは割と正確に位置を特定できてるが、right elbow は間違って右膝辺りの位置を推定している。
このhead 位置や right shoulder位置は次のstageに入力されるので、その空間的な関係性を活かすことで右のstage 2 や stage 3 ではright elbowの位置も正しく推定できている。
また以下の図の下段のように、

stage を重ねるに従って受容野が広がるので、より広範囲からの情報を用いて位置を推定することができる。
勾配消失問題への対応
しかし受容野を広げるだけなら層を深くするだけでもよい。
stageにわけるメリットは、各 stageでlossをとるところにある。これにより入力に近い側において勾配が消失するのを防ぐ。
Loss
先に述べたように、勾配消失問題対策により各 stage で loss をとる。$t$ stage 目のlossは以下の二乗誤差。
f_t = \sum^{P+1}_{p=1} \sum_{z \in \mathcal{Z}} \| b^p_t(z) - b^p_{*}(z) \|^2_2
関節数 $P$ より1つ多くなってるのは back ground のチャンネルを含むため。米印はtarget。
これを足し合わせたものがトータルのloss。
\mathcal{F} = \sum^T_{t=1} f_t
reference
[2] V. Ramakrishna, D. Munoz, M. Hebert, J. Bagnell, and Y. Sheikh. Pose Machines: Articulated Pose Estimation via Inference Machines. In ECCV, 2014.