带 OBB 的 DOTA 数据集#
DOTA 数据集是航空影像目标检测的大规模基准测试集,发布了三个版本(v1.0、v1.5、v2.0),涵盖 18 个类别、最多 170 万个有向边界框(OBB)标注,图像采集自各种航空传感器和平台。
在 Ultralytics Platform 上探索官方托管的 DOTA v1.5 和 DOTA v1.0 数据集,预览有向标注、查看统计信息,并克隆数据集用于训练。

主要功能#
观看: 如何在 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)。
# 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-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 图像部分。



