Link to this section姿勢推定データセットの概要#
Link to this sectionサポートされているデータセット形式#
Link to this sectionUltralytics YOLO形式#
YOLO姿勢推定モデルのトレーニングに使用されるデータセットラベル形式は以下の通りです。
- 画像ごとに1つのテキストファイル:データセット内の各画像には、画像ファイルと同じ名前で「.txt」拡張子を持つ対応するテキストファイルがあります。
- オブジェクトごとに1行:テキストファイルの各行は、画像内の1つのオブジェクトインスタンスに対応します。
- 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>はbounding boxの正規化された座標、<px1> <py1> <px2> <py2> ... <pxn> <pyn>は正規化されたキーポイント座標です。可視性チャンネルはオプションですが、オクルージョン(遮蔽)をアノテーションするデータセットには有用です。
Link to this sectionデータセットYAML形式#
Ultralyticsフレームワークでは、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.ziptrainおよびvalフィールドは、それぞれトレーニング用画像と検証用画像を含むディレクトリへのパスを指定します。
namesはクラス名の辞書です。名前の順序は、YOLOデータセットファイル内のオブジェクトクラスインデックスの順序と一致している必要があります。
(オプション)ポイントが対称的な場合は、人間の左右や顔のようにflip_idxが必要です。例えば、顔のランドマークの5つのキーポイント [左目、右目、鼻、左口角、右口角] を想定し、元のインデックスが [0, 1, 2, 3, 4] である場合、flip_idxは [1, 0, 2, 4, 3] となります(左右のインデックス、つまり0-1と3-4を入れ替え、この例の鼻のように他のものは変更しません)。
Link to this section使用方法#
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)Link to this sectionサポートされているデータセット#
このセクションでは、Ultralytics YOLO形式と互換性があり、姿勢推定モデルのトレーニングに使用できるデータセットの概要を説明します。
Link to this sectionCOCO-Pose#
- 説明: COCO-Poseは、大規模な物体検出、セグメンテーション、および姿勢推定データセットです。これは一般的なCOCOデータセットのサブセットであり、人間の姿勢推定に焦点を当てています。COCO-Poseには、各人物インスタンスに対する複数のキーポイントが含まれています。
- ラベル形式: 上記で説明したUltralytics YOLO形式と同じで、人間の姿勢用のキーポイントが含まれています。
- クラス数: 1 (人物)。
- キーポイント: 鼻、目、耳、肩、肘、手首、腰、膝、足首を含む17個のキーポイント。
- 使用方法: 人間の姿勢推定モデルのトレーニングに適しています。
- 追加メモ: このデータセットは豊富で多様であり、20万枚を超えるラベル付き画像が含まれています。
- COCO-Poseについて詳しく読む
Link to this sectionCOCO8-Pose#
- 説明: Ultralytics COCO8-Poseは、COCO train 2017セットの最初の8枚の画像(トレーニング用4枚、検証用4枚)で構成される、小規模ながら多目的な姿勢検出データセットです。
- ラベル形式: 上記で説明したUltralytics YOLO形式と同じで、人間の姿勢用のキーポイントが含まれています。
- クラス数: 1 (人物)。
- キーポイント: 鼻、目、耳、肩、肘、手首、腰、膝、足首を含む17個のキーポイント。
- 使用方法: 物体検出モデルのテストやデバッグ、または新しい検出アプローチの実験に適しています。
- 追加メモ: COCO8-Poseは、サニティチェックやCIチェックに最適です。
- COCO8-Poseについて詳しく読む
Link to this sectionDog-Pose#
- 説明: Dog-Poseデータセットには、6,773枚のトレーニング画像と1,703枚のテスト画像が含まれており、犬のキーポイント推定のための多様で広範なリソースを提供します。
- ラベル形式: Ultralytics YOLO形式に従っており、犬の解剖学的構造に特化した複数のキーポイントのアノテーションが含まれています。
- クラス数: 1 (犬)。
- キーポイント: 手足、関節、頭部の位置など、犬の姿勢に合わせた24個のキーポイントが含まれています。
- 使用方法: 研究から実際のアプリケーションまで、様々なシナリオで犬の姿勢を推定するモデルのトレーニングに最適です。
- Dog-Poseについて詳しく読む
Link to this sectionHand Keypoints#
- 説明: 手のキーポイント姿勢データセットは26,000枚近い画像で構成されており、18,776枚がトレーニング用、7,992枚が検証用に割り当てられています。
- ラベル形式: 上記で説明したUltralytics YOLO形式と同じですが、人間の手用の21個のキーポイントと可視性ディメンションが含まれています。
- クラス数: 1 (手)。
- キーポイント: 21個のキーポイント。
- 使用方法: 人の手の姿勢推定やジェスチャー認識に最適です。
- Hand Keypointsについて詳しく読む
Link to this sectionTiger-Pose#
- Description: Ultralytics Tiger Poseデータセットは、YouTube動画から収集された263枚の画像で構成されており、トレーニング用に210枚、検証用に53枚が割り当てられています。
- ラベル形式: 上記で説明したUltralytics YOLO形式と同じで、動物の姿勢用に12個のキーポイントが含まれており、可視性ディメンションはありません。
- クラス数: 1 (虎)。
- キーポイント: 12個のキーポイント。
- 使用方法: 動物の姿勢推定や、人間以外のその他の姿勢推定に最適です。
- Tiger-Poseについて詳しく読む
Link to this section独自のデータセットの追加#
独自のデータセットを持ち、それをUltralytics YOLO形式の姿勢推定モデルのトレーニングに使用したい場合は、上記の「Ultralytics YOLO形式」で指定された形式に従っていることを確認してください。アノテーションを必要な形式に変換し、YAML構成ファイルでパス、クラス数、クラス名を指定してください。
Link to this section変換ツール#
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パラメータは、変換されたラベルに(姿勢推定用の)キーポイントを含めるかどうかを指定します。
Link to this sectionよくある質問 (FAQ)#
Link to this section姿勢推定のためのUltralytics YOLO形式とは何ですか?#
姿勢推定データセットのためのUltralytics YOLO形式では、各画像にそれに対応するテキストファイルを付けます。テキストファイルの各行には、オブジェクトインスタンスに関する情報が格納されています。
- オブジェクトクラスインデックス
- オブジェクトの中心座標(正規化されたxおよびy)
- オブジェクトの幅と高さ(正規化)
- オブジェクトのキーポイント座標(正規化されたpxnおよびpyn)
2D姿勢の場合、キーポイントには正規化されたxおよびy座標が含まれます。可視性ディメンションがある場合、各キーポイントには可視性フラグも存在します。詳細については、Ultralytics YOLO形式を参照してください。
Link to this sectionUltralytics YOLOでCOCO-Poseデータセットを使用するにはどうすればよいですか?#
Ultralytics YOLOでCOCO-Poseデータセットを使用するには:
-
データセットをダウンロードし、YOLO形式でラベルファイルを作成します。
-
トレーニング用および検証用画像へのパス、キーポイントの形状、クラス名を指定するYAML構成ファイルを作成します。
-
構成ファイルを使用してトレーニングを行います。
from ultralytics import YOLO model = YOLO("yolo26n-pose.pt") # load pretrained model results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)
Link to this sectionUltralytics YOLOで姿勢推定用に独自のデータセットを追加するにはどうすればよいですか?#
データセットを追加するには:
-
アノテーションをUltralytics YOLO形式に変換します。
-
データセットへのパス、クラス数、クラス名を指定するYAML構成ファイルを作成します。
-
構成ファイルを使用してモデルをトレーニングします。
from ultralytics import YOLO model = YOLO("yolo26n-pose.pt") results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)完全な手順については、独自のデータセットの追加セクションを確認してください。
Link to this sectionUltralytics 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.zipYAML構成ファイルの作成方法については、データセットYAML形式の詳細を参照してください。
Link to this section姿勢推定のために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プロジェクトにシームレスに統合するのに役立ちます。詳細については、変換ツールセクションおよびデータ前処理ガイドを参照してください。