【YOLOv11-目标检测】目标检测数据格式(官方说明)

原文链接:
https://docs.ultralytics.com/datasets/detect/

写在前面

训练一个鲁棒且准确的目标检测模型需要一个全面的数据集。本文介绍:与Ultralytics YOLO模型兼容的各种数据集格式,并深入解析了它们的结构、使用方法以及如何在不同的格式之间进行转换。

支持的数据集格式

Ultralytics YOLO格式

Ultralytics YOLO格式是一种数据集配置格式,允许您定义数据集根目录、训练/验证/测试图像目录的相对路径(或包含图像路径的*.txt文件)以及类别名称的字典。以下是一个示例:

yaml 复制代码
# 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/    # 验证标签  

使用方法

以下是使用这些格式训练模型的示例:

python 复制代码
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格式:

python 复制代码
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格式是一种用于定义训练项目中数据集的结构化配置。它涉及设置训练、验证和测试图像及其对应标签的路径。例如:

yaml 复制代码
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格式。以下是一个快速方法:

python 复制代码
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文件中定义路径。使用以下脚本开始训练:

python 复制代码
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博客,您可以找到目标检测、分割等的案例研究、详细教程和社区故事。具体示例请查看文档中的"使用方法"部分。