ポーズ推定データセットの概要

サポートされているデータセットフォーマット

Ultralytics YOLOフォーマット

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

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

ポーズ推定タスクのラベル形式の例を以下に示します。

2Dキーポイント形式

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

3Dキーポイント形式(ポイントごとの可視性を含む)

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

この形式において、<class-index>はオブジェクトのクラスインデックス、<x> <y> <width> <height>bounding boxの正規化された座標、<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

trainフィールドとvalフィールドは、それぞれトレーニング画像と検証画像を含むディレクトリへのパスを指定します。

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

(Optional) if the points are symmetric then need flip_idx, like left-right side of human or face. For example if we assume five keypoints of facial landmark: [left eye, right eye, nose, left mouth, right mouth], and the original index is [0, 1, 2, 3, 4], then flip_idx is [1, 0, 2, 4, 3] (just exchange the left-right index, i.e. 0-1 and 3-4, and do not modify others like nose in this example).

使用方法

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形式と互換性があり、pose estimationモデルのトレーニングに使用できるデータセットの概要を説明します。

COCO-Pose

  • 概要: COCO-Poseは、大規模なobject detection、セグメンテーション、およびポーズ推定データセットです。これは一般的なCOCOデータセットのサブセットであり、人間のポーズ推定に焦点を当てています。COCO-Poseには、各人間のインスタンスに対して複数のキーポイントが含まれています。
  • ラベル形式: 上記のUltralytics YOLO形式と同じで、人間のポーズ用のキーポイントが含まれます。
  • クラス数: 1(人間)。
  • キーポイント: 鼻、目、耳、肩、肘、手首、腰、膝、足首を含む17のキーポイント。
  • 用途: 人間のポーズ推定モデルのトレーニングに適しています。
  • 追加メモ: このデータセットは豊富で多様性に富んでおり、20万枚以上のラベル付き画像が含まれています。
  • COCO-Poseについて詳しく読む

COCO8-Pose

  • 概要: Ultralytics COCO8-Poseは、COCO train 2017セットの最初の8枚(トレーニング用4枚、バリデーション用4枚)で構成された、小規模ですが汎用性の高いポーズ検出データセットです。
  • ラベル形式: 上記のUltralytics YOLO形式と同じで、人間のポーズ用のキーポイントが含まれます。
  • クラス数: 1(人間)。
  • キーポイント: 鼻、目、耳、肩、肘、手首、腰、膝、足首を含む17のキーポイント。
  • 用途: オブジェクト検出モデルのテストやデバッグ、あるいは新しい検出アプローチの実験に適しています。
  • 追加メモ: COCO8-Poseは、サニティチェックやCI checksに最適です。
  • COCO8-Poseについて詳しく読む

Dog-Pose

  • 概要: Dog-Poseデータセットには、6,773枚のトレーニング画像と1,703枚のテスト画像が含まれており、犬のキーポイント推定のための多様かつ広範なリソースを提供します。
  • ラベル形式: Ultralytics YOLO形式に従っており、犬の解剖学的構造に固有の複数のキーポイントのアノテーションが含まれています。
  • クラス数: 1(犬)。
  • キーポイント: 四肢、関節、頭部の位置など、犬のポーズに合わせて調整された24のキーポイントが含まれています。
  • 用途: 研究からreal-world applicationsまで、さまざまなシナリオで犬のポーズを推定するモデルのトレーニングに最適です。
  • Dog-Poseについて詳しく読む

Hand Keypoints

  • 概要: 手のキーポイントポーズデータセットは26,000枚近くの画像で構成されており、18,776枚がトレーニング用、7,992枚がバリデーション用に割り当てられています。
  • ラベル形式: 前述のUltralytics YOLO形式と同じですが、人間の手のための21のキーポイントと可視性ディメンションが含まれています。
  • クラス数: 1(手)。
  • キーポイント: 21のキーポイント。
  • 用途: 人の手のポーズ推定やgesture recognitionに最適です。
  • Hand Keypointsについて詳しく読む

Tiger-Pose

  • 概要: Ultralytics Tiger-Poseデータセットは、YouTube videoから収集された263枚の画像で構成されており、210枚がトレーニング用、53枚がバリデーション用に割り当てられています。
  • ラベル形式: 上記のUltralytics YOLO形式と同じで、動物のポーズ用の12のキーポイントが含まれ、可視性ディメンションはありません。
  • クラス数: 1(トラ)。
  • キーポイント: 12のキーポイント。
  • 用途: 動物のポーズや、人間以外をベースとしたその他のポーズに最適です。
  • Tiger-Poseについて詳しく読む

独自のデータセットを追加する

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

変換ツール

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ポーズの場合、キーポイントにはピクセル座標が含まれます。3Dの場合、各キーポイントには可視性フラグも存在します。詳細については、Ultralytics YOLO formatを参照してください。

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

COCO-PoseデータセットをUltralytics YOLOで使用するには:

  1. データセットをダウンロードし、ラベルファイルをYOLO形式で準備します。

  2. トレーニングおよびバリデーション画像のパス、キーポイントの形状、クラス名を指定するYAML設定ファイルを作成します。

  3. トレーニングに設定ファイルを使用します:

    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を参照してください。

コメント