物体検出データセットの概要
堅牢で正確な物体検出モデルを学習するには、包括的なデータセットが必要です。このガイドでは、Ultralytics YOLOモデルと互換性のあるさまざまな形式のデータセットを紹介し、その構造、使用法、および異なる形式間の変換方法について説明します。
サポートされているデータセット形式
Ultralytics YOLO形式
Ultralytics YOLO形式は、データセットのルートディレクトリ、トレーニング/検証/テスト画像のディレクトリへの相対パス、または *.txt
画像パスを含むfiles、およびクラス名の辞書。以下に例を示します。
ultralytics/cfg/datasets/coco8.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/coco8/
# Example usage: yolo train data=coco8.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco8 ← 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 # 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)
# Classes
names:
0: person
1: bicycle
2: car
3: motorcycle
4: airplane
5: bus
6: train
7: truck
8: boat
9: traffic light
10: fire hydrant
11: stop sign
12: parking meter
13: bench
14: bird
15: cat
16: dog
17: horse
18: sheep
19: cow
20: elephant
21: bear
22: zebra
23: giraffe
24: backpack
25: umbrella
26: handbag
27: tie
28: suitcase
29: frisbee
30: skis
31: snowboard
32: sports ball
33: kite
34: baseball bat
35: baseball glove
36: skateboard
37: surfboard
38: tennis racket
39: bottle
40: wine glass
41: cup
42: fork
43: knife
44: spoon
45: bowl
46: banana
47: apple
48: sandwich
49: orange
50: broccoli
51: carrot
52: hot dog
53: pizza
54: donut
55: cake
56: chair
57: couch
58: potted plant
59: bed
60: dining table
61: toilet
62: tv
63: laptop
64: mouse
65: remote
66: keyboard
67: cell phone
68: microwave
69: oven
70: toaster
71: sink
72: refrigerator
73: book
74: clock
75: vase
76: scissors
77: teddy bear
78: hair drier
79: toothbrush
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip
この形式のラベルは、YOLO 形式で 1 つでエクスポートする必要があります *.txt
画像ごとにfileが1つ。画像内にオブジェクトがない場合、fileは *.txt
fileが必要です。その *.txt
fileは、オブジェクトごとに1行でフォーマットする必要があります。 class x_center y_center width height
形式。ボックスの座標は以下で指定する必要があります 正規化された xywh 形式(0〜1)。ボックスがピクセルの場合、以下で割る必要があります x_center
および width
画像の幅を基準にして、 y_center
および height
画像の高さで正規化されます。クラス番号はゼロから始まるインデックス(0から開始)にする必要があります。
上記の画像に対応するラベルファイルには、2人の人物(クラス 0
)と引き分け(クラス 27
):
Ultralytics YOLO形式を使用する場合は、トレーニングおよび検証イメージとラベルを、以下のCOCO8データセットの例に示すように整理します。
使用例
YOLO形式のデータセットを使用してモデルをトレーニングする方法は次のとおりです。
例
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640
Ultralytics NDJSON形式
NDJSON(Newline Delimited JSON)形式は、Ultralytics YOLO11モデルのデータセットを定義する別の方法を提供します。この形式では、データセットのメタデータとアノテーションを単一のファイルに保存し、各行に個別のJSONオブジェクトが含まれています。
NDJSONデータセットファイルには以下が含まれます:
- データセットレコード (1行目): タスクタイプ、クラス名、および一般的な情報を含むデータセットのメタデータが含まれています
- イメージレコード (後続の行): 寸法、アノテーション、ファイルパスなどの個々のイメージデータが含まれています
NDJSONの例
{
"type": "dataset",
"task": "detect",
"name": "Example",
"description": "COCO NDJSON example dataset",
"url": "https://app.ultralytics.com/user/datasets/example",
"class_names": { "0": "person", "1": "bicycle", "2": "car" },
"bytes": 426342,
"version": 0,
"created_at": "2024-01-01T00:00:00Z",
"updated_at": "2025-01-01T00:00:00Z"
}
{
"type": "image",
"file": "image1.jpg",
"url": "https://www.url.com/path/to/image1.jpg",
"width": 640,
"height": 480,
"split": "train",
"annotations": {
"boxes": [
[0, 0.52481, 0.37629, 0.28394, 0.41832],
[1, 0.73526, 0.29847, 0.19275, 0.33691]
]
}
}
タスクごとのアノテーション形式:
- 検出:
"annotations": {"boxes": [[class_id, x_center, y_center, width, height], ...]}
- セグメンテーション:
"annotations": {"segments": [[class_id, x1, y1, x2, y2, ...], ...]}
- ポーズ:
"annotations": {"pose": [[class_id, x1, y1, v1, x2, y2, v2, ...], ...]}
- OBB:
"annotations": {"obb": [[class_id, x_center, y_center, width, height, angle], ...]}
- 分類:
"annotations": {"classification": [class_id]}
使用例
YOLO11でNDJSONデータセットを使用するには、パスを指定するだけです .ndjson
ファイル:
例
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Train using NDJSON dataset
results = model.train(data="path/to/dataset.ndjson", epochs=100, imgsz=640)
# Start training with NDJSON dataset
yolo detect train data=path/to/dataset.ndjson model=yolo11n.pt epochs=100 imgsz=640
NDJSON形式の利点
- 単一ファイル: すべてのデータセット情報が1つのファイルに格納
- ストリーミング: すべてをメモリにロードせずに、大きなデータセットを1行ずつ処理可能
- クラウド統合: クラウドベースのトレーニング用にリモートイメージURLをサポート
- 拡張可能: カスタムメタデータフィールドの追加が容易
- バージョン管理: 単一ファイル形式は、Gitおよびバージョン管理システムとの連携に最適
サポートされているデータセット
サポートされているデータセットと、それぞれの簡単な説明を以下に示します。
- Argoverse: 豊富なアノテーションが付いた都市環境からの3Dトラッキングおよびモーション予測データを含むデータセット。
- COCO: Common Objects in Context (COCO)は、大規模なオブジェクト検出、セグメンテーション、キャプションデータセットで、80のオブジェクトカテゴリを含みます。
- LVIS: 1203のオブジェクトカテゴリを持つ、大規模な物体検出、セグメンテーション、およびキャプションデータセット。
- COCO8: COCO trainおよびCOCO valの最初の4枚の画像の小さいサブセットで、クイックテストに適しています。
- COCO8-Grayscale: RGBをグレースケールに変換して作成されたCOCO8のグレースケールバージョンで、シングルチャネルモデルの評価に役立ちます。
- COCO8-Multispectral: RGB波長を補間して作成されたCOCO8の10チャンネルマルチスペクトルバージョンで、スペクトル対応モデルの評価に役立ちます。
- COCO128: COCO trainおよびCOCO valの最初の128枚の画像の小さいサブセットで、テストに適しています。
- Global Wheat 2020: Global Wheat Challenge 2020用の小麦の穂の画像を含むデータセット。
- Objects365:365個のオブジェクトカテゴリと60万を超えるアノテーション付き画像を含む、オブジェクト検出用の高品質で大規模なデータセット。
- OpenImagesV7:Googleによる包括的なデータセットで、170万枚のトレーニング画像と42,000枚の検証画像があります。
- SKU-110K: 11Kを超える画像と170万のバウンディングボックスを備えた、小売環境における高密度物体検出を特徴とするデータセット。
- HomeObjects-3K New 🚀: ベッド、椅子、テレビなどを含む屋内家庭用品のデータセット。スマートホームオートメーション、ロボティクス、拡張現実、および部屋のレイアウト分析でのアプリケーションに最適です。
- VisDrone: ドローンで撮影した画像から得られた、物体検出およびマルチ物体追跡データを含むデータセット。10,000 を超える画像とビデオシーケンスが含まれています。
- VOC: 物体検出とセグメンテーションのための Pascal Visual Object Classes (VOC) データセット。20 の物体クラスと 11,000 を超える画像が含まれています。
- xView: 60のオブジェクトカテゴリと100万を超えるアノテーション付きオブジェクトを含む、オーバーヘッド画像内のオブジェクト検出のためのデータセット。
- Roboflow 100: 包括的なモデル評価のために、7つの画像ドメインにまたがる100のデータセットを備えた多様な物体検出ベンチマーク。
- Brain-tumor: 脳腫瘍を検出するためのデータセットには、腫瘍の存在、位置、および特性に関する詳細を含むMRIまたはCTスキャン画像が含まれます。
- African-wildlife: バッファロー、ゾウ、サイ、シマウマなど、アフリカの野生動物の画像を含むデータセット。
- 署名: ドキュメントの検証と不正検出の研究をサポートする、アノテーション付き署名付きのさまざまなドキュメントの画像を備えたデータセット。
- Medical-pills: 医薬品の品質保証、錠剤の仕分け、規制遵守などのアプリケーション向けにアノテーションが付けられた、医療用ピルの画像を特徴とするデータセット。
独自のデータセットの追加
独自のデータセットがあり、それを Ultralytics YOLO 形式で検出モデルのトレーニングに使用したい場合は、上記の「Ultralytics YOLO 形式」で指定されている形式に従っていることを確認してください。アノテーションを必要な形式に変換し、YAML 構成ファイルでパス、クラス数、クラス名を指定します。
ラベル形式の移植または変換
COCOデータセット形式からYOLO形式へ
一般的なCOCOデータセット形式からYOLO形式へのラベルの変換は、次のコードスニペットを使用して簡単に行えます。
例
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/")
この変換ツールを使用すると、COCOデータセットまたはCOCO形式の任意のデータセットをUltralytics YOLO形式に変換できます。このプロセスでは、JSONベースのCOCOアノテーションが、よりシンプルなテキストベースのYOLO形式に変換され、Ultralytics YOLOモデルとの互換性が確保されます。
使用したいデータセットがモデルと互換性があり、必要な形式の規則に従っているかどうかを再確認することを忘れないでください。適切にフォーマットされたデータセットは、オブジェクト検出モデルのトレーニングを成功させるために不可欠です。
よくある質問
Ultralytics YOLOデータセットの形式とは何ですか?また、その構造はどうなっていますか?
Ultralytics YOLO形式は、トレーニングプロジェクトでデータセットを定義するための構造化された構成です。これには、トレーニング、検証、およびテスト画像と対応するラベルへのパスの設定が含まれます。たとえば:
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/coco8/
# Example usage: yolo train data=coco8.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco8 ← 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 # 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)
# Classes
names:
0: person
1: bicycle
2: car
3: motorcycle
4: airplane
5: bus
6: train
7: truck
8: boat
9: traffic light
10: fire hydrant
11: stop sign
12: parking meter
13: bench
14: bird
15: cat
16: dog
17: horse
18: sheep
19: cow
20: elephant
21: bear
22: zebra
23: giraffe
24: backpack
25: umbrella
26: handbag
27: tie
28: suitcase
29: frisbee
30: skis
31: snowboard
32: sports ball
33: kite
34: baseball bat
35: baseball glove
36: skateboard
37: surfboard
38: tennis racket
39: bottle
40: wine glass
41: cup
42: fork
43: knife
44: spoon
45: bowl
46: banana
47: apple
48: sandwich
49: orange
50: broccoli
51: carrot
52: hot dog
53: pizza
54: donut
55: cake
56: chair
57: couch
58: potted plant
59: bed
60: dining table
61: toilet
62: tv
63: laptop
64: mouse
65: remote
66: keyboard
67: cell phone
68: microwave
69: oven
70: toaster
71: sink
72: refrigerator
73: book
74: clock
75: vase
76: scissors
77: teddy bear
78: hair drier
79: toothbrush
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip
ラベルは以下に保存されます *.txt
画像ごとに1つのファイルがあり、以下の形式で記述されます。 class x_center y_center width height
正規化された座標を使用します。詳細なガイドについては、こちらをご覧ください。 COCO8データセットの例.
COCOデータセットをYOLO形式に変換するにはどうすればよいですか?
Ultralyticsの変換ツールを使用すると、COCOデータセットをYOLO形式に変換できます。簡単な方法を以下に示します。
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/")
このコードは、COCOアノテーションをYOLO形式に変換し、Ultralytics YOLOモデルとのシームレスな統合を可能にします。詳細については、ラベル形式の移植または変換セクションをご覧ください。
オブジェクト検出において、Ultralytics YOLO はどのデータセットをサポートしていますか?
Ultralytics YOLOは、以下を含む幅広いデータセットをサポートしています。
各データセットページには、効率的なYOLO11トレーニングに合わせて調整された構造と使用法に関する詳細情報が記載されています。完全なリストは、サポートされているデータセットセクションで確認してください。
自分のデータセットを使用して YOLO11 モデルのトレーニングを開始するにはどうすればよいですか?
YOLO11モデルのトレーニングを開始するには、データセットが正しくフォーマットされ、パスがYAMLファイルで定義されていることを確認してください。次のスクリプトを使用して、トレーニングを開始します。
例
from ultralytics import YOLO
model = YOLO("yolo11n.pt") # Load a pretrained model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)
yolo detect train data=path/to/your_dataset.yaml model=yolo11n.pt epochs=100 imgsz=640
さまざまなモード(CLIコマンドを含む)の利用に関する詳細については、Usageセクションを参照してください。
Ultralytics YOLOをオブジェクト検出に使用する実践的な例はどこにありますか?
Ultralyticsは、YOLO11を多様なアプリケーションで使用するための多数の例と実践的なガイドを提供しています。包括的な概要については、Ultralyticsブログをご覧ください。ここでは、YOLO11を使用したオブジェクト検出、セグメンテーションなどのケーススタディ、詳細なチュートリアル、コミュニティストーリーを見つけることができます。具体的な例については、ドキュメントの使用法セクションを確認してください。