コンテンツへスキップ

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

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

Ultralytics YOLO フォーマット

YOLO ポーズモデルの学習に使用されるデータセットのラベル形式は以下の通り:

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

以下は、姿勢推定タスクのラベルフォーマットの例である:

Dim = 2のフォーマット

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

Dim = 3 のフォーマット

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

この形式では <class-index> はオブジェクトのクラスのインデックスです、<x> <y> <width> <height> はバウンディング・ボックスの座標であり <px1> <py1> <px2> <py2> ... <pxn> <pyn> はキーポイントのピクセル座標である。座標はスペースで区切られる。

データセット YAML 形式

Ultralytics フレームワークは、検出モデルをトレーニングするためのデータセットとモデル構成を定義するために、YAML ファイル形式を使用します。以下は検出データセットを定義するために使用されるYAMLフォーマットの例です:

# 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: ../datasets/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 dictionary
names:
  0: person

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

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

(オプション) もしポイントが左右対称であれば、人間や顔の左右のように flip_idx が必要です。例えば、顔のランドマークのキーポイントが5つあるとします:[元のインデックスが [0, 1, 2, 3, 4] である場合、flip_idx は [1, 0, 2, 4, 3] となります(左右のインデックス、つまり 0-1 と 3-4 を交換するだけで、この例では鼻のような他のインデックスは変更しません)。

使用方法

例

from ultralytics import YOLO

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

# Train the model
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=coco8-pose.yaml model=yolov8n-pose.pt epochs=100 imgsz=640

対応データセット

このセクションでは、Ultralytics YOLO 形式と互換性があり、ポーズ推定モデルのトレーニングに使用できるデータセットの概要を説明します:

COCO-ポーズ

  • 説明COCO-Poseは、大規模なオブジェクト検出、セグメンテーション、およびポーズ推定データセットです。人気の高いCOCOデータセットのサブセットで、人間のポーズ推定に特化している。COCO-Poseには、各人物のインスタンスに対して複数のキーポイントが含まれています。
  • ラベルフォーマット:Ultralytics YOLO 上記のフォーマットと同じで、人物のポーズをキーポイントとする。
  • クラスの数:1(人間)。
  • キーポイント鼻、目、耳、肩、肘、手首、腰、膝、足首を含む17のキーポイント。
  • 使用方法人間のポーズ推定モデルのトレーニングに適しています。
  • 追記データセットは豊富で多様であり、200k以上のラベル付き画像を含む。
  • COCO-Poseについてもっと読む

COCO8-ポーズ

  • 説明UltralyticsCOCO8-Poseは、COCO train 2017セットの最初の8枚(トレーニング用4枚、検証用4枚)で構成される、小さいが多用途なポーズ検出データセットである。
  • ラベルフォーマット:Ultralytics YOLO 上記のフォーマットと同じで、人物のポーズをキーポイントとする。
  • クラスの数:1(人間)。
  • キーポイント鼻、目、耳、肩、肘、手首、腰、膝、足首を含む17のキーポイント。
  • 使い方物体検出モデルのテストやデバッグ、または新しい検出アプローチの実験に適しています。
  • その他の注意事項COCO8-Poseはサニティ・チェックやCIチェックに最適。
  • COCO8-ポーズについてもっと読む

タイガー・ポーズ

  • 説明Ultralyticsこの動物ポーズデータセットは、YouTube動画から取得した263枚の画像から構成され、210枚の画像がトレーニング用に、53枚の画像が検証用に割り当てられている。
  • ラベルフォーマット:Ultralytics YOLO 上記のフォーマットと同じ。動物のポーズを表す12個のキーポイントがあり、寸法は見えない。
  • クラス数:1(タイガー)。
  • キーポイント12のキーポイント
  • 使い方動物のポーズや、人間以外のポーズに最適。
  • タイガー・ポーズについてもっと読む

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

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

変換ツール

Ultralytics は、一般的なCOCOデータセット形式から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 パラメータは、変換後のラベルに(ポーズ推定のための)キーポイントを含めるかどうかを指定します。



Created 2023-11-12, Updated 2024-06-02
Authors: glenn-jocher (8)

コメント