ポーズ推定は、ML モデルを使用して、主要な体の関節 (キーポイント) の空間的な位置を推定することで、画像または動画から人のポーズを推定するタスクです。
はじめに
TensorFlow Lite API に慣れている場合は、スターター MoveNet ポーズ推定モデルと追加ファイルをダウンロードしてください。
Web ブラウザでポーズ推定を試す場合は、TensorFlow JS デモを参照してください。
モデルの説明
使い方
ポーズ推定は、コンピュータビジョン手法を参照して、画像や動画の人物を検出するため、たとえば、誰かのひじが画像に現れる場所を判定できます。ポーズ推定では、主要な体の関節の場所を推定することはほとんどなく、画像や動画の人物が誰なのかを認識することもないという事実を理解することが重要です。
ポーズ推定モデルは、処理済みのカメラ画像を入力として受け取り、キーポイントに関する情報を出力します。検出されたキーポイントは、信頼度スコア 0.0 ~ 1.0 のパーツ ID によってインデックス付けされます。信頼度スコアは、キーポイントがその位置に存在する確率を示します。
次の TensorFlow Lite の 2 つのポーズ推定モデルについて、実装の参考情報が提供されています。
- MoveNet: Lighting と Thunder という 2 つのバージョンで提供されている最先端のポーズ推定モデル。この 2 つの比較については、以下のセクションを参照してください。
- PoseNet: 2017 年にリリースされた前の世代のポーズ推定モデル。
ポーズ推定モデルで検出されたさまざまな体の関節は、次の表のとおりです。
ID | 部位 |
---|---|
0 | 鼻 |
1 | 左目 |
2 | 右目 |
3 | 左耳 |
4 | 右耳 |
5 | 左肩 |
6 | 右肩 |
7 | 左ひじ |
8 | 右ひじ |
9 | 左手首 |
10 | 右手首 |
11 | 左腰 |
12 | 右腰 |
13 | 左ひざ |
14 | 右ひざ |
15 | 左足首 |
16 | 右足首 |
次に、出力の例を示します。
パフォーマンスベンチマーク
MoveNet は次の 2 つのバージョンで提供されています。
- MoveNet.Lightning は小さく高速ですが、Thunder バージョンよりも精度が劣ります。最新のスマートフォンでリアルタイムで実行できます。
- MoveNet.Thunder は精度が高いバージョンですが、Lightning よりもサイズが大きく低速です。高い精度が求められるユースケースで有用です。
MoveNet は、さまざまなデータセットに対して、PoseNet よりも優れています。特に、フィットネスアクション画像を含む画像で優れています。このため、PoseNet よりも MoveNet を使用することをお勧めします。
パフォーマンスベンチマークの数値は、こちらで説明されているツールを使用して生成されています。精度 (mAP) は、各画像が 1 人の人物だけを含むようにフィルタおよび切り取りされた COCO データセットのサブセットに対して測定されます。
モデル | サイズ (MB) | mAP | レイテンシ (ms) | ||
---|---|---|---|---|---|
Pixel 5 - CPU 4 スレッド | Pixel 5 - GPU | Raspberry Pi 4 - CPU 4 スレッド | |||
MoveNet.Thunder (FP16 量子化) | 12.6MB | 72.0 | 155ms | 45ms | 594ms |
MoveNet.Thunder (INT8 量子化) | 7.1MB | 68.9 | 100ms | 52ms | 251ms |
MoveNet.Lightning (FP16 量子化) | 4.8MB | 63.0 | 60ms | 25ms | 186ms |
MoveNet.Lightning (INT8 量子化) | 2.9MB | 57.4 | 52ms | 28ms | 95ms |
PoseNet(MobileNetV1 バックボーン、FP32) | 13.3MB | 45.6 | 80ms | 40ms | 338ms |
その他の資料とリソース
- MoveNet と TensorFlow Lite を使用したポーズ推定の詳細については、こちらのブログ投稿をお読みください。
- Web でのポーズ推定の詳細については、こちらのブログ投稿をお読みください。
- TensorFlow Hub のモデルを使用した Python での MoveNet の実行の詳細については、こちらのチュートリアルを参照してください。
- Coral/EdgeTPU では、エッジデバイスでポーズ推定を大幅に高速化して実行できます。詳細については、EdgeTPU 最適化モデルを参照してください。
- こちらから PoseNet ドキュメントをお読みください。
次のポーズ推定のユースケースも確認してください。