Ultralytics YOLO27:

姿勢推定データセットの概要#

サポートされているデータセット形式#

Ultralytics YOLO形式#

YOLOの姿勢推定モデルのトレーニングに使用するデータセットラベル形式は、次のとおりです。

  1. 画像ごとに1つのテキストファイル:データセット内の各画像には、画像ファイルと同じ名前で拡張子が ".txt" の対応するテキストファイルがあります。
  2. オブジェクトごとに1行:テキストファイルの各行は、画像内の1つのオブジェクトインスタンスに対応します。
  3. 行ごとのオブジェクト情報:各行には、オブジェクトインスタンスに関する次の情報が含まれます。
    • オブジェクトクラスインデックス:オブジェクトのクラスを表す整数です(例:person は 0、car は 1 など)。
    • オブジェクトの中心座標: オブジェクトの中心のx座標とy座標で、0~1の範囲に正規化されます。
    • オブジェクトの幅と高さ: オブジェクトの幅と高さで、0~1の範囲に正規化されます。
    • オブジェクトのキーポイント座標: オブジェクトのキーポイントで、0~1の範囲に正規化されます。

姿勢推定タスクのラベル形式の例を次に示します。

2Dキーポイントを含む形式

<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>

キーポイントの可視性を含む形式(各ポイントの可視性を含む)

<class-index> <x> <y> <width> <height> <px1> <py1> <p1-visibility> <px2> <py2> <p2-visibility> ... <pxn> <pyn> <pn-visibility>

この形式では、<class-index> はオブジェクトのクラスのインデックス、<x> <y> <width> <height> は正規化されたバウンディングボックスの座標、<px1> <py1> <px2> <py2> ... <pxn> <pyn> は正規化されたキーポイント座標です。可視性チャンネルは任意ですが、オクルージョンをアノテーションするデータセットでは便利です。

データセット YAML 形式#

Ultralyticsフレームワークでは、YAMLファイル形式を使用して、姿勢推定モデルのトレーニングに使用するデータセットとモデルの設定を定義します。姿勢データセットの定義に使用するYAML形式の例を次に示します。

ultralytics/cfg/datasets/coco8-pose.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO8-pose dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/pose/coco8-pose
# Example usage: yolo train data=coco8-pose.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8-pose ← downloads here (1 MB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: coco8-pose # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)

# Keypoints
kpt_shape: [17, 3] # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]

# Classes
names:
  0: person

# Keypoint names per class
kpt_names:
  0:
    - nose
    - left_eye
    - right_eye
    - left_ear
    - right_ear
    - left_shoulder
    - right_shoulder
    - left_elbow
    - right_elbow
    - left_wrist
    - right_wrist
    - left_hip
    - right_hip
    - left_knee
    - right_knee
    - left_ankle
    - right_ankle

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip

trainvaltest フィールドは、トレーニング、検証、テスト画像を指します。それぞれ、ディレクトリ、ディレクトリのリスト、または1行に1つの画像パスを記載した *.txt ファイルを指定できます(./ で始まるパスは *.txt ファイルを基準に解決されます)。*.txt ファイルは、ディレクトリのサブセットでのトレーニング、ラベルのない画像のスキップ、複数のソースの画像の1つの分割への統合に便利です。

`*.txt`ファイルとしての画像パス
path: datasets/coco8-pose # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
  0: person

names はクラス名の辞書です。名前の順序は、YOLO データセットファイル内のオブジェクトクラスインデックスの順序と一致している必要があります。

(任意)flip_idx は各キーポイントをその鏡像に対応付けるため、人物の身体や顔などの左右対称なスケルトンで水平反転オーグメンテーションを行っても、左右の対応関係が維持されます。[left eye, right eye, nose, left mouth, right mouth] = [0, 1, 2, 3, 4] とインデックス付けされた5つの顔ランドマークの場合、flip_idx は [1, 0, 2, 4, 3] です。左右のペア0-1と3-4が入れ替わり、鼻は自身のインデックスを維持します。

(任意)kpt_oks_sigmas は、トレーニングと検証で使用するキーポイントごとのカスタムOKSシグマを設定します(例: [0.26, 0.25, 0.25, ...])。リストの長さは、kpt_shape にあるキーポイント数 N と等しく、すべての値が正でなければなりません。省略した場合、kpt_shape: [17, 3] にはCOCOの17キーポイント用シグマが使用され、それ以外には一様な 1/N が使用されます。

