目标检测数据集概述#
训练一个强大且准确的object detection模型需要全面的数据集。本指南介绍了与 Ultralytics YOLO 模型兼容的各种数据集格式,并深入探讨了它们的结构、用法以及如何在不同格式之间进行转换。
支持的数据集格式#
Ultralytics YOLO 格式#
Ultralytics YOLO 格式是一种数据集配置格式,允许你定义数据集根目录、训练/验证/测试图像目录的相对路径或包含图像路径的 *.txt 文件,以及类别名称字典。以下是一个示例:
# 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.ziptrain、val 和 test 中的每一个都可以接受一个目录、一个目录列表,或者一个每行列出一个图像路径的 *.txt 文件(以 ./ 开头的路径相对于 *.txt 文件解析)。*.txt 文件可用于在目录的子集上进行训练、跳过未标注的图像,或者将来自多个源的图像组合到一个数据集中。
path: datasets/coco8 # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
0: person此格式的标签应导出为 YOLO 格式,每张图像对应一个 *.txt 文件。如果图像中没有对象,则不需要 *.txt 文件。*.txt 文件的格式应为每个对象一行,采用 class x_center y_center width height 格式。框的坐标必须采用归一化 xywh 格式(从 0 到 1)。如果你的框是以像素为单位的,你应该将 x_center 和 width 除以图像宽度,并将 y_center 和 height 除以图像高度。类别编号应从零开始索引(从 0 开始)。

上面图像对应的标签文件包含 2 个人(类别 0)和一个领带(类别 27):

使用 Ultralytics YOLO 格式时,请按照下方 COCO8 dataset 示例所示组织你的训练和验证图像及标签。

