跳转至内容

带有 OBB 的 DOTA 数据集

DOTA 作为一个专门的数据集,强调航空图像中的目标检测。它源自 DOTA 系列数据集,提供带注释的图像,这些图像使用旋转框检测 (OBB)捕获各种航空场景。

DOTA 类别可视化

主要功能



观看: 如何在 Google Colab 上使用 DOTA 数据集训练 Ultralytics YOLO11 以进行定向边界框检测

  • 从各种传感器和平台收集,图像大小从 800 × 800 像素到 20,000 × 20,000 像素不等。
  • 包含超过170万个定向边界框,涵盖18个类别。
  • 包含多尺度目标检测。
  • 实例由专家使用任意(8自由度)四边形进行标注,捕捉不同尺度、方向和形状的目标。

数据集版本

DOTA-v1.0

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

DOTA-v1.5

  • 包含与DOTA-v1.0相同的图像。
  • 非常小的实例(小于10像素)也进行了标注。
  • 新增一个类别:“集装箱起重机”。
  • 总共有403,318个实例。
  • DOAI 2019 年航拍图像目标检测挑战赛发布。

DOTA-v2.0

  • 收集自Google Earth、GF-2卫星和其他航空图像。
  • 包含18个常见类别。
  • 包含11,268张图像,共计1,793,658个实例。
  • 引入了新的类别:“机场”和“直升机停机坪”。
  • 图像分割:
    • 训练集:1,830张图像,包含268,627个实例。
    • 验证集:593张图像,包含81,048个实例。
    • Test-dev:2,792张图像,包含353,346个实例。
    • Test-challenge: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 🚀 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
#     └── 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: 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 数据集上训练模型,您可以使用以下代码片段。始终参考模型的文档以获取可用参数的完整列表。对于那些希望首先尝试较小子集的人,请考虑使用 DOTA8 数据集,该数据集仅包含 8 个图像以进行快速测试。

警告

请注意,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 示例:此快照突出了航空场景的复杂性以及定向边界框注释的重要性,从而以其自然方向捕获对象。

该数据集的丰富性为理解航空图像独有的目标检测挑战提供了宝贵的见解。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={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:包括2,806张图像中的15个常见类别,包含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代码片段:

示例

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



📅 创建于 1 年前 ✏️ 更新于 3 个月前

评论