在进行物体检测模型训练之前,了解并掌握数据集的格式是非常重要的。Ultralytics YOLO 模型支持多种数据集格式,这些格式不仅包括了数据集的组织方式,还包括了如何定义类别、图像路径以及标签信息。本文将详细介绍这些数据集格式,以及如何将它们用于训练模型。
首先,Ultralytics YOLO 格式是一种数据集配置格式,它允许用户定义数据集的根目录、训练/验证/测试图像目录的相对路径或者包含图像路径的 *.txt 文件,以及类名字典。例如,一个典型的配置文件可能包含如下内容:
path: ../datasets/coco8 # 数据集根目录
train: images/train # 训练图像(相对于 'path')
val: images/val # 验证图像(相对于 'path')
test: # 可选的测试图像
# 类别(例如 COCO 数据集中的 80 个类别)
names:
0: person
1: bicycle
2: car
# ...
在这种格式中,标签应该导出为 YOLO 格式,并存储在 *.txt 文件中。如果图像中没有对象,则不需要 *.txt 文件。每个 *.txt 文件的格式应该包含每个对象的类别编号、中心点的 x 和 y 坐标、宽度和高度,格式如下:
# class x_center y_center width height
0 0.5 0.5 0.2 0.2
27 0.1 0.1 0.3 0.3
这里的坐标必须使用归一化 xywh 格式(从 0 到 1)。如果方框坐标是以像素为单位的,那么需要将 x_center 和 width 除以图像宽度,将 y_center 和 height 除以图像高度。类号应该是零索引的(从 0 开始)。
使用Ultralytics YOLO格式时,需要按照 COCO8 数据集示例中的方法组织训练和验证图像及标签。此外,还可以使用 Python CLI 来加载模型并开始训练,例如:
from ultralytics import YOLO
model = YOLO("yolo11n.pt") # 加载预训练模型(推荐用于训练)
results = model.train(data="coco8.yaml", epochs=100, imgsz=640) # 开始训练
除了 COCO 数据集,Ultralytics YOLO 还支持其他多种数据集,例如 Argoverse、LVIS、COCO8、全球小麦 2020、Object365、OpenImagesV7、SKU-110K、VisDrone、VOC 和 xView 等。每个数据集都有详细的说明,以确保与 YOLO 模型的高效训练。
如果有自己的数据集,并希望将其用于训练检测模型,请确保数据集遵循Ultralytics YOLO格式中指定的格式。需要将注释转换为所需格式,并在 YAML 配置文件中指定路径、类数和类名。
此外,还可以使用 Ultralytics 提供的转换工具将 COCO数据集格式转换为 YOLO 格式,例如:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/")
这个转换工具可以将 COCO 数据集或任何 COCO 格式的数据集转换为Ultralytics YOLO格式,从而实现与 Ultralytics YOLO 模型的无缝集成。
在开始使用自己的数据集训练 YOLO 模型之前,请确保数据集格式正确,并且路径在 YAML 文件中定义。使用以下脚本开始训练:
from ultralytics import YOLO
model = YOLO("yolo11n.pt") # 加载预训练模型
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640) # 开始训练