姿勢推定

YOLO pose estimation with human body keypoint detection

姿勢推定とは、画像内の特定の点(一般にキーポイントと呼ばれます)の位置を特定するタスクです。キーポイントは、関節、ランドマーク、その他の特徴的な箇所など、オブジェクトの様々な部分を表すことができます。キーポイントの位置は通常、2Dの [x, y] または 3Dの [x, y, visible] 座標のセットとして表現されます。

姿勢推定モデルの出力は、画像内のオブジェクト上のキーポイントを表す点の集合であり、通常は各点に対する信頼度スコアが伴います。姿勢推定は、シーン内のオブジェクトの特定のパーツや、それらの相互の相対的な位置を特定する必要がある場合に適した選択肢です。



Watch: How to Run Real-Time Pose Estimation with Ultralytics YOLO26 | Tracking & Keypoints Extraction 🕺
ヒント

YOLO26 pose モデルは -pose サフィックスを使用します(例: yolo26n-pose.pt)。これらのモデルは COCO keypoints データセットで学習されており、様々な姿勢推定タスクに適しています。

標準の YOLO26 pose モデルには、人体の異なる部位を表す17個のキーポイントがあります。各インデックスと対応する身体の関節の対応表は以下の通りです。

  1. 左目
  2. 右目
  3. 左耳
  4. 右耳
  5. 左肩
  6. 右肩
  7. 左肘
  8. 右肘
  9. 左手首
  10. 右手首
  11. 左腰
  12. 右腰
  13. 左膝
  14. 右膝
  15. 左足首
  16. 右足首

モデル

Ultralytics YOLO26 の事前学習済み Pose モデルを以下に示します。Detect、Segment、Pose モデルは COCO データセットで事前学習され、Semantic モデルは Cityscapes で事前学習され、Classify モデルは ImageNet データセットで事前学習されています。

モデルは、初回使用時に最新のUltralytics リリースから自動的にダウンロードされます。

モデルサイズ
(ピクセル)
mAPpose
50-95(e2e)
mAPpose
50(e2e)
速度
CPU ONNX
(ms)
速度
T4 TensorRT10
(ms)
パラメータ
(M)
FLOPs
(B)
YOLO26n-pose64057.283.340.3 ± 0.51.8 ± 0.02.97.5
YOLO26s-pose64063.086.685.3 ± 0.92.7 ± 0.010.423.9
YOLO26m-pose64068.889.6218.0 ± 1.55.0 ± 0.121.573.1
YOLO26l-pose64070.490.5275.4 ± 2.46.5 ± 0.125.991.3
YOLO26x-pose64071.691.6565.4 ± 3.012.2 ± 0.257.6201.7
  • mAPval の値は、COCO Keypoints val2017 データセットにおけるシングルモデル・シングルスケールの値です。
    再現手順: yolo val pose data=coco-pose.yaml device=0
  • 速度は、Amazon EC2 P4d インスタンスを使用して COCO val 画像で平均化したものです。
    再現手順: yolo val pose data=coco-pose.yaml batch=1 device=0|cpu
  • パラメータ数およびFLOPs値は、Conv層とBatchNorm層を結合し、エンドツーエンドモデルの場合は補助的なone-to-many検出ヘッドを削除した後の、model.fuse()適用済みモデルに対するものです。事前学習済みチェックポイントは完全な学習用アーキテクチャを保持しているため、より大きい数値が表示される場合があります。

トレーニング (Train)

