コンテンツにスキップ

ポーズ推定

ポーズ推定例

ポーズ推定は、通常キーポイントとして参照される画像内の特定の点の位置を識別するタスクです。キーポイントは、関節、ランドマーク、またはその他の特徴的な特徴など、対象物のさまざまな部分を表すことができます。キーポイントの位置は、通常2Dの [x, y] または3D [x, y, visible] 座標のセットとして表されます。

ポーズ推定モデルの出力は、画像内のオブジェクト上のキーポイントを表す一連の点であり、通常は各点の信頼スコアを伴います。ポーズ推定は、シーン内のオブジェクトの特定の部分と、それらが互いに対して位置する場所を特定する必要がある場合に適しています。



視聴: Ultralytics YOLOv8によるポーズ推定。

ヒント

YOLOv8 pose モデルは -pose サフィックスを使用します。例:yolov8n-pose.pt。これらのモデルは COCOキーポイント データセットでトレーニングされ、多様なポーズ推定タスクに適しています。

モデル

YOLOv8事前トレーニング済みポーズモデルはこちらです。Detect, Segment, Poseモデルは COCO データセットで、Classifyモデルは ImageNet データセットで事前トレーニングされています。

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

モデル サイズ
(ピクセル)
mAPポーズ
50-95
mAPポーズ
50
速度
CPU ONNX
(ミリ秒)
速度
A100 TensorRT
(ミリ秒)
パラメータ
(M)
FLOPs
(B)
YOLOv8n-pose 640 50.4 80.1 131.8 1.18 3.3 9.2
YOLOv8s-pose 640 60.0 86.2 233.2 1.42 11.6 30.2
YOLOv8m-pose 640 65.0 88.8 456.3 2.00 26.4 81.0
YOLOv8l-pose 640 67.6 90.0 784.5 2.59 44.4 168.6
YOLOv8x-pose 640 69.2 90.2 1607.1 3.73 69.4 263.2
YOLOv8x-pose-p6 1280 71.6 91.2 4088.7 10.04 99.1 1066.4
  • mAPval の値は、COCO Keypoints val2017データセットでの単一モデル単一スケールに対するものです。
    再現方法 yolo val pose data=coco-pose.yaml device=0
  • 速度Amazon EC2 P4dインスタンスを使用したCOCO val画像の平均です。
    再現方法 yolo val pose data=coco8-pose.yaml batch=1 device=0|cpu

トレーニング

COCO128-poseデータセットでYOLOv8-poseモデルをトレーニングします。

from ultralytics import YOLO

# モデルをロード
model = YOLO('yolov8n-pose.yaml')  # 新しいモデルをYAMLからビルド
model = YOLO('yolov8n-pose.pt')    # 事前トレーニング済みのモデルをロード(トレーニング用に推奨)
model = YOLO('yolov8n-pose.yaml').load('yolov8n-pose.pt')  # YAMLからビルドして重みを転送

# モデルのトレーニング
results = model.train(data='coco8-pose.yaml', epochs=100, imgsz=640)
# YAMLから新しいモデルをビルドし、最初からトレーニングを開始
yolo pose train data=coco8-pose.yaml model=yolov8n-pose.yaml epochs=100 imgsz=640

# 事前トレーニング済みの*.ptモデルからトレーニングを開始
yolo pose train data=coco8-pose.yaml model=yolov8n-pose.pt epochs=100 imgsz=640

# YAMLから新しいモデルをビルド、事前トレーニング済みの重みを転送してトレーニングを開始
yolo pose train data=coco8-pose.yaml model=yolov8n-pose.yaml pretrained=yolov8n-pose.pt epochs=100 imgsz=640

データセットフォーマット

YOLOポーズデータセットフォーマットの詳細は、データセットガイドに記載されています。既存のデータセットを他のフォーマット(COCOなど)からYOLOフォーマットに変換するには、UltralyticsのJSON2YOLO ツールをご使用ください。

Val

COCO128-poseデータセットでトレーニングされたYOLOv8n-poseモデルの精度を検証します。引数は必要なく、modelにはトレーニングdataと引数がモデル属性として保持されます。

from ultralytics import YOLO

# モデルをロード
model = YOLO('yolov8n-pose.pt')  # 公式モデルをロード
model = YOLO('path/to/best.pt')   # カスタムモデルをロード

# モデルを検証
metrics = model.val()  # データセットや設定は記録されているため引数は不要
metrics.box.map    # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps   # 各カテゴリのmap50-95が含まれるリスト
yolo pose val model=yolov8n-pose.pt  # 公式モデルを検証
yolo pose val model=path/to/best.pt  # カスタムモデルを検証

Predict

トレーニング済みのYOLOv8n-poseモデルを使用して画像を予測します。

from ultralytics import YOLO

# モデルをロード
model = YOLO('yolov8n-pose.pt')  # 公式モデルをロード
model = YOLO('path/to/best.pt')   # カスタムモデルをロード

# モデルで予測
results = model('https://ultralytics.com/images/bus.jpg')  # 画像に予測を実行
yolo pose predict model=yolov8n-pose.pt source='https://ultralytics.com/images/bus.jpg'  # 公式モデルで予測
yolo pose predict model=path/to/best.pt source='https://ultralytics.com/images/bus.jpg'  # カスタムモデルで予測

predictモードの詳細をPredictページでご覧いただけます。

Export

YOLOv8n PoseモデルをONNX、CoreMLなどの異なるフォーマットにエクスポートします。

from ultralytics import YOLO

# モデルをロード
model = YOLO('yolov8n-pose.pt')  # 公式モデルをロード
model = YOLO('path/to/best.pt')   # カスタムトレーニング済みモデルをロード

# モデルをエクスポート
model.export(format='onnx')
yolo export model=yolov8n-pose.pt format=onnx  # 公式モデルをエクスポート
yolo export model=path/to/best.pt format=onnx  # カスタムトレーニング済みモデルをエクスポート

利用可能なYOLOv8-poseエクスポートフォーマットは以下の表に示されており、エクスポート完了後にお使いのモデルに関する使用例が示されます。

フォーマット format引数 モデル メタデータ 引数
PyTorch - yolov8n-pose.pt -
TorchScript torchscript yolov8n-pose.torchscript imgsz, optimize
ONNX onnx yolov8n-pose.onnx imgsz, half, dynamic, simplify, opset
OpenVINO openvino yolov8n-pose_openvino_model/ imgsz, half
TensorRT engine yolov8n-pose.engine imgsz, half, dynamic, simplify, workspace
CoreML coreml yolov8n-pose.mlpackage imgsz, half, int8, nms
TF SavedModel saved_model yolov8n-pose_saved_model/ imgsz, keras
TF GraphDef pb yolov8n-pose.pb imgsz
TF Lite tflite yolov8n-pose.tflite imgsz, half, int8
TF Edge TPU edgetpu yolov8n-pose_edgetpu.tflite imgsz
TF.js tfjs yolov8n-pose_web_model/ imgsz
PaddlePaddle paddle yolov8n-pose_paddle_model/ imgsz
ncnn ncnn yolov8n-pose_ncnn_model/ imgsz, half

exportの詳細はExportページでご覧いただけます。


Created 2023-11-13, Updated 2023-11-18
Authors: glenn-jocher (3)

コメント