You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

13 KiB

comments description keywords
true Ultralytics YOLOv8を使用してポーズ推定タスクを行う方法を学びます。事前トレーニング済みのモデルを見つけ、トレーニング、検証、予測、独自のエクスポートを行います。 Ultralytics, YOLO, YOLOv8, ポーズ推定, キーポイント検出, 物体検出, 事前トレーニング済みモデル, 機械学習, 人工知能

ポーズ推定

ポーズ推定例

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

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



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

!!! tip "ヒント"

YOLOv8 _pose_ モデルは `-pose` サフィックスを使用します。例:`yolov8n-pose.pt`。これらのモデルは [COCOキーポイント](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/coco-pose.yaml) データセットでトレーニングされ、多様なポーズ推定タスクに適しています。

モデル

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モデルをトレーニングします。

!!! example ""

=== "Python"

    ```python
    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)
    ```
=== "CLI"

    ```bash
    # 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と引数がモデル属性として保持されます。

!!! example ""

=== "Python"

    ```python
    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が含まれるリスト
    ```
=== "CLI"

    ```bash
    yolo pose val model=yolov8n-pose.pt  # 公式モデルを検証
    yolo pose val model=path/to/best.pt  # カスタムモデルを検証
    ```

Predict

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

!!! example ""

=== "Python"

    ```python
    from ultralytics import YOLO

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

    # モデルで予測
    results = model('https://ultralytics.com/images/bus.jpg')  # 画像に予測を実行
    ```
=== "CLI"

    ```bash
    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などの異なるフォーマットにエクスポートします。

!!! example ""

=== "Python"

    ```python
    from ultralytics import YOLO

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

    # モデルをエクスポート
    model.export(format='onnx')
    ```
=== "CLI"

    ```bash
    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ページでご覧いただけます。