在进行对象检测模型的训练之前,需要准备一个全面的、与模型兼容的数据集。本指南将介绍Ultralytics YOLO模型支持的数据集格式,包括它们的结构、如何使用以及如何在不同格式之间进行转换。
Ultralytics YOLO格式是一种数据集配置格式,它允许定义数据集的根目录,以及相对于根目录的图像训练、验证和测试目录的路径。此外,还包括一个类别名称的字典。例如,一个典型的YAML配置文件可能如下所示:
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
该格式的标签需要以每张图像一个YOLO格式的.txt文件导出。如果图像中没有对象,则不需要.txt文件。每个.txt文件应该按照以下格式格式化,每行代表一个对象:
class x_center y_center width height # 类别中心坐标宽度高度
坐标值需要是归一化的(0到1之间)。如果框是以像素为单位,需要将x_center和width除以图像的宽度,将y_center和height除以图像的高度。类别编号需要从零开始索引。
例如,如果使用Ultralytics YOLO格式,需要按照COCO8数据集示例中的方式组织训练和验证图像及其标签。
以下是如何使用这些格式来训练模型的示例。首先,需要加载一个预训练的模型,然后使用数据集进行训练。在Python中,可以使用以下代码来实现:
from ultralytics import YOLO
# 加载模型
model = YOLO("yolo11n.pt")
# 使用预训练模型进行训练(推荐)
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
在命令行界面(CLI)中,也可以使用类似的命令来开始训练:
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640
Ultralytics YOLO支持多种数据集,以下是一些支持的数据集及其简要描述:
- Argoverse:包含来自城市环境的3D跟踪和运动预测数据的数据集,具有丰富的注释。
- COCO:Common Objects in Context(COCO)是一个大规模的数据集,涵盖对象检测、分割和字幕,包括80个对象类别。
- LVIS:一个大规模的数据集,用于对象检测、分割和字幕,包括1203个对象类别。
- COCO8:COCO训练和验证的前4张图像的较小子集,适合快速测试。
- COCO128:COCO训练和验证的前128张图像的较小子集,适合测试。
- Global Wheat 2020:包含2020年全球小麦挑战的小麦穗图像的数据集。
- Objects365:一个大规模的高质量对象检测数据集,包含365个对象类别和超过600K张注释图像。
- OpenImagesV7:Google的完整数据集,包含170万张训练图像和42000张验证图像。
- SKU-110K:包含零售环境中密集对象检测的数据集,超过11000张图像和170万个边界框。
- VisDrone:包含来自无人机捕获的图像的多对象检测和跟踪数据的数据集,超过10000张图像和视频序列。
- VOC:Pascal Visual Object Classes(VOC)数据集,用于对象检测和分割,包含20个对象类别和超过11000张图像。
- xView:包含航空图像中的对象检测数据集,60个对象类别和超过一百万注释对象。
- Roboflow 100:一个多样化的对象检测基准测试,涵盖七个成像领域的100个数据集,用于全面评估模型。
- 脑部肿瘤:一个用于检测脑部肿瘤的数据集,包括MRI或CT图像,详细说明肿瘤的存在、位置和特征。
- 非洲野生动物:包含非洲野生动物图像的数据集,特别是水牛、大象、犀牛和斑马。
- 签名:包含带有注释签名的各种文档图像的数据集,支持文档验证研究和欺诈检测。
如果有自己的数据集并希望使用它来训练对象检测模型,确保它遵循上述“Ultralytics YOLO格式”中指定的格式。将注释转换为所需的格式,并在YAML配置文件中指定路径、类别数量和类别名称。
如果需要将流行的COCO数据集格式转换为YOLO格式,可以使用以下Python代码片段:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/")
这个转换工具可以用于将COCO数据集或任何其他COCO格式的数据集转换为Ultralytics YOLO格式。
请确保想要使用的数据集与模型兼容,并遵循必要的格式约定。正确格式化的数据集对于训练高性能的对象检测模型至关重要。
有关Ultralytics YOLO数据集格式的常见问题解答(FAQ):
Q: Ultralytics YOLO数据集格式是什么,如何构建?
A: 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数据集示例。
Q: 如何将COCO数据集转换为YOLO格式?
A: 可以使用Ultralytics提供的转换工具将COCO数据集转换为YOLO格式。以下是一个快速方法:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/")
这段代码将COCO注释转换为YOLO格式,允许与Ultralytics YOLO模型无缝集成。有关更多详细信息,请访问“数据集转换”部分。
Q: Ultralytics YOLO支持哪些数据集用于对象检测?
A:Ultralytics YOLO支持多种数据集,包括Argoverse、COCO、LVIS、COCO8、Global Wheat 2020、Objects365、OpenImagesV7等。每个数据集页面都提供了针对高效YOLO11训练的结构和使用详细信息。在“支持的数据集”部分探索完整列表。
Q: 如何使用数据集开始训练YOLO11模型?
A: 要开始训练YOLO11模型,请确保数据集格式正确,并且在YAML文件中定义了路径。使用以下脚本来开始训练:
from ultralytics import YOLO
model = YOLO("yolo11n.pt") # 加载预训练模型
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)
在CLI中,也可以使用类似的命令来开始训练:
yolo detect train data=path/to/your_dataset.yaml model=yolo11n.pt epochs=100 imgsz=640
有关使用不同模式的更多详细信息,请参阅文档中的“使用”部分。
Q: 在哪里可以找到使用Ultralytics YOLO进行对象检测的实用示例?