はじめに
ECCV2018 より以下の論文のまとめ
[1] X. Sun, et. al. "Integral Human Pose Regression"
arXiv:
https://arxiv.org/abs/1711.08229
著者らのコード:
https://github.com/JimmySuen/integral-human-pose
Pytorch実装。
日本語のまとめ:
1)松尾研 Hiromi Nakagawa氏のslideshare
https://www.slideshare.net/DeepLearningJP2016/dlhuman-pose-estimation-eccv2018-117009678
2)DeNA 加藤直樹氏のまとめ
https://engineer.dena.jp/2019/12/cv-papers-19-3d-human-pose-estimation.html#sun2018
既に日本語まとめが存在するので、ロジック部分だけまとめ
概要
- 3D 姿勢推定をするモデル
- heat map に対して argmax をとると微分不可になるので、ここを「Integral Pose Regression」なる微分可能なものに変えた
Integral Pose Regression
$k$ 番目の関節に対する heat map を ${\bf{H}}_k$ とし、そこから得る関節 $k$ の座標を ${\bf{J}}_k$ とする。
一般的な heat map からpeakを取得する処理は
\newcommand{\argmax}{\mathop{\rm arg~max}\limits}
{\bf{J}}_k = \argmax_{\bf{p}} {\bf{H}}_k ({\bf{p}})
とargmax を使う。
ここを領域全体の期待値に変える。
{\bf{J}}_k = \int_{{\bf{p}} \in \Omega} {\bf{p}} \cdot \tilde{\bf{H}}_k ({\bf{p}})
$\tilde{\bf{H}}_k$ は正規化した heat map で、具体的にはドメイン $\Omega$ に渡って softmax をとる。
\tilde{\bf{H}}_k = \frac{exp[{\bf{H}}_k ({\bf{p}})]}{\int_{{\bf{q}} \in \Omega} exp[{\bf{H}}_k ({\bf{p}})]}
つまり、前回の記事で取り上げた 「2D/3D Pose Estimation and Action Recognition using Multitask Deep Learning」
https://qiita.com/masataka46/items/38321c77cf4b0610bbaa
とほぼ同じ発想。
チャンチャン。