使用示例#
以下是如何使用 YOLO 格式数据集来训练你的模型:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Ultralytics NDJSON 格式#
NDJSON(换行符分隔的 JSON)格式为定义 Ultralytics YOLO 模型的数据集提供了另一种方式。此格式将数据集元数据和标注存储在单个文件中,其中每一行都包含一个单独的 JSON 对象。
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"
}自定义图像元数据#
每个图像记录可以包含一个用于应用程序特定上下文(例如捕获条件、设备标识符或审查状态)的 metadata JSON 对象。支持嵌套值。导入 Ultralytics Platform 时,元数据会与该图像一起存储,并且可以从其全屏信息面板中查看或编辑。
{
"type": "image",
"file": "airbus-wing.jpg",
"url": "https://example.com/airbus-wing.jpg",
"split": "train",
"metadata": { "aircraft": { "family": "A350", "section": "wing" }, "inspectionStatus": "reviewed" }
}Platform 将顶级元数据键限制为 128 个字符,每个图像的序列化元数据对象限制为 500,000 个字符,单次 NDJSON 导入中的组合有效元数据限制为 500,000 个字符。
使用示例#
要在 YOLO26 中使用 NDJSON 数据集,只需指定 .ndjson 文件的路径:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Train using NDJSON dataset
results = model.train(data="path/to/dataset.ndjson", epochs=100, imgsz=640)NDJSON 格式的优势#
- 单个文件:所有数据集信息包含在一个文件中
- 流式处理:可以逐行处理大型数据集,而无需将所有内容加载到内存中
- 云集成:支持用于云端训练的远程图像 URL
- 可扩展:易于添加自定义元数据字段
- 版本控制:单文件格式可以很好地与 git 和版本控制系统配合使用
支持的数据集#
以下是支持的数据集列表及其简要说明:
- African-wildlife:一个包含非洲野生动物图像的数据集,包括水牛、大象、犀牛和斑马。
- Argoverse:一个包含来自城市环境的 3D 跟踪和运动预测数据以及丰富标注的数据集。
- Brain-tumor:用于检测脑肿瘤的数据集,包含 MRI 或 CT 扫描图像,并带有关于肿瘤存在、位置和特征的详细信息。
- COCO:Common Objects in Context (COCO) 是一个大规模的object detection、分割和图像描述数据集,包含 80 个对象类别。
- COCO8:来自 COCO train 和 COCO val 的前 4 张图像的较小子集,适用于快速测试。
- COCO8-Grayscale:通过将 RGB 转换为灰度创建的 COCO8 灰度版本,适用于单通道模型评估。
- COCO8-Multispectral:通过对 RGB 波长进行插值创建的 COCO8 的 10 通道多光谱版本,适用于光谱感知模型评估。
- COCO12-Formats:一个包含 12 张图像的测试数据集,涵盖 12 种支持的图像格式(AVIF、BMP、DNG、HEIC、JP2、JPEG、JPG、MPO、PNG、TIF、TIFF、WebP),用于验证图像加载管道。
- COCO16:来自 COCO train2017 的前 16 张图像的子集(8 个 train + 8 个 val),适用于快速测试。
- COCO32:来自 COCO train2017 的前 32 张图像的子集(16 个 train + 16 个 val),适用于快速测试。
- COCO64:来自 COCO train2017 的前 64 张图像的子集(32 个 train + 32 个 val),适用于快速测试。
- COCO128:来自 COCO train2017 的前 128 张图像的较小子集,适用于测试。
- Construction-PPE:一个数据集,包含标有安全装备(如头盔、背心、手套、靴子和护目镜)的建筑工地工人,包括用于现实世界合规监控的漏配装备标注,如 no_helmet、no_goggle。
- Global Wheat 2020:一个包含 2020 年全球小麦挑战赛麦穗图像的数据集。
- HomeObjects-3K:包含室内家居用品(包括床、椅子、电视等)的数据集——非常适合智能家居自动化、机器人技术、增强现实和房间布局分析等应用。
- KITTI:一个包含带有立体声、LiDAR 和 GPS/IMU 数据的现实世界驾驶场景的数据集,此处用于二维目标检测任务,例如在城市、乡村和高速公路环境中识别汽车、行人和骑自行车的人。
- LVIS:一个具有 1203 个对象类别的大规模对象检测、分割和图像描述数据集。
- Medical-pills:一个包含药丸图像的数据集,已针对制药质量保证、药丸分拣和法规合规等应用进行标注。
- Objects365:一个高质量、大规模的目标检测数据集,拥有 365 个对象类别和超过 60 万张带标注的图像。
- OpenImagesV7:Google 推出的综合数据集,包含 170 万张训练图像和 4.2 万张验证图像。
- Roboflow 100:一个多样化的目标检测基准,包含跨越七个图像域的 100 个数据集,用于全面的模型评估。
- Signature:一个包含带有标注签名的各种文档图像的数据集,支持文档验证和欺诈检测研究。
- SKU-110K:一个在零售环境中提供密集对象检测的数据集,包含超过 1.1 万张图像和 170 万个bounding boxes。
- TT100K:探索清华-腾讯 100K (TT100K) 交通标志数据集,其中包含跨越 221 个标志类别的 16,817 张街景图像,用于强大的检测和分类。
- VisDrone:一个包含来自无人机拍摄图像的目标检测和多目标跟踪数据的数据集,拥有超过 1 万张图像和视频序列。
- VOC:用于目标检测和分割的 Pascal Visual Object Classes (VOC) 数据集,包含 20 个对象类别和超过 1.1 万张图像。
- xView:一个用于高空影像目标检测的数据集,包含 60 个对象类别和超过 100 万个标注对象。
添加你自己的数据集#
如果你有自己的数据集并希望将其用于 Ultralytics YOLO 格式的检测模型训练,请确保它遵循上述“Ultralytics YOLO 格式”中指定的格式。将你的标注转换为所需的格式,并在 YAML 配置文件中指定路径、类数量和类名。
移植或转换标签格式#
COCO 数据集格式转换为 YOLO 格式#
你可以使用以下代码片段轻松地将流行的 COCO dataset 格式的标签转换为 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 models 兼容。
请记得仔细检查你想要使用的数据集是否与你的模型兼容,并遵循必要的格式约定。正确格式化的数据集对于训练成功的目标检测模型至关重要。
下一步#
在格式化数据集后,start training your model。不确定从哪个预训练模型开始?在 YOLO26 model family 中比较选项。
常见问题解答#
什么是 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 文件中,每张图像一个文件,格式为带有归一化坐标的 class x_center y_center width height。有关详细指南,请参阅 COCO8 dataset example。
如何将 COCO 数据集转换为 YOLO 格式?#
你可以使用 Ultralytics conversion tools 将 COCO 数据集转换为 YOLO 格式。以下是一个快捷方法:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/")此代码会将你的 COCO 标注转换为 YOLO 格式,从而能够与 Ultralytics YOLO 模型无缝集成。有关更多详细信息,请访问Port or Convert Label Formats部分。
Ultralytics YOLO 支持哪些用于目标检测的数据集?#
Ultralytics YOLO 支持多种数据集,包括:
每个数据集页面都提供针对高效 YOLO26 训练量身定制的结构和用法详细信息。在Supported Datasets部分探索完整列表。
如何开始使用我的数据集训练 YOLO26 模型?#
要开始训练 YOLO26 模型,请确保你的数据集格式正确,并且在 YAML 文件中定义了路径。使用以下脚本开始训练:
from ultralytics import YOLO
model = YOLO("yolo26n.pt") # Load a pretrained model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)有关利用不同模式(包括 CLI 命令)的更多详细信息,请参阅Usage部分。
在哪里可以找到使用 Ultralytics YOLO 进行目标检测的实践示例?#
Ultralytics 提供了大量示例和实用指南,用于在各种应用中使用 YOLO26。有关全面的概述,请访问 Ultralytics Blog,在那里你可以找到展示使用 YOLO26 进行目标检测、分割等的案例研究、详细教程和社区故事。有关特定示例,请查看文档中的 Usage 部分。