COCO8-pose データセットで YOLO26-pose モデルを学習させます。COCO8-pose データセット は、姿勢推定モデルのテストやデバッグに最適な小さなサンプルデータセットです。

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.yaml")  # build a new model from YAML
model = YOLO("yolo26n-pose.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n-pose.yaml").load("yolo26n-pose.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)

train モードの詳細については、Train ページを参照してください。Pose モデルは Ultralytics Platform を通じてクラウド GPU 上で学習させることも可能です。

データセット形式

YOLO 姿勢データセットの形式については、Dataset Guide で詳しく解説しています。既存のデータセットを他の形式(COCO など)から YOLO 形式に変換するには、Ultralytics の JSON2YOLO ツールをご利用ください。Ultralytics Platform も、人、手、顔、カスタムキーポイントレイアウト用の組み込みスケルトンテンプレートを使用した姿勢アノテーションをサポートしています。

独自の姿勢推定タスクについては、動物の姿勢推定用の Tiger-Pose、手の追跡用の Hand Keypoints、または犬の姿勢解析用の Dog-Pose などの専門的なデータセットも検討してみてください。

検証 (Val)

COCO8-pose データセットで学習済み YOLO26n-pose モデルの 精度 を検証します。model には学習時の data や引数が属性として保持されているため、引数は不要です。

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.box.map  # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps  # a list containing mAP50-95 for each category
metrics.box.image_metrics  # per-image metrics dictionary for box with precision, recall, F1, TP, FP, and FN
metrics.pose.map  # map50-95(P)
metrics.pose.map50  # map50(P)
metrics.pose.map75  # map75(P)
metrics.pose.maps  # a list containing mAP50-95(P) for each category
metrics.pose.image_metrics  # per-image metrics dictionary for pose with precision, recall, F1, TP, FP, and FN

予測 (Predict)

学習済み YOLO26n-pose モデルを使用して、画像に対する予測を実行します。predict mode を使用すると、画像、動画、またはリアルタイムストリームで推論を実行できます。

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg")  # predict on an image

# Access the results
for result in results:
    xy = result.keypoints.xy  # x and y coordinates
    xyn = result.keypoints.xyn  # normalized
    kpts = result.keypoints.data  # x, y, visibility (if available)

predictモードの詳細については、Predictページを参照してください。

エクスポート (Export)

YOLO26 Pose モデルを ONNX や CoreML などの別の形式にエクスポートします。これにより、リアルタイム推論 のために、様々なプラットフォームやデバイスへモデルをデプロイできます。

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom-trained model

# Export the model
model.export(format="onnx")

利用可能な YOLO26-pose エクスポート形式は以下の表の通りです。format 引数(format='onnx'format='engine' など)を使用して任意の形式にエクスポートできます。エクスポートしたモデルに対して直接予測や検証を行うことも可能です(例: yolo predict model=yolo26n-pose.onnx)。エクスポート完了後、モデルの使用例が表示されます。

形式format引数モデルメタデータ引数
PyTorch-yolo26n-pose.pt-
TorchScripttorchscriptyolo26n-pose.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-pose.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n-pose_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n-pose.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-pose.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n-pose_saved_model/imgsz, keras, int8, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-pose.pbimgsz, batch, device
TF Litetfliteyolo26n-pose.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-pose_edgetpu.tfliteimgsz, int8, data, fraction, device
TF.jstfjsyolo26n-pose_web_model/imgsz, half, int8, nms, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-pose_paddle_model/imgsz, batch, device
MNNmnnyolo26n-pose.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n-pose_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n-pose_imx_model/imgsz, int8, data, fraction, nms, device
RKNNrknnyolo26n-pose_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n-pose_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-pose_axelera_model/imgsz, batch, int8, data, fraction, device
DeepXdeepxyolo26n-pose_deepx_model/imgsz, int8, data, optimize, device

exportの詳細については、Exportページを参照してください。

FAQ

Ultralytics YOLO26 による姿勢推定とは何ですか?また、どのように機能しますか?

Pose estimation with Ultralytics YOLO26 involves identifying specific points, known as keypoints, in an image. These keypoints typically represent joints or other important features of the object. The output includes the [x, y] coordinates and confidence scores for each point. YOLO26-pose models are specifically designed for this task and use the -pose suffix, such as yolo26n-pose.pt. These models are pretrained on datasets like COCO keypoints and can be used for various pose estimation tasks. For more information, visit the Pose Estimation Page.

カスタムデータセットで YOLO26-pose モデルを学習させるにはどうすればよいですか?

カスタムデータセットで YOLO26-pose モデルを学習させるには、YAML ファイルで定義された新しいモデル、または事前学習済みモデルのいずれかをロードします。その後、指定したデータセットとパラメータを使用して学習プロセスを開始できます。

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.yaml")  # build a new model from YAML
model = YOLO("yolo26n-pose.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)

学習の詳細については、Train セクション を参照してください。Ultralytics Platform を使用した、コード不要のカスタム姿勢推定モデル学習手法もあります。

学習済み YOLO26-pose モデルを検証するにはどうすればよいですか?

YOLO26-pose モデルの検証では、学習中に保持されたデータセットパラメータを使用して精度を評価します。以下に例を示します。

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered

詳細については、Val セクション を参照してください。

YOLO26-pose モデルを他の形式にエクスポートできますか?また、その方法は?

はい、YOLO26-pose モデルは ONNX、CoreML、TensorRT など様々な形式にエクスポート可能です。これは Python またはコマンドラインインターフェース (CLI) を使用して実行できます。

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom-trained model

# Export the model
model.export(format="onnx")

Refer to the Export Section for more details. Exported models can be deployed on edge devices for real-time applications like fitness tracking, sports analysis, or robotics.

利用可能な Ultralytics YOLO26-pose モデルと、そのパフォーマンス指標は何ですか?

Ultralytics YOLO26は、YOLO26n-pose、YOLO26s-pose、YOLO26m-poseなど、さまざまな事前学習済みポーズモデルを提供しています。これらのモデルは、サイズ、精度(mAP)、速度が異なります。例えば、YOLO26n-poseモデルは、mAPpose50-95で50.0、mAPpose50で81.0を達成しています。完全なリストとパフォーマンスの詳細については、Models Sectionをご覧ください。

コメント