使用方法#

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.pt")  # load a pretrained model (recommended for training)

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

サポートされているデータセット#

このセクションでは、Ultralytics YOLOフォーマットと互換性があり、姿勢推定モデルのトレーニングに使用できるデータセットの概要について説明します。これらのデータセットのほとんどはUltralytics Platform上でもホストされており、画像やアノテーションの閲覧、データセット統計の確認、クラウドトレーニング用のデータセットのクローン作成を行うことができます。

COCO-Pose#

  • 説明: COCO-Poseは、キーポイントがアノテーションされた人物を含むCOCO 2017画像を対象とする、大規模な人物姿勢推定データセットです。
  • ラベル形式: 上記で説明したUltralytics YOLO形式と同じで、人物の姿勢のキーポイントを含みます。
  • クラス数: 1(人物)。
  • キーポイント: 鼻、目、耳、肩、肘、手首、腰、膝、足首など、17種類のキーポイントがあり、それぞれに可視性の次元があります。
  • 用途: 人物姿勢推定モデルのトレーニングに適しています。
  • 追加情報: このデータセットはCOCO Keypoints 2017チャレンジを基盤としており、156,165人がアノテーションされた58,945枚の画像で構成されています。
  • COCO-Poseの詳細を見る

COCO8-Pose#

  • 説明: Ultralytics COCO8-Poseは、小規模ながら汎用性の高い姿勢推定データセットです。COCO train 2017セットの最初の8枚の画像で構成され、トレーニング用4枚、検証用4枚に分かれています。
  • ラベル形式: 上記で説明したUltralytics YOLO形式と同じで、人物の姿勢のキーポイントを含みます。
  • クラス数: 1(人物)。
  • キーポイント: 鼻、目、耳、肩、肘、手首、腰、膝、足首など、17種類のキーポイントがあり、それぞれに可視性の次元があります。
  • 用途: 姿勢推定モデルのテストやデバッグ、新しいキーポイント検出手法の実験に適しています。
  • 追加情報: COCO8-Poseは、サニティチェックやCIチェックに最適です。
  • COCO8-Poseの詳細を見る

Dog-Pose#

  • 説明: Ultralytics Dog-Poseデータセットには、イヌのキーポイント推定用のトレーニング画像6,773枚と検証画像1,703枚が含まれています。
  • ラベル形式: Ultralytics YOLO形式に従い、イヌの解剖学的特徴に固有の複数のキーポイントをアノテーションします。
  • クラス数: 1(イヌ)。
  • キーポイント: 24個のキーポイントがあり、それぞれに可視性の次元があります。四肢、関節、頭部の位置など、イヌの姿勢に合わせて設計されています。
  • 用途: 研究から実世界のアプリケーションまで、さまざまな場面でイヌの姿勢を推定するモデルのトレーニングに最適です。
  • 追加情報: 元画像はStanford Dogs Datasetから取得されています。
  • Dog-Poseの詳細を見る

手のキーポイント#

  • 説明: Ultralytics Hand Keypointsデータセットは26,768枚の画像で構成され、トレーニング用18,776枚、検証用7,992枚に割り当てられています。
  • ラベル形式: 上記で説明したUltralytics YOLO形式と同じですが、人の手の21個のキーポイントと可視性の次元を含みます。
  • クラス数: 1(手)。
  • キーポイント: 21個のキーポイントです。
  • 用途: 人の手の姿勢推定やジェスチャー認識に適しています。
  • 追加情報: 一貫したラベリングを実現するため、キーポイントアノテーションはGoogle MediaPipeを使用して生成されています。
  • Hand Keypointsの詳細を見る

Tiger-Pose#

  • 説明: Ultralytics Tiger-Poseデータセットは、YouTube動画から取得した263枚の画像で構成され、トレーニング用210枚、検証用53枚に割り当てられています。
  • ラベル形式: 上記で説明したUltralytics YOLO形式と同じで、動物の姿勢用の12個のキーポイントを含み、可視性の次元はありません。
  • クラス数: 1(トラ)。
  • キーポイント: 12個のキーポイントです。
  • 用途: 動物の姿勢や、人間を対象としないその他の姿勢に適しています。
  • 追加情報: AGPL-3.0 Licenseの下でリリースされています。
  • Tiger-Poseの詳細を見る

独自のデータセットの追加#

