Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
[DL輪読会]VNect: Real-time 3D Human Pose Estimation with a Single RGB Camera
1. VNect: Real-time 3D Human Pose
Estimation with a Single RGB Camera
Atsushi Kayama
M2 Kanzaki Takahashi Lab
2. 書誌情報・選定理由
p VNect: Real-time 3D Human Pose Estimation with a Single RGB Camera
n Dushyant Mehta1,2 Srinath Sridhar1 Oleksandr Sotnychenko1 Helge Rhodin1 Mohammad Shafiei1,2
Hans-Peter Seidel1 Weipeng Xu1 Dan Casas3 Christian Theobalt1
- 1Max Planck Institute for Informatics (GVV Group) 2Saarland University 3Universidad Rey Juan Carlos
n Submitted on 3 May 2017
n CVPR2017, SIGRAPH 2017
p 選定理由
n リアルタイムで単一RGBカメラ映像から3次元関節位置座標推定を行うための工夫が記されている
- 先端人工知能論 Ⅱ のプロジェクトで実装して筋トレ回数カウント,姿勢評価に使いたかった.
p Excuse
n モデルの学習部分について記述が不明瞭な所が多く,所々推測をお話します
n 自身の理解不足でしたら申し訳ありません.
3. 研究目的・関連研究
p RGB-D カメラ(Kinect etc) を用いた姿勢推定にはいくつか問題が存在
n 野外での日光の影響に寄る不安定性・機体は大きくエネルギー消費大・解像度,視野角が限られる
n なにより,普通のカメラほど安くはなく普及もしていない
p 単一RGBカメラを用いた3次元姿勢推定も2015年頃から出てきたが幾つか問題が存在
n オフラインで動かすことが前提
n 画像毎に三次元関節位置推定を行っており,時間変動が不安定
p 単一RGBカメラの映像から,屋内外関わらずリアルタイムで高精度な 3次元姿勢推定を行う
n 2DヒートマップとX,Y,Z 相対座標マップを CNNで推定することにより,画像情報をより考慮した3D姿勢
推定を行う
n BB の計算コストを下げることでリアルタイムに3D姿勢推定を行う
n 3D姿勢推定値にスケルトンフィッティングを行うことで座標値の時間変動を滑らかにする.
4. 処理概要
1. CNN を用いて関節位置座標ヒートマップ作成,推定位置からバウンディングボックス更新
n H : 各関節の存在位置確率ヒートマップ
n X,Y,Z:各関節の pelvis に対する x,y,z 相対座標値マップ
n 例
- 右肩の二次元位置座標は H右肩が最大値となる座標 (r, c)
- 右肩の x 座標は X(r, c),y, z 座標も同様
n 姿勢推定開始時の数フレームは入力画像全体から直接関節座標推定
n 以降は,前のフレームで推定した2D関節位置座標からバウンディングボックスを作成・更新(計算コスト削
減)し,BB内での3D関節座標推定
2. 推定した関節座標の時間変動を平滑化した上で推定関節座標へスケルトンをフィッティング
n スケルトン関節位置座標を推定された関節位置座標との差分,並びにスケルトン関節座標の移動加速度がコス
ト関数を最小化する,スケルトンの位置 d ,関節角度 θ を求める
n スケルトンの関節座標を三次元関節位置座標として利用
5. CNNを用いた3次元関節位置座標推定
p ResNet 50 を基本構造として採用
n 5段目以降を変更
n Stride = 1, padding=’SAME’(推測)
p MPII, LSPデータセットを用いて2D姿勢推定を事前学習
n 重みの初期値は ImageNet 論文のもの(推測)
n H の出力部分のみ誤差を計算して学習(推測)
- ロスはH最大値を取る座標と GT座標のユークリッド距離(推測)
p Human3.6m, MPI-INF-3DHP を用いて3D姿勢推定を学習
6. CNNを用いた3次元関節位置座標推定
p 3D姿勢推定学習における ロス関数
n Pelvis に相対的な各関節 X, Y, Z 適切に出力できるように学習
- 2D関節座標のGTヒートマップは,関節座標を平均とする分散の小さいガウス分布で作成
- 関節が実際に存在する点付近での X,Y, Z 推定値のみ誤差評価
n 2D関節座標推定 H について の3次元データセットでの学習は特に触れられていない
8. CNNを用いた3次元関節位置座標推定
p パラメータ更新アルゴリズム,学習率の調整
n AdaDelta 使用
n 学習率はイテレーション毎に減衰させる
n パラメータ等 詳細は不明
p Human3.6m, MPI-INF-DHPデータを予め人が中心に来るようにCropしたもので学習
n 学習データ例
n Human3.6m:右端上下画像
n MPI-INF-DHP:その他画像
- 背景,椅子,服装についてはクロマキー合成でデータ拡張
n スケールについては 0.7・1.0倍したものを作成
10. スケルトンの3次元関節位置座標推定値へのフィッティング
p 2D 推定座標 Kt 並びに,3D推定 Pt
L の時間変動をフィルタリングで平滑化
n 1€フィルタ [Casiez et al 2012]
p Pt
L から計算できる関節間距離をスケルトンに揃える
n 関節角が変わらないように Pt の座標値を変更する.
p Pt
L との差,関節位置変動の加速度を最小化するようなスケルトンの姿勢 Pt
G を求める
n スケルトンの3次元座標 Pt
Gは,各関節の角度θ,ルート関節(骨盤)の3次元座標で決まる
- 骨の長さは予め決まっているため
n コスト関数を最小化するスケルトンの位置 d ,関節角度 θ を求める
p 求めたスケルトンの3D関節位置座標の時間変動に再び1Euro フィルターを適用
11. スケルトンの3次元関節位置座標推定値へのフィッティング
p Eproj
n 2次元関節座標推定値との差がなるべく小さくなるようにスケルトンのθ, dを調整する項
- Π は3次元座標の2次元空間への投射関数 ( z の値を除くだけ)
p EIk
n 3次元関節座標推定値との差がなるべく小さくなるようにスケルトンのθ, d を調整する項
- 元々 3次元座標推定値は pelvis相対値(RootRelative )なので,スケルトン関節座標値から root 座標 d を引いておく
p Esmooth
n スケルトンの3D関節座標変動の加速度罰則項
p Edepth
n スケルトンの3D関節座標 z軸(奥行き)方向の加速度罰則項
- 奥行方向は特に不安定になるので
p Levenberg-Marquardt法でコスト関数を最小化する θ, d を算出
p スケルトンフィッティングコスト関数
12. 結果:他手法との定量的な比較
p 指標
n Percentage of Correct Keypoints metric ( 3D PCK @ 150mm)
- GT関節座標を中心とした半径 150mm の球内に推定した関節座標が存在する確率
n AUC of 3D PCK
- PCKにおいて,半径の値を変えいていった際の正解率の変化を表す曲線下領域の面積
n Mean Per Joing Position Error ( MPJPE )
- GT関節座標と推定した関節座標の距離平均
- 外れ値に影響されやすい
p 比較条件
n MPI-INF-3DHP のテストセットでの比較
- SOTA な手法(Mehta et al 2016)と14キーポイントで比較
- 頭,首,肩,肘,手首,尻,膝,足首
- 同じデータ Human3.6m, MPI-INF-3DHPで学習
- ResNet101, 50 両方を基盤アーキテクチャとして使用した際の結果を先行研究と比較
- バウンディングボックスは予め与えた上での推定結果を比較
- BB の推定は比較の際は行っていない
- スケルトンフィッティングする前の CNN で推定した 3D姿勢推定結果で比較
n Human3.6m での比較
- 複数のオフライン既存手法と比較
- プロトコルは MPI-INF-3DHPの場合とほぼ同じ
13. 結果:他手法との定量的な比較 (MPI-INF-3DHP)
p ResNet50を用いた VNectの 精度 (PCK) が平均的に一番よかった
n ネットワークサイズが小さいことを考慮すると,その分学習の際にミニバッチサイズを大きく出来た(メ
モリに載せられる)ためより良い勾配の推定が出来たために精度が出たのではとのこと
p Stand/Walk, Exercise, Sports, Misc 等 self-Occlusion がないケースで既存よりも PCKが良い
n 三次元関節座標推定において,より画像の見た目をより考慮できているためであると主張
p VNect の方が,既存手法よりも外れ値の割合が多い
n スケルトンフィッティング,フィルタリングで除去これらの影響は抑えられる
14. 結果:他手法との定量的な比較 (MPI-INF-3DHP)
p ResNet50を用いた VNectの 精度 (PCK) が平均的に一番よかった
n ネットワークサイズが小さいことを考慮すると,その分学習の際にミニバッチサイズを大きく出来た(メ
モリに載せられる)ためより良い勾配の推定が出来たために精度が出たのではとのこと
p Stand/Walk, Exercise, Sports, Misc 等 self-Occlusion がないケースで既存よりも PCKが良い
n 三次元関節座標推定において,より画像の見た目をより考慮できているためであると主張
p VNect の方が,既存手法よりも外れ値の割合が多い
n スケルトンフィッティング,フィルタリングで除去これらの影響は抑えられる
16. 結果:スケルトンフィッティングの効果並びに計算時間検証
p 3次元CNN推定+スケルトンフィティングをしたものが PCK @ 150mm ではベスト
n 1 Euro filter 処理を加えたものは,定性的には良くなっていた(動画)が,外れ値から元に戻るのがゆっく
りになるため,エラーが上昇してしまったと考えられる
n Raw CNN 3D output はジッタリングが多く存在
p VNect では30Hz リアルタイムでスムーズが関節位置の移動推定が可能に
n 6-core Xeon CPU 3.8GHz, single Titan X (Pascal architecture) GPU
n CNN計算 18ms, スケルトンフィッティング 7-10ms, 前処理・フィルタリング 5ms -> 全部で 33ms 程
17. 手法の欠点・改善方法検討
p 欠点
n 二次元位置推定が失敗すると,それに引っ張られて三次元位置推定も失敗してしまう
- スケルトンのフィッティングによって緩和されてはいるものの
- 予測間の依存性を上げれば解消できるか
n Self occlusion が多い様な場合はうまく推定できない
n 速い動きの場合は,スケルトンのフィッティング最適化計算が収束しない場合がある
- 具体例はないが,加速度罰則項の影響が大きくなりすぎてしまうからか?
p 発展展望
n 複数人への対応
- BBを複数作成すれば対応可能だが,リアルタイム性が損なわれる
- Cao et al (2016) “Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields” 等利用できるか
- 詳細は不明
n 2D姿勢推定精度を改善する事によって3D姿勢推定の精度を上げる
- HGTを用いて VNectに3D姿勢推定を PCK が 2.8向上した
- 例えば繰返しCNNを適用することで2D姿勢推定の精度を上げれば3D姿勢推定も良くなる
- Newell et al (2016) “Stacked Hourglass Networks for Human Pose Estimation”
p 応用の際に可能な改善方法
n 床の場所がわかっていれば,足と床に接触制約を設けることで安定化させられる
n VR用途であれば,HMDの場所情報を与えることで推定精度が上がる