Ultralytics YOLO27:

带 OBB 的 DOTA 数据集#

DOTA 数据集是用于航空图像目标检测的大规模基准数据集,发布了三个版本(v1.0、v1.5、v2.0),涵盖 18 个类别中多达 170 万个有向边界框(OBB)标注,这些图像由各种航空传感器和平台采集。

在 Ultralytics Platform 上探索官方托管的 DOTA v1.5DOTA v1.0 数据集,预览其有向标注、查看统计信息,并克隆数据集用于训练。

用于航空检测的 DOTA 数据集对象类别

主要特性#



Watch: How to Train Ultralytics YOLO on the DOTA Dataset for Oriented Bounding Boxes in Google Colab
  • 数据来自各种传感器和平台,图像尺寸范围为 800 × 800 至 20,000 × 20,000 像素。
  • 包含 18 个类别的 170 多万个有向边界框。
  • 由于每张图像中的对象尺寸分布范围广,支持多尺度目标检测。
  • 实例由专家使用任意形状的(8 个自由度)四边形进行标注,从而捕捉不同尺度、方向和形状的对象。

数据集版本#

DOTA-v1.0#

  • 包含 15 个常见类别。
  • 包含 2,806 张图像和 188,282 个实例。
  • 划分比例:训练集占 1/2(1,411 张图像)、验证集占 1/6(458 张图像),测试集占 1/3(937 张图像)。

DOTA-v1.5#

DOTA-v2.0#

  • 图像来自 Google Earth、GF-2 Satellite 及其他航空图像。
  • 包含 18 个常见类别。
  • 包含 11,268 张图像和多达 1,793,658 个实例。
  • 新增类别:“机场”和“直升机停机坪”。
  • 图像划分:
    • 训练集:1,830 张图像,268,627 个实例。
    • 验证集:593 张图像,81,048 个实例。
    • 测试开发集:2,792 张图像,353,346 个实例。
    • 测试挑战集:6,053 张图像,1,090,637 个实例。

数据集结构#

DOTA 采用了专为 OBB 目标检测挑战设计的结构化布局:

  • 图像:大量高分辨率航空图像,捕捉了各种地形和结构。
  • 有向边界框:使用包围对象的旋转矩形进行标注,无论对象朝向如何都能将其框出,非常适合捕捉飞机、船舶和建筑物等对象。

应用#

DOTA 可作为专门用于航空图像分析的模型训练和评估基准。通过加入 OBB 标注,它提供了独特的挑战,支持开发适应航空图像细节的专用目标检测模型。该数据集对于遥感、监控和环境监测应用尤其有价值。

数据集 YAML#

数据集 YAML 文件用于指定图像/标签根目录、类别名称和其他重要元数据。Ultralytics 为最常用的两个版本维护了官方 YAML 文件:

使用与你下载的版本匹配的 YAML;如果你使用的是 DOTA-v2 或其他衍生版本,也可以编写自定义 YAML。两个版本都会在你首次训练时从 Ultralytics GitHub 资源自动下载(2 GB)。

DOTAv1.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# DOTA 1.0 dataset https://captain-whu.github.io/DOTA/index.html for object detection in aerial images by Wuhan University
# Documentation: https://docs.ultralytics.com/datasets/obb/dota-v2
# Example usage: yolo train model=yolov8n-obb.pt data=DOTAv1.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── DOTAv1 ← downloads here (2 GB)

# 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: DOTAv1 # dataset root dir
train: images/train # train images (relative to 'path') 1411 images
val: images/val # val images (relative to 'path') 458 images
test: images/test # test images (optional) 937 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/DOTAv1.zip

划分 DOTA 图像#

原始图像的单边尺寸通常超过 10,000 像素,因此在将数据输入 YOLO 前必须进行切片。使用下面的辅助工具,将原始图像切分为多个尺度的重叠 1024 × 1024 裁剪图,同时保持标注同步。

划分图像
from ultralytics.data.split_dota import split_test, split_trainval

# Split train and val set, with labels.
split_trainval(
    data_root="path/to/DOTAv1.0/",
    save_dir="path/to/DOTAv1.0-split/",
    rates=[0.5, 1.0, 1.5],  # multiscale
    gap=500,
)
# Split test set, without labels.
split_test(
    data_root="path/to/DOTAv1.0/",
    save_dir="path/to/DOTAv1.0-split/",
    rates=[0.5, 1.0, 1.5],  # multiscale
    gap=500,
)
提示

请按照标准 YOLO 布局整理输出目录(images/trainlabels/train 等),这样你就可以直接在数据集 YAML 中引用它。

使用方法#

