原文链接:
https://docs.ultralytics.com/datasets/detect/
写在前面
训练一个鲁棒且准确的目标检测模型需要一个全面的数据集。本文介绍:与Ultralytics YOLO模型兼容的各种数据集格式,并深入解析了它们的结构、使用方法以及如何在不同的格式之间进行转换。
支持的数据集格式
Ultralytics YOLO格式
Ultralytics YOLO格式是一种数据集配置格式,允许您定义数据集根目录、训练/验证/测试图像目录的相对路径(或包含图像路径的*.txt文件)以及类别名称的字典。以下是一个示例:
# Ultralytics 🚀 AGPL-3.0许可证 - https://ultralytics.com/license# COCO8数据集(来自COCO train2017的前8张图像)由Ultralytics提供
# 文档:https://docs.ultralytics.com/datasets/detect/coco8/
# 示例用法:yolo train data=coco8.yaml
# 父目录
# ├── ultralytics
# └── datasets
# └── coco8 ← 下载至此(1 MB) # 训练/验证/测试集可以是:1) 目录:path/to/imgs,2) 文件:path/to/imgs.txt,或3) 列表:[path/to/imgs1, path/to/imgs2, ...]
path: coco8 # 数据集根目录
train: images/train # 训练图像(相对于'path')4张图像
val: images/val # 验证图像(相对于'path')4张图像
test: # 测试图像(可选) # 类别
names: 0: person 1: bicycle 2: car 3: motorcycle 4: airplane 5: bus 6: train 7: truck 8: boat 9: traffic light 10: fire hydrant 11: stop sign 12: parking meter 13: bench 14: bird 15: cat 16: dog 17: horse 18: sheep 19: cow 20: elephant 21: bear 22: zebra 23: giraffe 24: backpack 25: umbrella 26: handbag 27: tie 28: suitcase 29: frisbee 30: skis 31: snowboard 32: sports ball 33: kite 34: baseball bat 35: baseball glove 36: skateboard 37: surfboard 38: tennis racket 39: bottle 40: wine glass 41: cup 42: fork 43: knife 44: spoon 45: bowl 46: banana 47: apple 48: sandwich 49: orange 50: broccoli 51: carrot 52: hot dog 53: pizza 54: donut 55: cake 56: chair 57: couch 58: potted plant 59: bed 60: dining table 61: toilet 62: tv 63: laptop 64: mouse 65: remote 66: keyboard 67: cell phone 68: microwave 69: oven 70: toaster 71: sink 72: refrigerator 73: book 74: clock 75: vase 76: scissors 77: teddy bear 78: hair drier 79: toothbrush # 下载脚本/URL(可选)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip
此格式的标签应以YOLO格式导出,每张图像对应一个*.txt文件。如果图像中没有目标,则不需要*.txt文件。*.txt文件的格式应为每行一个目标,格式为class x_center y_center width height
。框坐标必须为归一化的xywh格式(0到1之间)。如果您的框坐标是像素值,应将x_center和宽度除以图像宽度,y_center和高度除以图像高度。类别编号应从0开始(即0为第一个类别)。
示例标注图像
与上图对应的标签文件包含2个人(类别0)和1个领带(类别27):
示例标签文件
0 0.5 0.5 0.1 0.2
0 0.7 0.7 0.1 0.2
27 0.3 0.3 0.05 0.1
使用Ultralytics YOLO格式时,请按照以下COCO8数据集的示例组织您的训练和验证图像及标签。
示例数据集目录结构
datasets/
└── coco8/ ├── images/ │ ├── train/ # 训练图像 │ └── val/ # 验证图像 └── labels/ ├── train/ # 训练标签 └── val/ # 验证标签
使用方法
以下是使用这些格式训练模型的示例:
from ultralytics import YOLO # 加载模型
model = YOLO("yolo11n.pt") # 加载预训练模型(推荐用于训练) # 训练模型
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
支持的数据集
以下是支持的数据集及其简要描述:
- Argoverse:包含来自城市环境的3D跟踪和运动预测数据,带有丰富的标注。
- COCO:Common Objects in Context (COCO)是一个大规模的目标检测、分割和字幕生成数据集,包含80个目标类别。
- LVIS:一个大规模的目标检测、分割和字幕生成数据集,包含1203个目标类别。
- COCO8:从COCO train和COCO val中提取的前4张图像的小型子集,适合快速测试。
- COCO8-Grayscale:通过将RGB转换为灰度创建的COCO8灰度版本,适用于单通道模型评估。
- COCO8-Multispectral:通过插值RGB波长创建的10通道多光谱版本,适用于光谱感知模型评估。
- COCO128:从COCO train和COCO val中提取的前128张图像的小型子集,适合测试。
- Global Wheat 2020:包含2020年全球小麦挑战赛的小麦穗图像的数据集。
- Objects365:一个高质量、大规模的目标检测数据集,包含365个目标类别和超过60万张标注图像。
- OpenImagesV7:谷歌提供的全面数据集,包含170万张训练图像和4.2万张验证图像。
- SKU-110K:一个零售环境中的密集目标检测数据集,包含超过1.1万张图像和170万个边界框。
- HomeObjects-3K New 🚀:包含室内家居物品(如床、椅子、电视等)的数据集,适用于智能家居自动化、机器人、增强现实和房间布局分析等应用。
- VisDrone:包含无人机捕获图像的目标检测和多目标跟踪数据,超过1万张图像和视频序列。
- VOC:Pascal Visual Object Classes (VOC)数据集,用于目标检测和分割,包含20个目标类别和超过1.1万张图像。
- xView:用于俯视图像中目标检测的数据集,包含60个目标类别和超过100万个标注目标。
- Roboflow 100:一个多样化的目标检测基准,包含100个数据集,涵盖7个图像领域,用于全面模型评估。
- Brain-tumor:用于检测脑肿瘤的数据集,包含MRI或CT扫描图像,标注了肿瘤的存在、位置和特征。
- African-wildlife:包含非洲野生动物(如水牛、大象、犀牛和斑马)图像的数据集。
- Signature:包含各种文档的签名标注图像,支持文档验证和欺诈检测研究。
- Medical-pills:包含医疗药丸图像的数据集,适用于药品质量保证、药丸分类和法规遵从等应用。
添加您自己的数据集
如果您有自己的数据集并希望用于训练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格式。该过程将基于JSON的COCO标注转换为更简单的基于文本的YOLO格式,使其与Ultralytics YOLO模型兼容。
请务必检查您要使用的数据集是否与您的模型兼容,并遵循必要的格式约定。正确格式化的数据集对于训练成功的目标检测模型至关重要。
常见问题
什么是Ultralytics YOLO数据集格式?如何构建它?
Ultralytics YOLO格式是一种用于定义训练项目中数据集的结构化配置。它涉及设置训练、验证和测试图像及其对应标签的路径。例如:
path: coco8 # 数据集根目录
train: images/train # 训练图像(相对于'path')
val: images/val # 验证图像(相对于'path')
test: # 测试图像(可选) # 类别
names: 0: person 1: bicycle ...
标签保存在*.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)
更多关于使用不同模式(包括CLI命令)的详细信息,请参考“使用方法”部分。
在哪里可以找到使用Ultralytics YOLO进行目标检测的实际示例?
Ultralytics提供了许多示例和实用指南,展示了YOLO11在多种应用中的使用。完整概述请访问Ultralytics博客,您可以找到目标检测、分割等的案例研究、详细教程和社区故事。具体示例请查看文档中的“使用方法”部分。