Ultralytics YOLO27:
Get Started

旋转框(OBB)数据集概览#

使用旋转框(OBB)训练精准的目标检测模型,需要全面的数据集。本指南介绍了与 Ultralytics YOLO 模型兼容的各种 OBB 数据集格式,并说明其结构、用途和格式转换方法。

支持的 OBB 数据集格式#

YOLO OBB 格式#

YOLO OBB 格式使用四个角点坐标来指定边界框,坐标归一化到 0 到 1 之间。其格式如下:

class_index x1 y1 x2 y2 x3 y3 x4 y4

在内部,YOLO 使用 xywhr 格式处理损失和输出,该格式表示边界框的中心点 (xy)、宽度、高度和旋转角度。

Oriented bounding box annotation format examples

上述图像对应的 *.txt 标签文件示例中,包含一个类别为 0 的 OBB 格式对象,内容可能如下:

0 0.780811 0.743961 0.782371 0.74686 0.777691 0.752174 0.776131 0.749758

数据集 YAML 格式#

Ultralytics 框架使用 YAML 文件格式定义用于训练 OBB 模型的数据集和模型配置。下面是定义 OBB 数据集时使用的 YAML 格式示例:

ultralytics/cfg/datasets/dota8.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# DOTA8 dataset (8 images from the DOTAv1 split) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/obb/dota8
# Example usage: yolo train model=yolov8n-obb.pt data=dota8.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── dota8 ← downloads here (1 MB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: dota8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images

# Classes for DOTA 1.0
names:
  0: plane
  1: ship
  2: storage tank
  3: baseball diamond
  4: tennis court
  5: basketball court
  6: ground track field
  7: harbor
  8: bridge
  9: large vehicle
  10: small vehicle
  11: helicopter
  12: roundabout
  13: soccer ball field
  14: swimming pool

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/dota8.zip

train、val 和 test 均可接受目录、目录列表,或每行列出一个图像路径的 *.txt 文件(以 ./ 开头的路径相对于 *.txt 文件解析)。*.txt 文件适用于从目录中选取部分数据进行训练、跳过未标注图像,或将多个来源的图像合并到一个数据集划分中。

将图像路径写入 `*.txt` 文件
path: datasets/dota8 # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
  0: plane

用法#

若要使用这些 OBB 格式训练模型:

示例
from ultralytics import YOLO

# 加载预训练的 YOLO26n-OBB 模型
model = YOLO("yolo26n-obb.pt")

# 在 DOTAv1 数据集上训练模型
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)

支持的数据集#

目前支持以下带旋转框的数据集。这些数据集中的大多数也托管在 Ultralytics Platform 上,你可以浏览图像和标注、查看数据集统计信息,并克隆数据集以进行云端训练。

  • DOTA-v1:DOTA 数据集的第一个版本,提供了全面的航拍图像及其旋转框标注,用于目标检测。
  • DOTA-v1.5:DOTA 数据集的中间版本,与 DOTA-v1 相比提供了更多标注和改进,以增强目标检测任务的效果。
  • DOTA-v2:DOTA(大规模航拍图像目标检测数据集)第 2 版,侧重于从航空视角进行检测,包含 1.7 百万个实例和 11,268 张图像,并提供旋转框标注。
  • DOTA8:完整 DOTA 数据集的一个小型子集,包含 8 张图像,适用于测试工作流,以及在 ultralytics 仓库中检查 OBB 训练的持续集成(CI)。
  • DOTA8 Multispectral:一个包含 8 张图像、10 个通道的 TIFF 子集,用于在 Ultralytics Platform 上测试多光谱 OBB 训练。
  • DOTA128:DOTA 数据集的一个 128 张图像子集,所有图像都位于 train 文件夹中(同时用于训练和验证),在大小和多样性之间取得了良好平衡,适合测试 OBB 模型。

纳入你自己的 OBB 数据集#

如果你想加入自己的旋转框数据集,请确保其兼容上文提到的“YOLO OBB 格式”。将标注转换为所需格式,并在相应的 YAML 配置文件中详细列出路径、类别和类别名称。

转换标签格式#

将 DOTA 数据集格式转换为 YOLO OBB 格式#

可以使用以下脚本,将标签从 DOTA 数据集格式转换为 YOLO OBB 格式:

示例
from ultralytics.data.converter import convert_dota_to_yolo_obb

convert_dota_to_yolo_obb("path/to/DOTA")

对于采用 DOTA 格式的数据集,此转换机制至关重要,可确保数据集符合 Ultralytics YOLO OBB 格式。

务必验证数据集与你的模型兼容,并遵循必要的格式规范。合理构建的数据集对于训练高效的旋转框目标检测模型至关重要。

常见问题#

  • 旋转框(OBB)是一种边界框标注类型,框可以旋转,从而比仅与坐标轴对齐的边界框更贴合检测目标。在航拍或卫星图像中,对象可能不会与图像坐标轴对齐,因此这种方式尤其有用。在 Ultralytics YOLO 模型中,OBB 以 YOLO OBB 格式通过四个角点表示。这样可以更准确地检测对象,因为边界框可以旋转,以便更好地贴合对象。

  • 你可以使用 Ultralytics 的 convert_dota_to_yolo_obb 函数,将 DOTA 数据集标签转换为 YOLO OBB 格式。此转换可确保与 Ultralytics YOLO 模型兼容,让你能够利用 OBB 功能提升目标检测效果。下面是一个快速示例:

    from ultralytics.data.converter import convert_dota_to_yolo_obb
    
    convert_dota_to_yolo_obb("path/to/DOTA")

    此脚本会将你的 DOTA 标注重新整理为兼容 YOLO 的格式。

  • 使用 OBB 训练 YOLO26 模型,需要先确保你的数据集采用 YOLO OBB 格式,然后使用 Ultralytics API 训练模型。下面是 Python 和 CLI 示例:

    示例
    from ultralytics import YOLO
    
    # 从头创建一个新的 YOLO26n-OBB 模型
    model = YOLO("yolo26n-obb.yaml")
    
    # 使用自定义数据集训练模型
    results = model.train(data="your_dataset.yaml", epochs=100, imgsz=640)

    这样可以确保模型利用详细的 OBB 标注来提升检测准确率。

  • 目前,Ultralytics 支持以下用于 OBB 训练的数据集:

    • DOTA-v1:DOTA 数据集的第一个版本,提供了全面的航拍图像及其旋转框标注,用于目标检测。
    • DOTA-v1.5:DOTA 数据集的中间版本,与 DOTA-v1 相比提供了更多标注和改进,以增强目标检测任务的效果。
    • DOTA-v2:该数据集包含 11268 张图像和 170 万个有向边界框实例,主要用于航空影像目标检测。
    • DOTA8:DOTA 数据集的一个较小子集,仅含 8 张图像,用于测试和持续集成(CI)检查。
    • DOTA128:一个包含 128 张图像的子集,所有图像均位于 train 文件夹(train 和 val 共用),比 DOTA8 更多样,同时仍便于开展初期 OBB 模型开发和实验。

    这些数据集专为 OBB 能发挥显著优势的场景设计,例如航空影像和卫星图像分析。

  • 可以,你可以使用自己的有向边界框数据集训练 YOLO26。请确保将数据集标注转换为 YOLO OBB 格式,也就是用边界框的四个角点来定义边界框。然后,你可以创建一个 YAML 配置文件,指定数据集路径、类别和其他必要信息。有关创建和配置数据集的更多信息,请参阅支持的数据集部分。

评论