Human Pose Estimation
Human Pose Estimation は、image や video から人間の関節位置を推定する task です。2D keypoint、3D keypoint、body mesh、pose parameter など、出力形式は複数あります。
2D Human Pose
2D human pose estimation は、image plane 上の keypoint を推定します。例えば COCO では、nose、eye、shoulder、elbow、wrist、hip、knee、ankle などの keypoint が定義されています。
代表的な approach は二つです。
| Approach | 説明 |
|---|---|
| Top-down | まず person detector で人物 box を出し、各 box 内で pose を推定します。高精度ですが detector に依存します。 |
| Bottom-up | 画像全体で keypoint を検出し、後から人物 instance に grouping します。多数人で高速になりやすいです。 |
Heatmap と regression
Keypoint を推定する方法には、heatmap-based と regression-based があります。
- Heatmap-based は、各 keypoint の確率 map を出します。精度が高いですが、解像度や post-processing に依存します。
- Regression-based は、keypoint 座標を直接出します。軽量ですが、fine localization が難しい場合があります。
3D Human Pose
3D human pose は、関節の 3D 座標を推定します。方法は大きく二つです。
- 2D keypoint を推定し、それを 3D に lift する。
- Image / video から直接 3D pose を推定する。
単眼 3D pose では、depth ambiguity が問題になります。そのため、temporal consistency、body kinematic prior、motion prior、multi-view data が重要です。
代表的 dataset と metric
| Dataset | 用途 |
|---|---|
| COCO Keypoints | 2D human pose |
| MPII Human Pose | 2D human pose |
| Human3.6M | 3D human pose |
| MPI-INF-3DHP | 3D human pose |
Metric には、PCK、OKS-based AP、MPJPE、PA-MPJPE などがあります。
数式で見る heatmap regression と OKS
2D human pose estimation では、各関節 の heatmap を予測することが多いです。Ground truth heatmap を とすると、基本的な loss は次のように書けます。
この式の気持ちは、「関節位置そのものを一点で回帰するのではなく、画像上のどこに関節がありそうかという確率的な山を合わせる」というものです。
COCO keypoint evaluation では、Object Keypoint Similarity(OKS)が使われます。
ここで、 は予測 keypoint と正解 keypoint の距離、 は object scale、 は keypoint ごとの許容誤差、 は visibility です。大きい人では同じ pixel error が相対的に小さく扱われ、小さい人では厳しく扱われます。
関連ページ
主なソース
- COCO Keypoints: https://cocodataset.org/#keypoints-2020
- OpenPose paper: https://arxiv.org/abs/1812.08008
- HRNet paper: https://arxiv.org/abs/1902.09212
- Human3.6M dataset: http://vision.imar.ro/human3.6m/description.php