在进行对象检测模型的训练时,一个全面的数据集是必不可少的。本指南将介绍与Ultralytics YOLO模型兼容的各种数据集格式,并深入探讨它们的结构、使用方式以及如何在不同格式之间进行转换。
支持的数据集格式
Ultralytics YOLO模型支持多种数据集格式,其中包括但不限于:
# 数据集路径配置示例
path: ../datasets/coco8 # 数据集根目录
train: images/train # 训练图片(相对于'path')
val: images/val # 验证图片(相对于'path')
test: # 测试图片(可选)
names: # 类别名称
0: person
1: bicycle
2: car
# ...
对于Ultralytics YOLO格式,标签应该导出为YOLO格式,每个图片对应一个*.txt文件。如果没有图像中的对象,则不需要*.txt文件。*.txt文件应该按照每行一个对象的格式进行格式化。
标签格式
标签文件应包含每个对象的类别、中心点的x和y坐标、宽度和高度,格式如下:
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)
# 从预训练的*.pt模型开始训练
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640
以上示例展示了如何使用Python CLI来加载预训练模型并开始训练。
支持的数据集
以下是Ultralytics YOLO支持的数据集列表及其简要描述:
- Argoverse:城市环境中的3D跟踪和运动预测数据集,包含丰富的注释。
- COCO:Common Objects in Context (COCO)是一个大规模的对象检测、分割和标注数据集,包含80个对象类别。
- LVIS:一个大规模的对象检测、分割和标注数据集,包含1203个对象类别。
- COCO8:COCO训练和验证集中前4张图片的较小子集,适合快速测试。
- COCO128:COCO训练和验证集中前128张图片的较小子集,适合测试。
- Global Wheat 2020:用于Global Wheat Challenge 2020的小麦头图像数据集。
- Objects365:一个高质量的大规模对象检测数据集,包含365个对象类别和超过60万个标注图像。
- OpenImagesV7:Google提供的全面数据集,包含170万个训练图像和4.2万个验证图像。
- SKU-110K:零售环境中的密集对象检测数据集,包含超过1.1万张图像和170万个边界框。
- VisDrone:由无人机拍摄的图像中的对象检测和多对象跟踪数据集,包含超过1万张图像和视频序列。
- VOC:Pascal Visual Object Classes (VOC)数据集用于对象检测和分割,包含20个对象类别和超过1.1万张图像。
- xView:用于航拍图像中的对象检测数据集,包含60个对象类别和超过100万个标注对象。
- Roboflow 100:一个多样化的对象检测基准测试,包含来自七个图像领域的100个数据集,用于全面模型评估。
- Hirntumor:用于检测脑肿瘤的数据集,包含MRT或CT图像,详细描述肿瘤的存在、位置和特征。
- Afrikanische Wildtiere:包含非洲野生动物图像的数据集,如水牛、大象、犀牛和斑马。
- Unterschrift:包含不同文档图像和标注签名的数据集,支持文档鉴定和欺诈检测研究。
添加自己的数据集
如果有自己的数据集并希望使用它来训练Ultralytics YOLO格式的检测模型,请确保它符合上述“Ultralytics YOLO格式”中指定的格式。将注释转换为所需格式,并在YAML配置文件中指定路径、类别数量和类别名称。
标签格式迁移或转换
COCO数据集格式转换为YOLO格式:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/")
使用此转换工具,可以将COCO数据集或任何其他COCO格式的数据集转换为Ultralytics YOLO格式。
常见问题解答
什么是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数据集示例。
如何将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支持广泛的数据集,包括:
- Argoverse
- COCO
- LVIS
- COCO8
- Global Wheat 2020
- Objects365
- OpenImagesV7
每个数据集页面都提供了针对高效YOLO11训练的结构和使用详细信息。在“支持的数据集”部分探索完整列表。
如何使用数据集开始训练YOLO11模型?
要开始训练YOLO11模型,请确保数据集格式正确,并且在YAML文件中定义了路径。使用以下脚本来开始训练:
from ultralytics import YOLO
model = YOLO("yolo11n.pt") # 加载预训练模型
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)
# 从预训练的*.pt模型开始训练
yolo detect train data=path/to/your_dataset.yaml model=yolo11n.pt epochs=100 imgsz=640