姿勢推定データセットの概要
サポートされるデータセット形式
Ultralytics YOLO フォーマット
YOLO ポーズモデルの学習に使用されるデータセットのラベル形式は以下の通り:
- 画像1枚につきテキストファイル1つ:データセットの各画像には、画像ファイルと同じ名前で拡張子が".txt "の対応するテキストファイルがある。
- 1オブジェクトにつき1行:テキストファイルの各行は、画像内の1つのオブジェクトインスタンスに対応します。
- 行ごとのオブジェクト情報:各行には、オブジェクト・インスタンスに関する以下の情報が含まれる:
- オブジェクト・クラス・インデックス:オブジェクトのクラスを表す整数(例えば、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 を交換するだけで、この例では鼻のような他のインデックスは変更しません)。
使用方法
例
対応データセット
このセクションでは、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のキーポイント
- 使い方動物のポーズや、人間以外のポーズに最適。
- タイガー・ポーズについてもっと読む
ハンドのキーポイント
- 説明ハンドキーポイントポーズデータセットは約26K枚の画像から構成され、18776枚の画像がトレーニング用に、7992枚の画像が検証用に割り当てられている。
- ラベルフォーマット:Ultralytics YOLO 上記のフォーマットと同じだが、人の手と見える寸法に21のキーポイントがある。
- クラス数1(ハンド)。
- キーポイント21のキーポイント
- 使用方法人間の手のポーズ推定に最適。
- ハンドのキーポイント についてもっと読む
犬のポーズ
- 説明Dog Poseデータセットには約6,000枚の画像が収録されており、犬のポーズ推定モデルのトレーニングや検証のための多様で広範なリソースを提供する。
- ラベルフォーマット:Ultralytics YOLO フォーマットに従い、犬の解剖学に特化した複数のキーポイントに注釈が付されている。
- クラス数1(犬)。
- キーポイント手足、関節、頭の位置など、犬のポーズに合わせた24のキーポイントを収録。
- 用途研究から実世界での応用まで、様々な場面で犬のポーズを推定するモデルのトレーニングに最適。
- 犬のポーズ についてもっと読む
独自のデータセットを追加する
独自のデータセットをお持ちで、Ultralytics YOLO 形式でポーズ推定モデルのトレーニングに使用したい場合は、上記の「Ultralytics YOLO 形式」で指定された形式に従っていることを確認してください。アノテーションを必要なフォーマットに変換し、YAML設定ファイルでパス、クラス数、クラス名を指定します。
変換ツール
Ultralytics は、一般的なCOCOデータセット形式からYOLO 形式にラベルを変換する便利な変換ツールを提供します:
例
この変換ツールを使って、COCO データセットまたは COCO フォーマットの任意のデータセットをUltralytics YOLO フォーマットに変換することができる。この use_keypoints
パラメータは、変換後のラベルに(ポーズ推定のための)キーポイントを含めるかどうかを指定します。
よくあるご質問
Ultralytics YOLO フォーマットは何ですか?
Ultralytics YOLO 形式による姿勢推定データセットでは、各画像に対応するテキストファイルのラベル付けを行います。テキストファイルの各行には、オブジェクトのインスタンスに関する情報が格納されています:
- オブジェクト・クラス・インデックス
- オブジェクトの中心座標(正規化されたxとy)
- オブジェクトの幅と高さ(正規化)
- オブジェクトのキーポイント座標(正規化されたpxnとpyn)
2Dポーズの場合、キーポイントにはピクセル座標が含まれる。3Dの場合、各キーポイントは可視フラグも持つ。詳しくは、Ultralytics YOLO フォーマットをご覧ください。
COCO-Pose データセットをUltralytics YOLO で使用するには?
COCO-Pose データセットをUltralytics YOLO で使用する:
- データセットをダウンロードし、YOLO 形式でラベルファイルを準備してください。
- トレーニング画像と検証画像のパス、キーポイントの形状、クラス名を指定するYAML設定ファイルを作成する。
トレーニングには設定ファイルを使用する:
from ultralytics import YOLO model = YOLO("yolo11n-pose.pt") # load pretrained model results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)
詳しくは、COCO-Poseと 列車のセクションをご覧ください。
Ultralytics YOLO で、ポーズ推定のために独自のデータセットを追加するにはどうすればよいですか?
データセットを追加する
- 注釈をUltralytics YOLO フォーマットに変換します。
- データセットのパス、クラスの数、クラス名を指定するYAML設定ファイルを作成する。
設定ファイルを使ってモデルをトレーニングする:
from ultralytics import YOLO model = YOLO("yolo11n-pose.pt") results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)
完全な手順については、独自のデータセットを追加するセクションを参照してください。
Ultralytics YOLO のデータセット YAML ファイルの目的は何ですか?
Ultralytics YOLO のデータセットYAMLファイルは、トレーニング用のデータセットとモデルの設定を定義します。トレーニング画像、検証画像、テスト画像へのパス、キーポイントの形状、クラス名、その他の設定オプションを指定します。この構造化されたフォーマットはデータセット管理とモデルトレーニングの効率化に役立ちます。以下はYAMLフォーマットの例です:
データセットYAMLフォーマットでのYAML設定ファイルの作成についての詳細はこちらをご覧ください。
ポーズ推定のために、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 プロジェクトにシームレスに統合するのに役立ちます。詳細については、変換ツールのセクションを参照してください。