Ultralytics YOLO27:

带 OBB 的 DOTA 数据集#

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

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

用于航空影像检测的 DOTA 数据集目标类别

主要功能#



观看: 如何在 Google Colab 中使用 Ultralytics YOLO 在 DOTA 数据集上训练定向边界框模型
  • 数据采集自各种传感器和平台,图像尺寸从 800 × 800 到 20,000 × 20,000 像素不等。
  • 包含 18 个类别、超过 170 万个有向边界框。
  • 由于每张图像中的物体尺寸范围广泛,支持多尺度目标检测。
  • 由专家使用任意形状的四边形(8 个自由度)标注实例,以捕捉不同尺寸、朝向和形状的物体。

数据集版本#

DOTA-v1.0#

  • 包含 15 个常见类别。
  • 共包含 2806 张图像和 188282 个实例。
  • 划分比例:1/2 用于训练(1411 张图像),1/6 用于验证(458 张图像),1/3 用于测试(937 张图像)。

DOTA-v1.5#

  • 包含与 DOTA-v1.0 相同的图像。
  • 还标注了非常小的实例(小于 10 像素)。
  • 新增一个类别:“集装箱起重机”。
  • 共计 403318 个实例。
  • 为参加2019 年航空影像目标检测 DOAI 挑战赛而发布。

DOTA-v2.0#

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

数据集结构#

DOTA 采用结构化布局,专为 OBB 目标检测任务设计:

  • 图像:大量高分辨率航拍图像,涵盖各种地形和建筑结构。
  • 有向边界框:以旋转矩形的形式标注目标,无论目标朝向如何都能将其框定,非常适合捕捉飞机、船舶和建筑物等目标。

应用场景#

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

数据集 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_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(
    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/train、labels/train 等),这样你就可以在数据集 YAML 中直接引用它。

用法#

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

警告

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

训练示例
from ultralytics import YOLO

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

# 在 DOTAv1 数据集上训练模型
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
    
    # 加载预训练的 YOLO26n-OBB 模型
    model = YOLO("yolo26n-obb.pt")
    
    # 在 DOTAv1 数据集上训练模型
    results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)

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

    • DOTA-v1.0:包含 2,806 张图像中的 15 个常见类别,共有 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_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(
        data_root="path/to/DOTAv1.0/",
        save_dir="path/to/DOTAv1.0-split/",
        rates=[0.5, 1.0, 1.5],  # multiscale
        gap=500,
    )

    此流程有助于提升训练效率和模型性能。详细说明请参阅切分 DOTA 图像部分。

评论