はじめに
CVPR2017 から以下の論文
[1] G. Pavlakos, et. al."Coarse-to-Fine Volumetric Prediction for Single-Image 3D Human Pose", CVPR2017.
のまとめ
● 著者らのプロジェクトページ
https://www.seas.upenn.edu/~pavlakos/projects/volumetric/
● arXiv:
https://arxiv.org/abs/1611.07828
● 既にいくつかまとめ記事が存在する。
1)yusuke ujitoko 氏のブログ:
http://yusuke-ujitoko.hatenablog.com/entry/2017/08/06/015654
2)DeNA naoki kato 氏のまとめ:
https://engineer.dena.jp/2019/12/cv-papers-19-3d-human-pose-estimation.html
● コード
1)著者らの matlabでの実装
https://github.com/geopavlakos/c2f-vol-demo
2)その他有志の caffe での実装
https://github.com/strawberryfg/c2f-3dhm-human-caffe
概要
- 単眼カメラから3次元の姿勢を推定するモデル
- 関節の heat map を3次元的に推定する
- hourglass なネットワークを複数回繰り返すことで深さ方向の推定精度を増していく
2に関しては以下の図のような Volumetric な heat map を出力する。
3次元 heat map
3次元 heat map は2次元 heat mapを3次元に拡張したもので、図にするとこんな感じか?
2次元 heat map と同様に関節点に対してガウシアンをかけ、生成する。関節点を $(i,j,k)$ とすると、$(x,y,z)$ における heat map の値は
G_{i,j,k}({\bf{x}}^n_{gt}) = \frac{1}{2 \pi \sigma^2} \exp \left[ - \frac{(x-i)^2 + (y-j)^2 + (z - k) ^2}{2 \sigma^2} \right]
となる。よくある heat map と違って基準化定数があるが、 $\sigma = 2$ を使用するので、山のピークはそれほど低くならないだろう。
loss は MSE。
\mathcal{L} = \sum^N_{n=1} \sum_{i,j,k} \| G_{(i,j,k)} ({\bf{x}}^n_{gt}) - p^n_{(i,j,k)} \|^2
$n$ は関節の番号。
Carse-to-fine prediction
OpenPose 等で用いられている「モジュールを多段に経てだんだん正確なheatmapにする仕組み」に近いが、幾つかの点で異なる。
1. 深さ方向を少しずつ増やす
違いの1つ目は、ステージを経るごとに深さ方向を増やすしくみ。
voxel なので、中間層における heatmapの要素数をできるだけ減らしたい。そこでステージ1では深さの要素数1、ステージ2では2、ステージ3では4、と $2^n$ で増やしていく。
2. 中間層の heat map を分離する
以下の図で

(a)では prediction の一部であるあるステージの heatmap に対し、そのまま次のステージの入力として利用している。
これだと特にステージ1においては深さ方向が1、つまり2Dの画像になるが、その情報のみから次のステージで深さ方向を復元することになってしまう。これは困難だろう。
そこで(b)のように深さ情報も含めた特徴量とheatmapとを分け、その後両者をconcate(?)して次のステージに伝える。
実験と結果
1. 3次元 heat map の効果
各関節の座標を回帰問題として解いた場合と3次元 heat map を用いた場合との mean per joint error の比較。
3次元 heat map の方がよい。
2. 多ステージなアーキテクチャの効果
例えば、左側が L1:64 depth, L2:64 depth と常に64 の深さのheat mapを出力する場合と、その右側 L1:1 depth, L2:64 depth と最初は小さく、その後大きくする場合とを比較した場合、後者の方が mean per joint error は低くなっている。
中間層のfeature map 、あるいはその周囲のパラメータは減っているはずだが、逆に性能がよくなっていて、興味深い。
3. 他モデルとの比較
Human 3.6M dataset でたモデルとの比較をした場合、 reconstruction error はかなり小さくなっている。なぜメトリクスを変えた?
4. 定性的評価
左側入力画像に対し、その右2つが prediction。predictionの左は入力画像と同じ角度から見た3d poseで、その右はそれを回転させたもの。