5.5 对象检测数据集概述
训练一个健壮且精确的对象检测模型需要一个全面的数据集。本指南介绍了与 Ultralytics YOLO 模型兼容的各种数据集格式,并提供了关于它们的结构、使用方法以及如何在不同格式之间进行转换的见解。
支持的数据集格式
Ultralytics YOLO 格式
Ultralytics YOLO 格式是一种数据集配置格式,允许您定义数据集根目录、训练/验证/测试图像目录的相对路径或包含图像路径的 *.txt 文件,以及一个类名字典。以下是一个示例:
# 训练/验证/测试集路径可以是:1)目录:path/to/imgs,2)文件:path/to/imgs.txt,或 3)列表:[path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco8 # 数据集根目录
train: images/train # 训练图像(相对于 'path' 的路径)共 4 张图像
val: images/val # 验证图像(相对于 'path' 的路径)共 4 张图像
test: # 测试图像(可选)
# 类别(80 个 COCO 类别)
names:
0: person
1: bicycle
2: car
# ...
77: teddy bear
78: hair drier
79: toothbrush
对于这种格式,标签应导出为 YOLO 格式,每个图像对应一个 *.txt 文件。如果图像中没有对象,则不需要 .txt 文件。.txt 文件应按每个对象一行的格式,内容为 class x_center y_center width height
。框坐标必须为归一化的 xywh 格式(0 到 1 之间)。如果您的框坐标是像素,则应将 x_center
和 width
除以图像宽度,y_center
和 height
除以图像高度。类编号应为从 0 开始的索引。
使用示例
以下是如何使用这些格式来训练模型的示例:
from ultralytics import YOLO
# 加载一个模型
model = YOLO("yolo11n.pt") # 加载一个预训练模型(推荐用于训练)
# 训练模型
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
支持的数据集
以下是 Ultralytics YOLO 支持的数据集及其简要描述:
-
Argoverse:包含城市环境中 3D 跟踪和运动预测数据的数据集,具有丰富的注释。
-
COCO:常见物体上下文(COCO)是一个大型对象检测、分割和标注数据集,包含 80 个对象类别。
-
LVIS:一个大型对象检测、分割和标注数据集,包含 1203 个对象类别。
-
COCO8:COCO 训练集和验证集中的前 4 张图片的小型子集,适合快速测试。
-
COCO128:COCO 训练集和验证集中的前 128 张图片的小型子集,适合测试。
-
Global Wheat 2020:用于全球小麦挑战赛 2020 的小麦头部图像数据集。
-
Objects365:一个高质量的大规模对象检测数据集,包含 365 个对象类别和超过 60 万张标注图片。
-
OpenImagesV7:Google 提供的一个综合数据集,包含 170 万张训练图片和 4.2 万张验证图片。
-
SKU-110K:一个零售环境中密集对象检测的数据集,包含超过 1.1 万张图片和 170 万个边界框。
-
VisDrone:一个包含无人机拍摄的图像和视频序列的对象检测和多目标跟踪数据集,包含超过 1 万张图片。
-
VOC:用于对象检测和分割的 Pascal 视觉对象类(VOC)数据集,包含 20 个对象类别和超过 1.1 万张图片。
-
xView:一个用于高空图像对象检测的数据集,包含 60 个对象类别和超过 100 万个标注对象。
-
Roboflow 100:一个包含 100 个数据集的多样化对象检测基准测试,涵盖七个图像领域,用于综合模型评估。
-
Brain-tumor:用于检测脑肿瘤的数据集,包括 MRI 或 CT 扫描图像,详细标注了肿瘤的存在、位置和特征。
-
African-wildlife:一个包含非洲野生动物图像的数据集,包括水牛、大象、犀牛和斑马。
-
Signature:一个包含各种文档中签名的图像数据集,用于文档验证和欺诈检测研究。
添加您自己的数据集
如果您有自己的数据集,并希望使用 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 格式。
请务必仔细检查您想要使用的数据集是否与您的模型兼容,并遵循必要的格式规范。正确格式化的数据集对于训练成功的对象检测模型至关重要。
常见问题解答
1. 什么是 Ultralytics YOLO 数据集格式,如何构建它?
Ultralytics YOLO 格式是用于在训练项目中定义数据集的结构化配置。它涉及设置训练、验证和测试图像以及相应标签的路径。例如:
path: ../datasets/coco8 # 数据集根目录
train: images/train # 训练图像(相对于 'path' 的路径)
val: images/val # 验证图像(相对于 'path' 的路径)
test: # 可选的测试图像
names:
0: person
1: bicycle
2: car
# ...
标签保存在 *.txt 文件中,每个图像对应一个文件,格式为 class x_center y_center width height
,并使用归一化坐标。有关详细指南,请参阅 COCO8 数据集示例。
2. 如何将 COCO 数据集转换为 YOLO 格式?
您可以使用 Ultralytics 的转换工具将 COCO 数据集转换为 YOLO 格式。方法如下:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/")
此代码会将您的 COCO 注释转换为 YOLO 格式,使其能够与 Ultralytics YOLO 模型无缝集成。有关更多详细信息,请访问转换标签格式部分。
3. Ultralytics YOLO 支持哪些对象检测数据集?
Ultralytics YOLO 支持多种数据集,包括:
-
Argoverse
-
COCO
-
LVIS
-
COCO8
-
Global Wheat 2020
-
Objects365
-
OpenImagesV7
每个数据集页面提供了针对 YOLO11 训练的结构和用法的详细信息。请在 "支持的数据集" 部分中浏览完整列表。
4. 如何使用我的数据集开始训练 YOLO11 模型?
要开始训练 YOLO11 模型,请确保您的数据集格式正确,路径已在 YAML 文件中定义。使用以下脚本开始训练:
from ultralytics import YOLO
model = YOLO("yolo11n.pt") # 加载一个预训练模型
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)
有关如何使用不同模式(包括 CLI 命令)的更多详细信息,请参阅使用部分。
5. 在哪里可以找到使用 Ultralytics YOLO 进行对象检测的实际示例?
Ultralytics 提供了许多使用 YOLO11 在各种应用中进行对象检测的示例和实际指南。要获得全面的概述,请访问 Ultralytics 博客,在那里您可以找到案例研究、详细教程和展示 YOLO11 用于对象检测、分割等的社区故事。具体示例请参见文档中的使用部分。