姿勢推定

YOLO pose estimation with human body keypoint detection

姿勢推定(Pose Estimation)とは、画像内の特定の点(一般にキーポイントと呼ばれます)の位置を特定するタスクです。キーポイントは、関節、ランドマーク、その他の特徴的な部位など、オブジェクトの様々な部分を表すことができます。キーポイントの位置は、通常、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姿勢モデルには17個のキーポイントがあり、それぞれが人体構成の異なる部分を表しています。各インデックスと対応する身体の関節のマッピングは以下の通りです。

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

モデル

Ultralytics YOLO26の学習済み姿勢モデルを以下に示します。検出(Detect)、セグメンテーション(Segment)、姿勢推定(Pose)モデルは COCO データセットで学習済みであり、分類(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 を実行してください。
  • **速度(Speed)**は、Amazon EC2 P4d インスタンスを使用してCOCOの検証画像で平均化したものです。
    再現するには yolo val pose data=coco-pose.yaml batch=1 device=0|cpu を実行してください。
  • ParamsおよびFLOPsの値は、model.fuse()後の融合モデルに対するものです。これはConv層とBatchNorm層をマージし、エンドツーエンドモデルの場合は補助的な1対多の検出ヘッドを削除します。事前学習済みチェックポイントは完全な学習アーキテクチャを保持しており、より高い値を示す場合があります。

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 ページを参照してください。姿勢モデルは Ultralytics Platform を通じてクラウドGPU上でトレーニングすることも可能です。

データセット形式

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

カスタム姿勢推定タスクについては、動物の姿勢推定用の Tiger-Pose、ハンドトラッキング用の Hand Keypoints、または犬の姿勢解析用の Dog-Pose といった専門的なデータセットを検討することも可能です。

Val

COCO8-pose データセットで学習済みYOLO26n-poseモデルの accuracy を検証します。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

YOLO26n PoseモデルをONNXやCoreMLなどの異なる形式にエクスポートします。これにより、様々なプラットフォームやデバイスにモデルをデプロイし、real-time inference を行うことが可能になります。

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の詳細については、エクスポートページを参照してください。

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 Section を参照してください。カスタム姿勢推定モデルをノーコードでトレーニングするには、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 Section をご覧ください。

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 をご覧ください。

コメント