ポーズ推定データセットの概要
サポートされているデータセット形式
Ultralytics YOLO形式
YOLOの姿勢推定モデルのトレーニングに使用されるデータセットのラベル形式は次のとおりです。
- 画像ごとに1つのテキストファイル:データセット内の各画像には、画像ファイルと同じ名前で、拡張子「.txt」が付いた対応するテキストファイルがあります。
- オブジェクトごとに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> <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
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip
The 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("yolo11n-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 pose train data=coco8-pose.yaml model=yolo11n-pose.pt epochs=100 imgsz=640
サポートされているデータセット
このセクションでは、Ultralytics YOLO形式と互換性があり、ポーズ推定モデルのトレーニングに使用できるデータセットの概要を説明します。
COCO-Pose
- 説明:COCO-Poseは、大規模な物体検出、セグメンテーション、およびポーズ推定データセットです。これは、人気のあるCOCOデータセットのサブセットであり、人間のポーズ推定に焦点を当てています。COCO-Poseには、人間のインスタンスごとに複数のキーポイントが含まれています。
- ラベル形式: 上記のUltralytics YOLO形式と同じで、人間のポーズのキーポイントが含まれています。
- Number of Classes: 1 (人間)。
- キーポイント:鼻、目、耳、肩、肘、手首、腰、膝、足首を含む17個のキーポイント。
- 使用法: 人間のポーズ推定モデルのトレーニングに適しています。
- 追加の注意点: データセットは豊富で多様であり、20万を超えるラベル付き画像が含まれています。
- COCO-Poseの詳細はこちらをご覧ください
COCO8-Pose
- 説明:Ultralytics COCO8-Poseは、COCO train 2017セットの最初の8枚の画像(トレーニング用に4枚、検証用に4枚)で構成される、小規模ながら汎用性の高いポーズ検出データセットです。
- ラベル形式: 上記のUltralytics YOLO形式と同じで、人間のポーズのキーポイントが含まれています。
- Number of Classes: 1 (人間)。
- キーポイント:鼻、目、耳、肩、肘、手首、腰、膝、足首を含む17個のキーポイント。
- 使用法: オブジェクト検出モデルのテストとデバッグ、または新しい検出アプローチの実験に適しています。
- 追加の注意点: COCO8-Poseは、健全性チェックとCIチェックに最適です。
- COCO8-Poseの詳細はこちらをご覧ください
Tiger-Pose
- 説明: Ultralytics Tiger Poseデータセットは、YouTubeビデオから提供された263枚の画像で構成されており、210枚の画像がトレーニング用に、53枚が検証用に割り当てられています。
- ラベル形式: 上記のUltralytics YOLO形式と同じで、動物のポーズの12個のキーポイントが含まれ、表示される次元はありません。
- Number of Classes: 1 (虎)。
- キーポイント:12個のキーポイント。
- 使用法: 動物のポーズや、人間以外のあらゆるポーズに最適です。
- Tiger-Poseの詳細はこちらをご覧ください
手のキーポイント
- 説明:ハンドキーポイントポーズデータセットは、約26Kの画像で構成されており、18776枚の画像がトレーニング用に、7992枚が検証用に割り当てられています。
- ラベル形式: 上記のUltralytics YOLO形式と同じですが、人間の手の21個のキーポイントと表示される次元が含まれています。
- Number of Classes: 1 (手)。
- キーポイント:21個のキーポイント。
- 使用法: 人間の手のポーズ推定とジェスチャー認識に最適です。
- Hand Keypointsの詳細はこちらをご覧ください
犬のポーズ
- 説明:Dog Poseデータセットには、約6,000枚の画像が含まれており、犬のポーズ推定モデルのトレーニングと検証のための多様で広範なリソースを提供します。
- ラベル形式: Ultralytics YOLO形式に従い、犬の解剖学に特有の複数のキーポイントのアノテーションが含まれています。
- Number of Classes: 1 (犬)。
- キーポイント: 四肢、関節、頭の位置など、犬のポーズに合わせた24個のキーポイントが含まれています。
- 使用法: 研究から実世界のアプリケーションまで、さまざまなシナリオで犬のポーズを推定するモデルをトレーニングするのに理想的です。
- Dog-Poseの詳細はこちらをご覧ください
独自のデータセットの追加
独自のデータセットがあり、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
パラメータは、変換されたラベルにキーポイント(ポーズ推定用)を含めるかどうかを指定します。
よくある質問
ポーズ推定のためのUltralytics YOLO形式とは何ですか?
ポーズ推定データセット用のUltralytics YOLO形式では、各画像に、対応するテキストファイルでラベル付けを行います。テキストファイルの各行には、オブジェクトインスタンスに関する情報が格納されます。
- オブジェクトクラスのインデックス
- オブジェクトの中心座標(正規化されたxとy)
- オブジェクトの幅と高さ(正規化済み)
- オブジェクトのキーポイント座標(正規化されたpxnとpyn)
2Dポーズの場合、キーポイントにはピクセル座標が含まれます。3Dの場合、各キーポイントには表示フラグも含まれます。詳細については、Ultralytics YOLO形式を参照してください。
Ultralytics YOLOでCOCO-Poseデータセットを使用するにはどうすればよいですか?
Ultralytics YOLOでCOCO-Poseデータセットを使用するには:
- データセットをダウンロードし、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)
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形式の例を次に示します。
# 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
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip
データセット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プロジェクトにシームレスに統合するのに役立ちます。詳細については、変換ツールセクションとデータ前処理ガイドを参照してください。