Skip to content

带OBB的DOTA数据集

DOTA 是一个专注于目标检测的航拍图像数据集。源自DOTA系列数据集,它提供了带有定向边界框(OBB)注释的图像,捕捉了各种航拍场景。

DOTA类别可视化

主要特点

  • 从各种传感器和平台收集,图像尺寸从800 × 800到20,000 × 20,000像素不等。
  • 涵盖18个类别中的超过170万个定向边界框。
  • 包含多尺度目标检测。
  • 实例由专家使用任意(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 Challenge 2019)发布。

DOTA-v2.0

  • 从Google Earth、GF-2卫星和其他航拍图像收集。
  • 包含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(Yet Another Markup Language)文件,详细说明数据集的配置。对于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_trainval(
    data_root="path/to/DOTAv1.0/",
    save_dir="path/to/DOTAv1.0-split/",
    rates=[0.5, 1.0, 1.5],  # 多尺度
    gap=500,
)
# 分割测试集,不带标签。
split_test(
    data_root="path/to/DOTAv1.0/",
    save_dir="path/to/DOTAv1.0-split/",
    rates=[0.5, 1.0, 1.5],  # 多尺度
    gap=500,
)

使用方法

要在DOTA v1数据集上训练模型,您可以使用以下代码片段。请始终参考您模型的文档,以获取可用参数的完整列表。

Warning

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

训练示例

from ultralytics import YOLO

# 从头开始创建一个新的YOLO11n-OBB模型
model = YOLO("yolo11n-obb.yaml")

# 在DOTAv1数据集上训练模型
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)
# 在DOTAv1数据集上训练一个新的YOLO11n-OBB模型
yolo obb train data=DOTAv1.yaml model=yolo11n-obb.pt epochs=100 imgsz=1024

样本数据和标注

浏览数据集可以展示其深度:

数据集样本图像

  • DOTA 示例:这张快照突显了航空场景的复杂性以及定向边界框标注的重要性,捕捉了物体在其自然方向上的状态。

数据集的丰富性为航空图像独有的目标检测挑战提供了宝贵的见解。

引用和致谢

对于那些在工作中使用 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 在对象方向、比例和形状上的多样性,以及其 180 万个标注和 18 个类别,使其成为开发和评估适用于航空图像分析模型的理想选择,例如用于监控、环境监测和灾害管理。

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

DOTA 使用定向边界框(OBB)进行标注,这些边界框由旋转矩形表示,无论对象的方向如何,都能封装对象。这种方法确保了无论是小对象还是不同角度的对象都能被准确捕捉。数据集的多尺度图像,范围从 800 × 800 到 20,000 × 20,000 像素,进一步允许有效检测小对象和大对象。

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

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

训练示例

from ultralytics import YOLO

# 从零开始创建一个新的 YOLO11n-OBB 模型
model = YOLO("yolo11n-obb.yaml")

# 在 DOTAv1 数据集上训练模型
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)
# 在 DOTAv1 数据集上训练一个新的 YOLO11n-OBB 模型
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 卫星的标注,共有 11,268 张图像和 1,793,658 个实例。新增了“机场”和“直升机停机坪”等类别。

有关详细比较和更多具体信息,请查看数据集版本部分

如何准备高分辨率的 DOTA 图像进行训练?

DOTA 图像可能非常大,因此将其分割成较小的分辨率以便于训练。以下是一个 Python 代码片段来分割图像:

Example

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],  # 多尺度
    gap=500,
)
# 分割测试集,不带标签。
split_test(
    data_root="path/to/DOTAv1.0/",
)
save_dir="path/to/DOTAv1.0-split/",
rates=[0.5, 1.0, 1.5],  # 多尺度
gap=500,
)

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


📅 Created 11 months ago ✏️ Updated 13 days ago

Comments