要在 DOTA v1 数据集上训练模型,你可以使用以下代码片段。请始终参阅模型文档,以获取可用参数的完整列表。如果你想先使用较小的子集进行实验,可以考虑使用仅包含 8 张图像、适合快速测试且可在 Ultralytics Platform 上浏览的 DOTA8 数据集

警告

请注意,DOTAv1 数据集中的所有图像及其相关标注均可用于学术用途,但禁止商业使用。非常感谢你理解并尊重数据集创建者的意愿!

训练示例
from ultralytics import YOLO

# Load a pretrained YOLO26n-OBB model
model = YOLO("yolo26n-obb.pt")

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

示例数据和标注#

浏览数据集可以展现其丰富程度:

带有向边界框标注的 DOTA 数据集

  • DOTA 示例:此快照突出了航空场景的复杂性,以及有向边界框标注的重要性,捕捉对象的自然朝向。

该数据集的丰富内容为航空图像特有的目标检测挑战提供了宝贵洞见。由于标注全面且对象类别多样,DOTA-v2.0 数据集已成为遥感和航空监控项目中非常受欢迎的数据集。

引用和致谢#

如果你在工作中使用 DOTA,请引用相关研究论文:

引用
@article{9560031,
  author={Ding, Jian and Xue, Nan and Xia, Gui-Song and Bai, Xiang and Yang, Wen and Yang, Michael and Belongie, Serge and Luo, Jiebo and Datcu, Mihai and Pelillo, Marcello and Zhang, Liangpei},
  journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
  title={Object Detection in Aerial Images: A Large-Scale Benchmark and Challenges},
  year={2022},
  volume={44},
  number={11},
  pages={7778-7796},
  doi={10.1109/TPAMI.2021.3117983}
}

特别感谢 DOTA 数据集背后的团队为整理该数据集所付出的卓越努力。如需全面了解该数据集及其细节,请访问 DOTA 官方网站

常见问题#

  • DOTA 数据集是一个专注于航空图像目标检测的专用数据集。它包含有向边界框(OBB),提供来自各种航空场景的图像标注。DOTA 在 170 万个标注和 18 个类别中涵盖了多种对象方向、尺度和形状,因此非常适合开发和评估针对航空图像分析的模型,例如用于监控、环境监测和灾害管理的模型。

  • DOTA 使用有向边界框(OBB)进行标注,这些框由包围对象的旋转矩形表示,无论对象朝向如何都能将其框出。这种方法可确保准确捕捉小对象或处于不同角度的对象。该数据集的多尺度图像尺寸范围为 800 × 800 至 20,000 × 20,000 像素,因此还能有效检测小型和大型对象。这种方法对于对象以各种角度和尺度出现的航空图像尤其有价值。

  • 要在 DOTA 数据集上训练模型,你可以使用以下 Ultralytics YOLO 示例:

    训练示例
    from ultralytics import YOLO
    
    # Load a pretrained YOLO26n-OBB model
    model = YOLO("yolo26n-obb.pt")
    
    # Train the model on the DOTAv1 dataset
    results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)

    有关如何划分和预处理 DOTA 图像的更多详情,请参阅划分 DOTA 图像部分

    • DOTA-v1.0:包含 15 个常见类别,涵盖 2,806 张图像和 188,282 个实例。数据集划分为训练集、验证集和测试集。
    • DOTA-v1.5:在 DOTA-v1.0 的基础上,标注了非常小的实例(小于 10 像素),并新增“集装箱起重机”类别,共计 403,318 个实例。
    • DOTA-v2.0:进一步扩展了来自 Google Earth 和 GF-2 Satellite 的标注,包含 11,268 张图像和 1,793,658 个实例。它新增了“机场”和“直升机停机坪”等类别。

    如需详细比较和其他具体信息,请查看数据集版本部分

  • DOTA 图像可能非常大,因此会被划分为较小的分辨率,以便进行可管理的训练。以下是用于划分图像的 Python 代码片段:

    示例
    from ultralytics.data.split_dota import split_test, split_trainval
    
    # split train and val set, with labels.
    split_trainval(
        data_root="path/to/DOTAv1.0/",
        save_dir="path/to/DOTAv1.0-split/",
        rates=[0.5, 1.0, 1.5],  # multiscale
        gap=500,
    )
    # split test set, without labels.
    split_test(
        data_root="path/to/DOTAv1.0/",
        save_dir="path/to/DOTAv1.0-split/",
        rates=[0.5, 1.0, 1.5],  # multiscale
        gap=500,
    )

    此过程有助于提高训练效率和模型性能。如需详细说明,请访问划分 DOTA 图像部分

评论