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、および test フィールドは、それぞれトレーニング、検証、テスト用画像を指定します。各フィールドでは、ディレクトリ、ディレクトリのリスト、または各行に1つの画像パスが記載された *.txt ファイル(./ で始まるパスは *.txt ファイルからの相対パスとして解決されます)を受け付けます。*.txt ファイルは、ディレクトリ内のサブセットのみでトレーニングする場合や、ラベルのない画像をスキップする場合、あるいは複数のソースからの画像を1つの分割セットにまとめる場合に便利です。
path: datasets/coco8-pose # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
0: personnamesはクラス名の辞書です。名前の順序は、YOLOデータセットファイル内のオブジェクトクラスインデックスの順序と一致している必要があります。
(オプション) flip_idx は各キーポイントをその鏡像に対応付けるため、水平反転(horizontal-flip)のデータ拡張を行っても、人体や顔のような対称性のあるスケルトンにおいて左右の一貫性が保たれます。左目、右目、鼻、左口角、右口角をインデックス [0, 1, 2, 3, 4] とする5つの顔のランドマークの場合、flip_idx は [1, 0, 2, 4, 3] となります。つまり、左右のペアである0-1と3-4が入れ替わり、鼻は自身のインデックスを保持します。
(Optional) kpt_oks_sigmas sets custom per-keypoint OKS sigmas used during validation, e.g. [0.26, 0.25, 0.25, ...]. The list length must equal the number of keypoints N from kpt_shape, and every value must be positive. When omitted, the COCO 17-keypoint sigmas are used for kpt_shape: [17, 3] and a uniform 1/N otherwise.
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 2017 画像を網羅した、大規模な人体ポーズ推定データセットです。
- ラベル形式: 上記で説明したUltralytics YOLO形式と同じで、人間の姿勢用のキーポイントが含まれています。
- クラス数: 1 (人物)。
- キーポイント: 鼻、目、耳、肩、肘、手首、腰、膝、足首を含む17種類のキーポイント。それぞれに可視性(visibility)の次元が含まれます。
- 使用方法: 人間の姿勢推定モデルのトレーニングに適しています。
- 追加メモ: このデータセットは COCO Keypoints 2017 チャレンジに基づいており、156,165人の人物がアノテーションされた58,945枚の画像で構成されています。
- COCO-Poseについて詳しく読む
Link to this sectionCOCO8-Pose#
- 説明: Ultralytics COCO8-Pose は、COCO train 2017 セットの最初の8枚の画像(トレーニング用4枚、検証用4枚)で構成された、小規模で汎用性の高いポーズ推定データセットです。
- ラベル形式: 上記で説明したUltralytics YOLO形式と同じで、人間の姿勢用のキーポイントが含まれています。
- クラス数: 1 (人物)。
- キーポイント: 鼻、目、耳、肩、肘、手首、腰、膝、足首を含む17種類のキーポイント。それぞれに可視性(visibility)の次元が含まれます。
- 用途: ポーズ推定モデルのテストやデバッグ、または新しいキーポイント検出手法の実験に適しています。
- 注意事項: COCO8-Poseは、サニティチェックやCIチェックに最適です。
- COCO8-Poseについて詳しく読む
Link to this sectionDog-Pose#
- 説明: Ultralytics Dog-Pose データセットには、犬のキーポイント推定用にトレーニング画像6,773枚と検証画像1,703枚が含まれています。
- ラベル形式: Ultralytics YOLO形式に従っており、犬の解剖学的構造に特化した複数のキーポイントのアノテーションが含まれています。
- クラス数: 1 (犬)。
- キーポイント: 四肢、関節、頭部の位置など、犬のポーズに合わせて調整された24個のキーポイント。それぞれに可視性の次元が含まれます。
- 使用方法: 研究から実際のアプリケーションまで、様々なシナリオで犬の姿勢を推定するモデルのトレーニングに最適です。
- 追加メモ: ソース画像は Stanford Dogs Dataset から取得されています。
- Dog-Poseについて詳しく読む
Link to this sectionHand Keypoints#
- 説明: Ultralytics Hand Keypoints データセットは26,768枚の画像で構成されており、そのうち18,776枚がトレーニング用、7,992枚が検証用に割り当てられています。
- ラベル形式: 上記で説明したUltralytics YOLO形式と同じですが、人間の手用の21個のキーポイントと可視性ディメンションが含まれています。
- クラス数: 1 (手)。
- キーポイント: 21個のキーポイント。
- 使用方法: 人の手の姿勢推定やジェスチャー認識に最適です。
- 追加メモ: キーポイントのアノテーションは、一貫したラベル付けのために Google MediaPipe を使用して生成されています。
- Hand Keypointsについて詳しく読む
Link to this sectionTiger-Pose#
- 説明: Ultralytics Tiger-Pose データセットは、YouTube動画から取得した263枚の画像で構成されており、210枚がトレーニング用、53枚が検証用に割り当てられています。
- ラベル形式: 前述の Ultralytics YOLO 形式と同じで、動物のポーズ用に12個のキーポイントがあり、可視性の次元はありません。
- クラス数: 1 (虎)。
- キーポイント: 12個のキーポイント。
- 使用方法: 動物の姿勢推定や、人間以外のその他の姿勢推定に最適です。
- 追加メモ: AGPL-3.0 License の下でリリースされています。
- Tiger-Poseについて詳しく読む
Link to this section独自のデータセットの追加#
独自のデータセットを持ち、それをUltralytics YOLO形式の姿勢推定モデルのトレーニングに使用したい場合は、上記の「Ultralytics YOLO形式」で指定された形式に従っていることを確認してください。アノテーションを必要な形式に変換し、YAML構成ファイルでパス、クラス数、クラス名を指定してください。
変換手順を完全にスキップしたい場合は、Ultralytics Platform を使用して、生の画像をアップロードし、ブラウザ上でキーポイントのアノテーションを行い、そのまま作成されたデータセットでトレーニングを行うことができます。
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データセットを使用するにはどうすればよいですか?#
coco-pose.yaml はパッケージに同梱されており、初回使用時に画像とラベルをダウンロードするため、手動での準備は不要です:
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 ページを参照してください。
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プロジェクトへシームレスに統合するのに役立ちます。詳細については、変換ツールセクションおよびデータ前処理ガイドを参照してください。