在进行对象检测模型的训练之前,需要准备一个全面的数据集。本文将介绍与Ultralytics YOLO模型兼容的数据集格式,并提供对其结构、使用方式以及不同格式间转换的深入理解。
Ultralytics YOLO格式是一种数据集表示方法,它包含了数据集根目录、训练/验证/测试图像目录的相对路径或图像路径列表,以及类别名称字典。例如,一个典型的YOLO格式配置如下所示:
path: ../datasets/coco8 # 数据集根目录
train: images/train # 训练图像(相对于'path')
val: images/val # 验证图像(相对于'path')
test: # 可选的测试图像
# 类别(80个COCO类别)
names:
0: person
1: bicycle
2: car
...
77: teddy bear
78: hair drier
79: toothbrush
在这种格式中,每个图像对应一个标签文件,如果图像中没有对象,则不需要任何标签文件。每个标签文件应按照每行一个对象的格式进行格式化,格式如下:
class x_center y_center width height
这里的框坐标应该是归一化的xywh格式(从0到1)。如果框坐标是以像素为单位的,则x_center和width应除以图像宽度,y_center和height应除以图像高度。类别编号应从0开始索引。
例如,对于包含2个人的图像(类别0)和1辆汽车(类别27),对应的标签文件如下:
0 0.34 0.44 0.22 0.33
0 0.5 0.56 0.24 0.45
27 0.6 0.7 0.28 0.37
使用Ultralytics YOLO格式时,需要按照COCO8数据集示例中所示的方式组织训练和验证图像及其标签。
以下是如何使用这些格式来训练模型的示例:
from ultralytics import YOLO
# 加载模型
model = YOLO("yolo11n.pt")
# 训练模型
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# 从预训练的*.pt模型开始训练
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640
以下是支持的数据集列表及其简要说明:
- Argoverse:包含3B跟踪和运动预测数据的城市环境数据集,具有丰富的注释。
- COCO:Common Objects in Context (COCO),是一个大规模的对象检测、分割和字幕数据集,包含80个对象类别。
- LVIS:一个大规模的对象检测、分割和字幕数据集,包含1203个对象类别。
- COCO8:COCO训练和COCO验证的前4个图像的更小子集,适合快速测试。
- COCO128:COCO训练和COCO验证的前128个图像的更小子集,适合测试。
- Global Wheat 2020:包含小麦头部图像的数据集,用于Global Wheat Challenge 2020。
- Objects365:一个高质量的大规模数据集,包含365个对象类别和600K以上的标注图像,用于对象检测。
- OpenImagesV7:由Google提供的全面数据集,包含170万训练图像和4.2万验证图像。
- SKU-110K:包含超过11K图像和170万边界框的数据集,具有零售环境中密集的对象检测功能。
- VisDrone:包含超过10K图像和视频序列的数据集,包含无人机捕获的图像中的对象检测和多对象跟踪数据。
- VOC:Pascal Visual Object Classes (VOC)数据集,包含20个对象类别和超过11K图像,用于对象检测和分割。
- xView:包含60个对象类别和超过100万个标注对象的图像的数据集,用于头顶图像中的对象检测。
- Roboflow 100:包含100个数据集的广泛对象检测标准,涵盖七个图像领域,用于全面模型评估。
- Brain Tumor:包含MRI或CT扫描图像的数据集,用于检测脑肿瘤,包括肿瘤存在、位置和特征的详细信息。
- African Wildlife:包含非洲野生动物图像的数据集,包括水牛、长颈鹿、狮子和斑马等。
- Signature:包含各种文档的图像的数据集,支持文档验证和欺诈检测研究,包含标注的签名。
如果有自己的数据集,并希望使用它来训练Ultralytics YOLO格式的检测模型,请确保它符合上述“Ultralytics YOLO格式”下指定的格式。将注释转换为所需的格式,并在YAML配置文件中指定路径、类别数量和类别名称。
可以使用以下Python代码片段轻松地将标签从流行的COCO数据集格式转换为YOLO格式:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/")
此转换工具可用于将COCO数据集或任何COCO格式的数据集转换为Ultralytics YOLO格式。
请务必再次检查要使用的数据集是否与模型兼容,并遵守所需的格式规则。正确格式化的数据集对于成功训练对象检测模型至关重要。