YOLO Vision 2026:

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

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

Ultralytics YOLO形式#

YOLO姿勢推定モデルのトレーニングに使用されるデータセットラベル形式は以下の通りです。

  1. 画像ごとに1つのテキストファイル:データセット内の各画像には、画像ファイルと同じ名前で「.txt」拡張子を持つ対応するテキストファイルがあります。
  2. オブジェクトごとに1行:テキストファイルの各行は、画像内の1つのオブジェクトインスタンスに対応します。
  3. 1行あたりのオブジェクト情報:各行には、オブジェクトインスタンスに関する以下の情報が含まれます。
    • オブジェクトクラスインデックス:オブジェクトのクラスを表す整数(例:0は人物、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

trainval、および test フィールドは、それぞれトレーニング、検証、テスト画像を指定します。それぞれ、ディレクトリ、ディレクトリのリスト、または 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は各キーポイントをその鏡像にマッピングするため、水平反転のデータ拡張を行うことで、人体や顔などの対称的なスケルトン上で左右の一貫性を保つことができます。左目、右目、鼻、左口、右口 = [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 と一致する必要があり、すべての値は正である必要があります。省略された場合、COCO の 17 キーポイントのシグマが kpt_shape: [17, 3] に使用され、それ以外の場合は一様な 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形式と互換性があり、姿勢推定モデルのトレーニングに使用できるデータセットの概要を説明します。

COCO-Pose#

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

COCO8-Pose#

  • 説明: Ultralytics COCO8-Poseは、COCO train 2017セットの最初の8枚の画像(トレーニング用4枚、検証用4枚)で構成された、小規模ながらも多用途な姿勢推定データセットです。
  • ラベル形式: 上記で説明したUltralytics YOLO形式と同じで、人間の姿勢用のキーポイントが含まれています。
  • クラス数: 1 (人物)。
  • キーポイント: 鼻、目、耳、肩、肘、手首、腰、膝、足首を含む17種類のキーポイント。それぞれに可視性(visibility)の次元が含まれます。
  • 用途: ポーズ推定モデルのテストやデバッグ、または新しいキーポイント検出手法の実験に適しています。
  • 追加の注意点: COCO8-Poseは、動作確認やCI checksに最適です。
  • COCO8-Poseの詳細を読む

Dog-Pose#

  • 説明: Ultralytics Dog-Poseデータセットには、犬のキーポイント推定用のトレーニング画像6,773枚と検証画像1,703枚が含まれています。
  • ラベル形式: Ultralytics YOLO形式に従っており、犬の解剖学的構造に特化した複数のキーポイントのアノテーションが含まれています。
  • クラス数: 1 (犬)。
  • キーポイント: 四肢、関節、頭部の位置など、犬のポーズに合わせて調整された24個のキーポイント。それぞれに可視性の次元が含まれます。
  • 用途: 研究から実際のアプリケーションまで、さまざまなシナリオで犬の姿勢を推定するモデルのトレーニングに最適です。
  • 追加の注意点: ソース画像はStanford Dogs Datasetから取得されています。
  • Dog-Poseの詳細を読む

Hand Keypoints#

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

Tiger-Pose#

  • 説明: Ultralytics Tiger-Poseデータセットは、YouTube videoから取得した263枚の画像で構成されており、210枚がトレーニング用、53枚が検証用に割り当てられています。
  • ラベル形式: 前述の Ultralytics YOLO 形式と同じで、動物のポーズ用に12個のキーポイントがあり、可視性の次元はありません。
  • クラス数: 1 (虎)。
  • キーポイント: 12個のキーポイント。
  • 使用方法: 動物の姿勢推定や、人間以外のその他の姿勢推定に最適です。
  • 追加の注意点: AGPL-3.0 Licenseの下で公開されています。
  • Tiger-Poseの詳細を読む

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

独自のデータセットを持ち、それをUltralytics YOLO形式の姿勢推定モデルのトレーニングに使用したい場合は、上記の「Ultralytics YOLO形式」で指定された形式に従っていることを確認してください。アノテーションを必要な形式に変換し、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データセットまたはCOCO形式の任意のデータセットをUltralytics YOLO形式に変換できます。use_keypointsパラメータは、変換されたラベルにキーポイント(姿勢推定用)を含めるかどうかを指定します。

よくある質問 (FAQ)#

姿勢推定のためのUltralytics YOLO形式とは何ですか?#

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

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

2D姿勢の場合、キーポイントには正規化されたx座標とy座標が含まれます。可視性ディメンションがある場合、各キーポイントには可視性フラグも付加されます。詳細については、Ultralytics YOLO formatをご覧ください。

Ultralytics YOLOでCOCO-Poseデータセットを使用するにはどうすればよいですか?#

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

Ultralytics YOLOで姿勢推定用に独自のデータセットを追加するにはどうすればよいですか?#

データセットを追加するには:

  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)

    手順の詳細は、Adding your own datasetセクションをご確認ください。

Ultralytics YOLOにおけるデータセットYAMLファイルの目的は何ですか?#

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

姿勢推定のためにCOCOデータセットのラベルをUltralytics YOLO形式に変換するにはどうすればよいですか?#

Ultralyticsは、キーポイント情報を含むCOCOデータセットのラベルを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を参照してください。

コメント