yolo-datasets について
Ultralytics YOLO を使う開発者や ML 実務者向けに、データセットの準備、変換、分割、学習前検証を案内するスキルです。Platform とローカルコードの両方を扱い、ラベルの配置や形式の確認にも重点を置きます。
主な機能
- 01Platform でのデータセット準備と版管理
- 02画像とラベルの対応配置ガイド
- 03COCO・DOTA 変換ユーティリティ
- 04データセット分割とリーク確認
- 05学習前の検証手順
活用シーン
- 01ラベルの欠落や配置ミスの調査
- 02YOLO 学習用データセットの準備
- 03COCO または DOTA 注釈の変換
- 04動画フレーム間の分割リーク確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ultralytics/ skills --skill yolo-datasetsインストール後、Claude Code で/yolo-datasetsを入力して読み込まれたか確認します。
同梱ファイルagents/openai.yamllabel-formats.md
詳細
Ultralytics YOLO データセット
サイレントなトレーニング失敗の最大の原因は、不正な形式のデータセットです — トレーニングの前に検証してください。
最速のルート: Platform でデータを準備する
- Platform を開き、Annotate でデータセットを作成し、そのタスクを選択します。
- 画像、動画、ZIP/TAR アーカイブ、または NDJSON をアップロードします。既存の YOLO ラベルと COCO JSON をインポートできます。クラウドストレージ連携を使用すると、対応データをそのままの場所に保持できます。
- 全画面エディターで画像を開きます。検出、セグメント、セマンティック、分類、ポーズ、OBB には手動ツールを使用します。Smart モードに切り替えると、SAM(検出、セグメント、セマンティック、OBB)または互換性のある公式/カスタム YOLO モデル(これらのタスクに加えてポーズ)でラベル付けできます。
- Classes、Charts、Errors タブを確認し、分割を修正し、重要な実行の前に番号付きのデータセットバージョンを作成します。
Platform のデータセットは 7 つの YOLO タスクすべてに対応しています。深度ターゲットはエディターで描画するのではなくインポートします。Platform Data と Annotation Editor を参照してください。
ローカルコードから同じデータセットでトレーニングするには、Settings > API Keys で API キーを作成し、ULTRALYTICS_API_KEY を設定して、データセットの ul:// URI を data として渡します:
yolo train model=yolo26n.pt data=ul://username/datasets/dataset-slug epochs=100
ライブの Platform アクセスの代わりにポータブルなスナップショットが必要な場合は、NDJSON をエクスポートします。
images → labels ミラールール
Ultralytics は、最後の /images/ パスセグメントを /labels/ に、画像拡張子を .txt に置き換えることでラベルファイルを見つけます:
dataset/
├── data.yaml
├── images/train/ img001.jpg ... ├── images/val/ ...
└── labels/train/ img001.txt ... └── labels/val/ ...
images/ディレクトリ内で画像の隣にあるラベル、またはlabelsという名前ではないディレクトリにあるラベルは、見つかりません → トレーニングはNo labels foundで停止します。一部だけが欠落している場合、それらの画像は背景としてトレーニングされます。- ファイル名はステムと完全に一致する必要があります(Linux では大文字と小文字が区別されます)。
- ラベルファイルがない、または空の画像は、背景画像としてトレーニングされます。真の背景が数パーセントあると誤検出が減少しますが、誤ってラベルが欠落すると再現率が破壊されます。
data.yaml の構造
path: /abs/dataset/root # absolute, or omit to use this yaml's folder; a relative value (even `.`) resolves from the CWD (datasets_dir if missing there)
train: images/train # dir, .txt file of image paths, or list of dirs
val: images/val
test: images/test # optional
names: # 0-based, contiguous indices
0: person
1: helmet
# pose only:
kpt_shape: [17, 3] # [num_keypoints, dims]; dims 2 (x,y) or 3 (x,y,visibility)
flip_idx: [0, 2, 1, ...] # L/R keypoint swap map — without it, flip augs are auto-disabled
# semantic only (optional — polygon .txt labels in labels/ also work):
masks_dir: masks # per-pixel PNG mask images
# depth only (replace names above; pair depth/{train,val}/*.png or float .npy maps):
# nc: 1
# names: {0: depth}
# depth_scale: 1000 # PNG units per meter; default millimeters
- 分類データセットは yaml を使用しません: フォルダー構造がラベルです(
dataset/train/<class>/*.jpg、dataset/val/<class>/*.jpg)。data=path/to/datasetでトレーニングします。 - タスクごとのラベル行形式とその注意点: ラベルファイルを作成またはデバッグするときはいつでも、(このフォルダーの)
label-formats.mdを読んでください。
他の形式からの変換 — まず組み込み機能を使用する
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="coco/annotations/", use_segments=True, cls91to80=False) # → segment
convert_coco(labels_dir="coco/annotations/", use_keypoints=True, cls91to80=False) # → pose
検出ラベルには use_segments を省略します。cls91to80=False はカスタムカテゴリ ID を(category_id - 1 として)保持します。デフォルトの True は公式 COCO 91 クラス ID の場合にのみそのままにしてください。
また、ultralytics.data.converter には以下があります: convert_dota_to_yolo_obb(dota_root_path)(DOTA → OBB)、convert_segment_masks_to_yolo_seg(masks_dir, output_dir, classes)(インデックス PNG → ポリゴン)、yolo_bbox2segment(im_dir)(SAM 経由で検出ラベルをセグメントにアップグレード)、convert_to_multispectral(path, n_channels)。
生の画像フォルダを自動ラベリングします(検出器がボックスを提案し、SAM がマスクを精緻化します):
from ultralytics.data.annotator import auto_annotate
auto_annotate(
data="dataset/images/train", det_model="yolo26x.pt", sam_model="sam_b.pt", output_dir="dataset/labels/train"
)
VOC XML/CSV 用のコンバーターはありません — タスクごとの行形式(座標の正規化、中心ベースのボックス)を出力する小さなスクリプトを作成してください。
分割
from ultralytics.data.split import autosplit
autosplit(path="dataset/images", weights=(0.9, 0.1, 0.0)) # writes autosplit_*.txt lists
train:/val: を生成された .txt ファイルに向けます。同じ動画/シーンのフレームは 1 つの分割にまとめてください — 動画フレームを画像ごとにランダム分割すると、ほぼ重複したものが val に漏れ込み、mAP が過大評価されます。分類の場合は: split_classify_dataset(source_dir, 0.8)。
トレーニング前の検証(タスクに関連する手順を順番に使用)
-
YAML/パスチェック(分類以外) — 必須フィールドを検証し、設定されたパスを解決し、要求された分割(デフォルトは
val)を確認し、既知のデータセットを自動ダウンロードする場合があります。個々の画像やターゲットをカウントしたり解析したりはしません:from ultralytics.data.utils import check_det_dataset check_det_dataset("data.yaml") # detect/segment/pose/obb/semantic/depth -
検出専用の視覚的スポットチェック — このヘルパーは 5 列の
class cx cy w h行を受け付けます。正規化の誤りや軸の入れ替わりが可視化されます:from ultralytics.data.utils import visualize_image_annotations visualize_image_annotations( "images/train/img001.jpg", "labels/train/img001.txt", label_map={0: "person", 1: "helmet"}, )segment、pose、OBB、semantic、depth、classify のターゲットにはこのヘルパーを使用しないでください。代わりにそれぞれのタスク対応のトレーナープロットを使用してください。
-
タスクローダーのスモークテスト — 一致するタスク/モデル/データで 1 エポック実行します。これにより実際のデータセットが構築され、タスク対応のトレーニングプロットが生成されます(検出の例):
yolo detect train data=data.yaml model=yolo26n.pt epochs=1 fraction=0.1 # inspect runs/detect/train/train_batch0.jpg — boxes must sit on objects -
分布の妥当性確認 — タスクに適したクラス/ターゲットのバランスと分割リークを確認します。ボックスタスクの場合は、トレーニング時の
imgszにおける非常に小さいボックスと背景画像の割合も検査してください。
パイプラインのスモークテスト用の既知の正常な小さなデータセット(自動ダウンロード):coco8.yaml、coco8-seg.yaml、coco8-pose.yaml、dota8.yaml、cityscapes8.yaml、depth8.yaml、imagenet10。
関連ページ
label-formats.md— タスクごとの正確なラベル行フォーマット + 症状→原因の表。ラベルを書くとき、フォーマットを変換するとき、またはラベル関連のエラーが発生したときに読んでください。
インストールされているバージョンがここにある引数やフォーマットを拒否する場合は、このファイルよりもそのエラーメッセージと yolo checks を信頼してください。