对象检测数据集概述
训练一个强大而准确的 对象检测 模型需要一个全面的数据集。本指南介绍了与 Ultralytics YOLO 模型兼容的各种数据集格式,并提供了关于它们的结构、用法以及如何在不同格式之间转换的见解。
支持的数据集格式
Ultralytics YOLO 格式
Ultralytics YOLO 格式是一种数据集配置格式,允许您定义数据集根目录、到训练/验证/测试图像目录的相对路径或 *.txt
包含图像路径的文件以及类名字典。 这是一个例子:
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 格式,每个图像一个 *.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 数据集示例所示,组织您的训练和验证图像及标签。
使用示例
以下是如何使用 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(换行符分隔的 JSON)格式为 Ultralytics YOLO11 模型提供了一种定义数据集的替代方法。此格式将数据集元数据和注释存储在单个文件中,其中每行包含一个单独的 JSON 对象。
NDJSON 数据集文件包含:
- 数据集记录(第一行):包含数据集元数据,包括任务类型、类名和一般信息
- 图像记录(后续行):包含单个图像数据,包括尺寸、注释和文件路径
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, ...], ...]}
- 旋转框检测:
"annotations": {"obb": [[class_id, x_center, y_center, width, height, angle], ...]}
- 分类:
"annotations": {"classification": [class_id]}
使用示例
要将 NDJSON 数据集与 YOLO11 结合使用,只需指定 .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 格式的优势
- 单个文件:所有数据集信息都包含在一个文件中
- 流式传输:可以逐行处理大型数据集,而无需将所有内容加载到内存中
- 云集成:支持用于云端训练的远程图像 URL
- 可扩展:易于添加自定义元数据字段
- 版本控制:单个文件格式非常适合 git 和版本控制系统
支持的数据集
以下是支持的数据集列表以及每个数据集的简要说明:
- Argoverse:一个包含来自城市环境的 3D 跟踪和运动预测数据的数据集,具有丰富的注释。
- COCO:Common Objects in Context (COCO) 是一个大规模的目标检测、分割和字幕数据集,包含 80 个目标类别。
- LVIS:一个大规模的目标检测、分割和字幕数据集,包含 1203 个对象类别。
- COCO8:COCO train 和 COCO val 中前 4 张图像的一个较小子集,适合快速测试。
- COCO8-Grayscale:COCO8 的灰度版本,通过将 RGB 转换为灰度创建,适用于单通道模型评估。
- COCO8-Multispectral:COCO8 的 10 通道多光谱版本,通过插值 RGB 波长创建,适用于光谱感知模型评估。
- COCO128:COCO train 和 COCO val 中前 128 张图像的一个较小子集,适合测试。
- Global Wheat 2020:一个包含小麦穗图像的数据集,用于 2020 年全球小麦挑战赛。
- Objects365:一个高质量、大规模的目标检测数据集,包含 365 个对象类别和超过 60 万张带注释的图像。
- OpenImagesV7:Google 提供的一个综合数据集,包含 170 万张训练图像和 4.2 万张验证图像。
- SKU-110K:一个包含零售环境中密集物体检测的数据集,拥有超过 1.1 万张图像和 170 万个边界框。
- HomeObjects-3K 新 🚀:一个室内家居用品数据集,包括床、椅子、电视等,非常适合智能家居自动化、机器人技术、增强现实和房间布局分析等应用。
- VisDrone:一个包含无人机拍摄图像的目标检测和多目标跟踪数据集,拥有超过1万张图像和视频序列。
- VOC:Pascal 视觉对象分类 (VOC) 数据集,用于目标检测和分割,包含 20 个对象类别和超过 11K 张图像。
- xView:一个用于 overhead 图像中目标检测的数据集,包含 60 个对象类别和超过 100 万个带标注的对象。
- Roboflow 100:一个多样化的目标检测基准,包含 100 个数据集,涵盖七个图像领域,用于全面的模型评估。
- Brain-tumor:一个用于检测脑肿瘤的数据集,包含 MRI 或 CT 扫描图像,其中包含有关肿瘤存在、位置和特征的详细信息。
- African-wildlife:一个包含非洲野生动物图像的数据集,包括水牛、大象、犀牛和斑马。
- Signature:一个包含各种带有标注签名的文档图像的数据集,支持文档验证和欺诈检测研究。
- 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
文件中,每个图像对应一个文件,格式为 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 命令)的更多详细信息,请参阅用法部分。
在哪里可以找到使用 Ultralytics YOLO 进行对象检测的实际例子?
Ultralytics 提供了大量示例和实用指南,指导如何在各种应用中使用 YOLO11。如需全面了解,请访问 Ultralytics 博客,您可以在其中找到案例研究、详细教程和社区故事,展示使用 YOLO11 进行目标检测、分割等。有关具体示例,请查看文档中的用法部分。