ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Ultralytics 中的 DOTA 数据集实战:面向航空影像的 OBB 旋转框检测、数据集切分与 YOLO26-obb 训练

2026/9/5 16:48:31 拓冰建站 浏览量
Ultralytics 中的 DOTA 数据集实战:面向航空影像的 OBB 旋转框检测、数据集切分与 YOLO26-obb 训练 Ultralytics 中的 DOTA 数据集实战面向航空影像的 OBB 旋转框检测、数据集切分与 YOLO26-obb 训练【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics本篇技术指南围绕 Ultralytics 仓库中维护的 DOTADataset for Object deTectiOn in Aerial images数据集文档展开覆盖 DOTA v1.0 / v1.5 / v2.0 三个版本的规模与差异、官方数据集 YAML 配置、高分辨率影像切分ultralytics.data.split_dota的完整工作流以及基于 YOLO OBB 模型的训练命令。读完本文后你将能够独立完成 DOTA 数据的下载、切瓦片tiling、编写数据集 YAML、并启动一个面向航空影像的旋转边界框Oriented Bounding Box, OBB检测训练任务。一、DOTA 数据集概览18 类、170 万个旋转框的航空影像基准DOTA 是面向航空影像目标检测的大规模基准数据集由武汉大学团队发布共有 v1.0、v1.5、v2.0 三个版本累计提供最多约 170 万个 OBB 标注覆盖 18 个常见类别影像来自多种传感器与平台Google Earth、GF-2 卫星等。其核心特性包括多传感器、多平台采集影像尺寸跨度极大从 800 × 800 到 20,000 × 20,000 像素不等大规模旋转标注18 个类别共 170 万 个定向边界框OBB多尺度检测特性单张影像中目标尺寸分布极广天然覆盖多尺度检测场景专家级任意四边形标注实例由专家以 8 自由度8 d.o.f.任意四边形方式标注能够捕获不同尺度、朝向与形状的目标。OBB 以旋转矩形形式包裹目标无论其朝向因此特别契合航空影像中飞机、船舶、建筑物等具有明显方向性的目标这也是 DOTA 与普通水平框HBB检测数据集最大的区别。二、DOTA 三个版本的差异DOTA-v1.0包含 15 个常见类别共 2,806 张图像、188,282 个实例划分比例约 1/2 训练1,411 张、1/6 验证458 张、1/3 测试937 张。DOTA-v1.5图像与 DOTA-v1.0 完全相同补充标注了极小实例小于 10 像素的目标新增一个类别container crane集装箱起重机实例总数达到 403,318 个最初为 DOAI 2019 航空影像目标检测挑战赛发布。DOTA-v2.0在 v1 基础上引入 Google Earth、GF-2 卫星及其他航空影像包含 18 个类别新增 airport机场与 helipad直升机坪两个类别共 11,268 张图像、1,793,658 个实例图像划分为四个子集子集图像数实例数Training1,830268,627Validation59381,048Test-dev2,792353,346Test-challenge6,0531,090,637三、数据集结构与标注形式DOTA 的目录结构是为 OBB 检测任务量身设计的Images大量高分辨率航空影像覆盖多样的地形与地物标注以旋转矩形OBB包裹目标不限制目标朝向适合飞机、船舶、建筑物等具有方向特征的对象。在 Ultralytics 工作流中标注以 YOLO OBB 格式存储为.txt文件每行一个目标格式为class_id x1 y1 x2 y2 x3 y3 x4 y4归一化坐标的四点四边形与水平框格式相比多出一个顶点。切分工具ultralytics.data.split_dota输出的标签正是这一格式见下文crop_and_save的写盘逻辑。四、数据集 YAMLUltralytics 官方配置数据集 YAML 用于指定图像/标签根目录、类别名等元数据。Ultralytics 在仓库中为最常用的两个发布版本维护了官方 YAMLDOTAv1.yamlDOTAv1.5.yaml请以你实际下载的发布版本为准选择对应 YAML如果使用的是 DOTA-v2 或派生数据可自行编写一份自定义 YAML。这两个官方 YAML 均支持自动下载约 2 GB首次训练时会自动从 Ultralytics 资产仓库拉取。DOTAv1.yaml 完整内容# DOTA 1.0 dataset https://captain-whu.github.io/DOTA/index.html for object detection in aerial images by Wuhan University # Example usage: yolo train modelyolov8n-obb.pt dataDOTAv1.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对照 DOTAv1.5.yaml两者差异仅有两点类别表在第 15 号新增了container crane以及path与download指向 v1.5 的数据根目录与压缩包。15 个 v1.0 类别为plane、ship、storage tank、baseball diamond、tennis court、basketball court、ground track field、harbor、bridge、large vehicle、small vehicle、helicopter、roundabout、soccer ball field、swimming pool。要点说明train/val/test支持三种写法目录、imgs.txt文件、路径列表DOTA 官方数据使用的是目录形式末尾的download字段是关键——只要本地不存在path指定的数据目录Ultralytics 会按该 URL 自动下载并解压若使用自己切分split后的目录需将train/val指向切分输出目录见下节的输出布局约定。五、切分高分辨率 DOTA 影像split_dota 源码级解析DOTA 原始影像单边动辄超过 10,000 像素无法直接喂给 YOLO必须先切片tiling。仓库内置的 split_dota 模块可把原始影像切成 1024 × 1024 的重叠瓦片并支持多尺度同时保证标注同步切分。5.1 官方调用示例from ultralytics.data.split_dota import split_test, split_trainval # Split train and val set, with labels. split_trainval( data_rootpath/to/DOTAv1.0/, save_dirpath/to/DOTAv1.0-split/, rates[0.5, 1.0, 1.5], # multiscale gap500, ) # Split test set, without labels. split_test( data_rootpath/to/DOTAv1.0/, save_dirpath/to/DOTAv1.0-split/, rates[0.5, 1.0, 1.5], # multiscale gap500, )5.2 参数语义结合源码对照 split_dota.py 中split_trainval与split_test的函数签名默认值crop_size1024, gap200, rates(1.0,)各参数的实际含义为data_rootDOTA 数据根目录需满足标准布局——images/train、images/valtest 则只读images/test以及对应的labels/train、labels/valsave_dir切分结果输出目录rates多尺度比例。源码中对每个r执行crop_sizes.append(int(crop_size / r))、gaps.append(int(gap / r))即 r 0.5 时瓦片放大到 2048r 1.5 时缩小到约 683——比例越大瓦片越小从而让模型同时看到大目标与小目标gap瓦片之间的重叠像素数overlap保证跨瓦片目标不被切断丢失。源码要求crop_size gap且以step crop_size - gap作为滑窗步长crop_size基础瓦片尺寸默认 1024对应文档推荐的 1024 × 1024 切块。5.3 内部流水线从源码结构看split_trainval的处理链分为三步split_images_and_labels→ 逐图执行load_yolo_dota读取每张图的尺寸经exif_size处理 EXIF 旋转并把对应.txt标签解析为float32数组get_windows按滑窗策略计算切块坐标过滤掉图像内容占比低于im_rate_thr默认 0.6的边缘残窗get_window_objcrop_and_save基于bbox_iofIntersection over Foreground依赖shapely2.0.0计算目标四边形与瓦片的 IoF默认阈值iof_thr0.7——只有 70% 以上面积落入某瓦片的目标才会写入该瓦片标签随后裁剪图像并写标签。细节值得注意输出瓦片的命名规则为{原图名}__{宽}__{x起点}___{y起点}如P0000__1024__4896___0其中宽高字段用于推理时反向定位大影像中的全局坐标标签写入时执行了坐标平移减去瓦片起点与归一化除以瓦片宽高输出即为 YOLO OBB 格式allow_background_images默认 True控制是否保留不含目标的纯背景瓦片输出目录遵循标准 YOLO 布局save_dir/images/{train,val,test}与save_dir/labels/{train,val}因此可直接被数据集 YAML 引用模块底部的__main__入口给出了 DOTAv2 的默认用法split_trainval(data_rootDOTAv2, save_dirDOTAv2-split)与split_test(...)。经验提示保持输出目录为标准 YOLO 布局images/train、labels/train等即可直接在自定义 YAML 中引用split_test只输出图像无标签因为测试集标签不对外公布。六、使用 DOTA 训练 OBB 模型6.1 训练示例在 DOTA v1 上从零训练一个 YOLO26n-OBB 模型from ultralytics import YOLO # Create a new YOLO26n-OBB model from scratch model YOLO(yolo26n-obb.yaml) # Train the model on the DOTAv1 dataset results model.train(dataDOTAv1.yaml, epochs100, imgsz1024)CLI 等价形式# Train a new YOLO26n-OBB model on the DOTAv1 dataset yolo obb train dataDOTAv1.yaml modelyolo26n-obb.pt epochs100 imgsz1024注意两点必须走obb任务yolo obb train ...OBB 头输出的正是旋转框参数OBB 模型结构 YAML 由仓库统一维护例如 yolo26-obb.yamlv8/v11/v12 系列亦有对应 OBB 结构文件。yolo26n-obb.yaml这类带尺寸后缀的名字在调用时由模型注册机制解析到对应规模的结构。6.2 快速验证管道DOTA8正式投入 DOTA 大训练前建议先用 DOTA8 数据集 跑通流程。DOTA8 取自切分后 DOTAv1 的前 8 张图像4 训练 / 4 验证约 1 MB首次训练会自动下载继承 DOTAv1 的 15 个类别其配置见 dota8.yaml。from ultralytics import YOLO model YOLO(yolo26n-obb.pt) # 加载预训练权重推荐 results model.train(datadota8.yaml, epochs100, imgsz640)yolo obb train datadota8.yaml modelyolo26n-obb.pt epochs100 imgsz640训练参数epochs、imgsz、batch等的完整清单请参考仓库中的训练模式文档与 default.yaml 默认值。6.3 许可证注意事项DOTAv1 的全部图像与标注仅可用于学术目的禁止商业用途请遵守数据创建方的授权约定。DOTA 各版本整体遵循 Research-Only 许可商用前请自行核实官方许可条款。七、应用场景DOTA 是训练与评估航空影像专用模型的基准。OBB 标注带来的独特挑战促使发展出针对航空影像特性的专用检测模型。典型落地方向包括遥感监测港口、机场、农田基础设施盘点安防与区域监视车辆、直升机、船只动向跟踪环境监测与灾害管理受灾区域目标普查。得益于 170 万级标注与 18 类覆盖DOTA-v2.0 在遥感与航空监视项目中尤为常用。八、样例数据与标注DOTA 的样例影像直观体现了航空场景的复杂度与旋转框标注的必要性目标以其自然朝向任意角度出现用水平框会引入大量冗余背景OBB 则精确贴合飞机、船舶、车辆的几何形状。这种标注方式是 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{2022}, volume{44}, number{11}, pages{7778-7796}, doi{10.1109/TPAMI.2021.3117983} }致谢感谢 DOTA 数据团队在数据整理上的贡献。关于数据集的完整说明类别定义、划分、下载入口可查阅 DOTA 官方网站captain-whu.github.io/DOTA。十、常见问题FAQQ1DOTA 数据集是什么为什么对航空影像目标检测重要DOTA 是专注于航空影像目标检测的专用数据集使用 OBB 旋转框标注。其 170 万条标注与 18 个类别在目标朝向、尺度、形状上的多样性使其成为开发和评估航空影像专用模型监视、环境监测、灾害管理等场景的理想基准。Q2DOTA 如何处理不同尺度和朝向的目标标注采用 OBB以旋转矩形包裹目标与目标朝向无关小目标与任意角度的目标都能被精确捕获加上影像尺寸横跨 800 × 800 到 20,000 × 20,000 像素的多尺度场景可同时对大小目标做出有效检测。配合split_dota的rates多尺度切分训练时还能显式覆盖不同瓦片尺度。Q3如何用 DOTA 训练模型使用上文六、使用 DOTA 训练 OBB 模型中的 Python/CLI 示例dataDOTAv1.yaml、imgsz1024与切分瓦片尺寸一致走obb任务。切分与预处理细节见本文第五节。Q4DOTA-v1.0、v1.5、v2.0 有何区别v1.015 类、2,806 张图、188,282 实例按约 1/2、1/6、1/3 划分训练/验证/测试v1.5图像不变补充 10 像素极小实例标注并新增 container crane 类实例达 403,318v2.0引入 Google Earth 与 GF-2 卫星影像扩展至 18 类新增 airport、helipad11,268 张图、1,793,658 实例。Q5如何为训练准备高分辨率 DOTA 影像使用 split_dota 中的split_trainval/split_test以rates[0.5, 1.0, 1.5]、gap500多尺度切出重叠瓦片标签同步切分并归一化输出为标准 YOLO 目录结构再在数据集 YAML 中指向切分目录即可。十一、延伸阅读仓库内相关路径切分工具源码ultralytics/data/split_dota.py官方数据集 YAMLDOTAv1.yaml、DOTAv1.5.yaml、dota8.yamlOBB 模型结构yolo26-obb.yamlDOTA8 快速验证数据集文档docs/en/datasets/obb/dota8.md【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考