6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

論文まとめ:Convolutional Pose Machines

Posted at

はじめに

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. 骨格推定モデルの1つ
  2. 複数 stage に分けて関節位置を推定する特徴量をrefineする
  3. 各 stage で loss を取ることで勾配消失問題に対応する

以下の例では

conv_pose_machine_img00.png

左側の入力画像に対し、その右側 stage 1 では右手首位置を推定しているが、どちらかというと間違って左手首の位置を推定している。

しかしその右(stage 2)、さらにその右(stage 3)と進むに従って精度が増して、正確に右手首位置を推定している。

アーキテクチャ

まずアーキテクチャ全体は以下の図。

conv_pose_machine_img01.png

上側の(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 でのスコアマップの出力

まずこの図の部分。

conv_pose_machine_img01_02.png

画像 $\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 以降は以下。

conv_pose_machine_img01_04.png

現 stage において入力画像 $\bf x$ を畳み込み・プーリングし、特徴量 $\bf x'$ とする。

これに前 stage の出力 $b^p_{t-1}$ を加えて(concatenate?)、さらに複数回畳み込む。

複数 stage の効果

以下の図は各 stage から出力した特徴量を比較したもの。

conv_pose_machine_img02.png

左側4つは stage 1 からの出力。right shoulder や head などは割と正確に位置を特定できてるが、right elbow は間違って右膝辺りの位置を推定している。

このhead 位置や right shoulder位置は次のstageに入力されるので、その空間的な関係性を活かすことで右のstage 2 や stage 3 ではright elbowの位置も正しく推定できている。

また以下の図の下段のように、

conv_pose_machine_img01_01_02.png

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.

6
6
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
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?