YOLO Vision 2026:

旋转目标检测框 (OBB) 数据集概述#

使用旋转边界框(OBB)训练精确的 object detection 模型需要完整的数据集。本指南介绍了与 Ultralytics YOLO 模型兼容的各种 OBB 数据集格式,并深入探讨了它们的结构、应用以及格式转换的方法。

支持的 OBB 数据集格式#

YOLO OBB 格式#

YOLO OBB 格式通过其四个角点的坐标来定义边界框,坐标值在 0 到 1 之间进行归一化。其格式如下:

class_index x1 y1 x2 y2 x3 y3 x4 y4

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

Oriented bounding box annotation format examples

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

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

trainvaltest 中的每一个都可以接受一个目录、一个目录列表,或者一个每行列出一个图像路径的 *.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

# Create a new YOLO26n-OBB model from scratch
model = YOLO("yolo26n-obb.yaml")

# Train the model on the DOTAv1 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)

支持的数据集#

目前支持以下带旋转边界框的数据集:

  • DOTA-v1:DOTA 数据集的第一个版本,提供了一组全面的航空图像,并带有用于目标检测的旋转边界框。
  • DOTA-v1.5:DOTA 数据集的中间版本,在 DOTA-v1 的基础上提供了更多的注释和改进,以增强目标检测任务。
  • DOTA-v2:DOTA(航拍图像目标检测大规模数据集)第 2 版,重点关注航拍视角的检测,包含带有 170 万个实例和 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
    
    # Create a new YOLO26n-OBB model from scratch
    model = YOLO("yolo26n-obb.yaml")
    
    # Train the model on the custom dataset
    results = model.train(data="your_dataset.yaml", epochs=100, imgsz=640)

    这确保你的模型利用详细的 OBB 标注来提高检测 accuracy

  • 目前,Ultralytics 支持以下数据集进行 OBB 训练:

    • DOTA-v1:DOTA 数据集的第一个版本,提供了一组全面的航空图像,并带有用于目标检测的旋转边界框。
    • DOTA-v1.5:DOTA 数据集的中间版本,在 DOTA-v1 的基础上提供了更多的注释和改进,以增强目标检测任务。
    • DOTA-v2:该数据集包含 170 万个带有旋转边界框的实例和 11,268 张图像,主要专注于航拍目标检测。
    • DOTA8:DOTA 数据集的较小 8 图像子集,用于测试和持续集成(CI)检查。
    • DOTA128:一个包含 128 张图像的子集,train 文件夹中的所有图像(用于训练和验证),比 DOTA8 具有更多样性,同时对于初始 OBB 模型开发和实验来说易于管理。

    这些数据集专为 OBB 具有显着优势的场景量身定制,例如航空和卫星图像分析。

  • 可以,你可以使用带有旋转边界框的自定义数据集进行 YOLO26 训练。确保将数据集标注转换为 YOLO OBB 格式,这包括通过四个角点定义边界框。然后,你可以创建一个指定数据集路径、类别和其他必要细节的 YAML configuration file。有关创建和配置数据集的更多信息,请参考支持的数据集部分。

评论