独自のデータセットがあり、それをUltralytics YOLO形式で姿勢推定モデルのトレーニングに使用する場合は、「Ultralytics YOLO format」の下で上記に指定されている形式に従っていることを確認してください。アノテーションを必要な形式に変換し、YAML設定ファイルでパス、クラス数、クラス名を指定してください。

変換手順を完全に省略するには、Ultralytics Platformを使用して生画像をアップロードし、ブラウザー上でキーポイントにアノテーションを付け、完成したデータセットで直接トレーニングできます。

変換ツール#

Ultralyticsは、一般的なCOCO dataset形式のラベルをYOLO形式に変換する便利な変換ツールを提供しています。

from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)

この変換ツールを使用すると、COCO datasetまたはCOCO形式の任意のデータセットをUltralytics YOLO形式に変換できます。use_keypoints パラメーターは、変換後のラベルにキーポイント(姿勢推定用)を含めるかどうかを指定します。

FAQ#

  • 姿勢推定データセットのUltralytics YOLO形式では、各画像に対応するテキストファイルでラベル付けします。テキストファイルの各行には、オブジェクトインスタンスに関する情報が格納されます。

    • オブジェクトのクラスインデックス
    • オブジェクトの中心座標(正規化されたxとy)
    • オブジェクトの幅と高さ(正規化済み)
    • オブジェクトのキーポイント座標(正規化されたpxnとpyn)

    2D姿勢では、キーポイントに正規化されたx座標とy座標が含まれます。可視性の次元がある場合、各キーポイントには可視性フラグも含まれます。詳細については、Ultralytics YOLO formatを参照してください。

  • coco-pose.yaml はパッケージに含まれており、初回使用時に画像とラベルをダウンロードするため、手動で準備する必要はありません。

    from ultralytics import YOLO
    
    model = YOLO("yolo26n-pose.pt")  # load pretrained model
    results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)

    データセットの詳細についてはCOCO-Poseを、引数の完全な一覧についてはTrainページを参照してください。

  • データセットを追加するには、次の手順を実行します。

    1. アノテーションをUltralytics YOLO形式に変換します。

    2. データセットのパス、クラス数、クラス名を指定するYAML設定ファイルを作成します。

    3. 設定ファイルを使用してモデルをトレーニングします。

      from ultralytics import YOLO
      
      model = YOLO("yolo26n-pose.pt")
      results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)

      詳しい手順については、独自のデータセットの追加セクションを確認してください。

  • Ultralytics YOLOのデータセットYAMLファイルは、トレーニング用のデータセットとモデルの設定を定義します。トレーニング、検証、テスト用画像へのパス、キーポイントの形状、クラス名、その他の設定オプションを指定します。この構造化された形式により、データセットの管理とモデルのトレーニングを効率化できます。YAML形式の例を次に示します。

    # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
    
    # COCO8-pose dataset (first 8 images from COCO train2017) by Ultralytics
    # Documentation: https://docs.ultralytics.com/datasets/pose/coco8-pose
    # Example usage: yolo train data=coco8-pose.yaml
    # parent
    # ├── ultralytics
    # └── datasets
    #     └── coco8-pose ← downloads here (1 MB)
    
    # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
    path: coco8-pose # dataset root dir
    train: images/train # train images (relative to 'path') 4 images
    val: images/val # val images (relative to 'path') 4 images
    test: # test images (optional)
    
    # Keypoints
    kpt_shape: [17, 3] # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
    flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]
    
    # Classes
    names:
      0: person
    
    # Keypoint names per class
    kpt_names:
      0:
        - nose
        - left_eye
        - right_eye
        - left_ear
        - right_ear
        - left_shoulder
        - right_shoulder
        - left_elbow
        - right_elbow
        - left_wrist
        - right_wrist
        - left_hip
        - right_hip
        - left_knee
        - right_knee
        - left_ankle
        - right_ankle
    
    # Download script/URL (optional)
    download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip

    YAML設定ファイルの作成については、Dataset YAML formatで詳しく説明しています。

  • Ultralyticsは、キーポイント情報を含むCOCO datasetのラベルをYOLO形式に変換するツールを提供しています。

    from ultralytics.data.converter import convert_coco
    
    convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)

    このツールを使用すると、COCOデータセットをYOLOプロジェクトにシームレスに統合できます。詳細については、Conversion Toolセクションとdata preprocessing guideを参照してください。

コメント