跳至内容

带 OBB 的 DOTA 数据集

DOTA stands as a specialized dataset, emphasizing object detection in aerial images. Originating from the DOTA series of datasets, it offers annotated images capturing a diverse array of aerial scenes with Oriented Bounding Boxes (OBB).

DOTA 类视觉

主要功能

  • 收集来自不同传感器和平台的图像,图像大小从 800 × 800 到 20,000 × 20,000 像素不等。
  • 提供超过 170 万个定向边框,涵盖 18 个类别。
  • 包含多尺度物体检测。
  • 专家使用任意(8 d.o.f.)四边形对实例进行注释,捕捉不同比例、方向和形状的物体。

数据集版本

DOTA-v1.0

  • 包含 15 个常见类别。
  • 包括 2 806 幅图像,188 282 个实例。
  • 分割比例:1/2用于训练,1/6用于验证,1/3用于测试。

DOTA-v1.5

  • 包含与 DOTA-v1.0 相同的图像。
  • 非常小的实例(小于 10 像素)也有注释。
  • 增加一个新类别:"集装箱起重机"。
  • 共计 403 318 次。
  • 为 "2019 年航空图像中的物体检测 DOAI 挑战赛 "发布。

DOTA-v2.0

  • 收集自Google 地球、GF-2 卫星和其他航空图像。
  • 包含 18 个常见类别。
  • 包括 11,268 幅图像和多达 1,793,658 个实例。
  • 引入新类别:"机场 "和 "直升机停机坪"。
  • 图像分割:
    • 训练:1,830 幅图像,268,627 个实例。
    • 验证:593 幅图像,81 048 个实例。
    • Test-dev:2 792 幅图像,353 346 个实例。
    • 测试挑战:6,053 幅图像,1,090,637 个实例。

数据集结构

DOTA 展示了专为 OBB 物体检测挑战量身定制的结构布局:

  • 图像大量高分辨率航拍图像,捕捉各种地形和结构。
  • 定向边框旋转矩形注释:以旋转矩形的形式封装对象,无论其方向如何,非常适合捕捉飞机、轮船和建筑物等对象。

应用

DOTA 是训练和评估专门用于航空图像分析的模型的基准。由于包含了 OBB 注释,它提供了一个独特的挑战,使开发专门的物体检测模型成为可能,以满足航空图像的细微差别。

数据集 YAML

通常,数据集会包含一个 YAML(另一种标记语言)文件,详细说明数据集的配置。对于 DOTA v1 和 DOTA v1.5,Ultralytics 提供了 DOTAv1.yamlDOTAv1.5.yaml 文件。有关这些文件以及 DOTA v2 的其他详细信息,请查阅 DOTA 的官方资源库和文档。

DOTAv1.yaml

# Ultralytics YOLO 🚀, AGPL-3.0 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
#     └── dota1  ← downloads here (2GB)

# 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: ../datasets/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 图像

为了训练 DOTA 数据集,我们以多尺度方式将高分辨率的原始 DOTA 图像分割成 1024x1024 分辨率的图像。

分割图像

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 v1 数据集上训练模型,您可以使用以下代码片段。有关可用参数的详细列表,请务必参阅模型文档。

警告

请注意,DOTAv1 数据集中的所有图像和相关注释均可用于学术目的,但禁止用于商业用途。非常感谢您对数据集创建者意愿的理解和尊重!

列车示例

from ultralytics import YOLO

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

# Train the model on the DOTAv1 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)
# Train a new YOLO11n-OBB model on the DOTAv1 dataset
yolo obb train data=DOTAv1.yaml model=yolo11n-obb.pt epochs=100 imgsz=1024

样本数据和注释

只要看一眼数据集,就能了解其深度:

数据集样本图像

  • DOTA examples: This snapshot underlines the complexity of aerial scenes and the significance of Oriented Bounding Box annotations, capturing objects in their natural orientation.

该数据集的丰富性为我们深入了解航空图像所特有的物体检测难题提供了宝贵的见解。

引文和致谢

对于那些在工作中利用 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={2021},
  volume={},
  number={},
  pages={1-1},
  doi={10.1109/TPAMI.2021.3117983}
}

在此,我们要特别感谢 DOTA 数据集背后的团队,感谢他们为策划该数据集所付出的值得称赞的努力。如需全面了解该数据集及其细微差别,请访问 DOTA 官方网站

常见问题

什么是 DOTA 数据集,为什么它对航空图像中的物体检测很重要?

DOTA 数据集是一个专门用于航空图像中物体检测的数据集。它以定向边框(OBB)为特色,提供来自不同航空场景的注释图像。DOTA 的 170 万条注释和 18 个类别在物体方向、比例和形状方面的多样性,使其成为开发和评估航空图像分析模型(如用于监控、环境监测和灾害管理的模型)的理想选择。

DOTA 数据集如何处理图像中的不同比例和方向?

DOTA 利用定向边框 (OBB) 进行标注,它由旋转矩形表示,将物体封装起来,而不管其方向如何。这种方法可确保准确捕捉到小尺寸或不同角度的物体。该数据集的多尺度图像(从 800 × 800 到 20,000 × 20,000 像素)可进一步有效检测小型和大型物体。

如何使用 DOTA 数据集训练模型?

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

列车示例

from ultralytics import YOLO

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

# Train the model on the DOTAv1 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)
# Train a new YOLO11n-OBB model on the DOTAv1 dataset
yolo obb train data=DOTAv1.yaml model=yolo11n-obb.pt epochs=100 imgsz=1024

有关如何分割和预处理 DOTA 图像的详细信息,请参阅分割 DOTA 图像部分

DOTA-v1.0、DOTA-v1.5 和 DOTA-v2.0 之间有哪些区别?

  • 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 图像?

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 图像部分


📅 Created 11 months ago ✏️ Updated 10 days ago

评论