检测的 8 图调试数据集与 YOLO26 训练实战)
Ultralytics DOTA8 数据集详解面向旋转框OBB检测的 8 图调试数据集与 YOLO26 训练实战【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics本文以 Ultralytics 官方文档中的 DOTA8 数据集说明为主体结合仓库内dota8.yaml配置、OBB 训练/验证器源码与测试用例讲解这个 8 张航拍图的旋转框检测数据集的结构、标注格式、自动下载机制以及如何用 YOLO26n-obb 在其上完成训练、验证与流水线调试。读完本文你可以直接复制其中的 Python/CLI 命令跑通一次 OBB 训练并理解训练底层调用链与数据集 YAML 各字段的作用。1. DOTA8 是什么定位与适用场景DOTA8 是一个小而实用的有向边界框oriented bounding boxOBB检测数据集由 DOTAv1 划分集的前 8 张图像组成其中4 张用于训练、4 张用于验证。它的主要用途是测试与调试检测模型8 张图足够小可以在几分钟内甚至 CPU 上跑完一轮训练-验证循环快速暴露数据加载、标注格式、损失计算等环节的错误新检测方案的快速实验验证新网络结构或新训练技巧时先在小数据集上确认流程无异常再迁移到完整 DOTA 数据集CI/流水线校验仓库的 OBB 任务回归测试直接使用该数据集从tests/test_engine.py与tests/test_cli.py的测试参数中可以看到OBB 任务的 Trainer/Validator/Predictor 集成测试均以dota8.yaml作为标准测试数据。继承自 DOTAv1 的完整类别体系意味着这 8 张图中出现了 plane飞机、ship船舶、large vehicle大型车辆等 15 个类别中的典型航拍目标具备足够的多样性用于训练管线的健全性检查sanity check。2. 数据集结构与标注格式DOTA8 的组织方式与 Ultralytics 其他数据集保持一致图像8 张航拍图块4 张 train、4 张 val来源于 DOTAv1 划分集类别继承 DOTAv1 的 15 个类别包括 plane、ship、storage tank 等标签YOLO 格式的旋转框标注以.txt文件保存在每张图像同级的labels/目录下与图像路径一一对应下载约 1 MB首次训练时自动从 Ultralytics GitHub 资产源下载并解压无需手动操作推荐目录布局datasets/dota8/ ├── images/ │ ├── train/ │ └── val/ └── labels/ ├── train/ └── val/需要注意 OBB 任务与普通 detect 任务的标注差异每张图对应的.txt标签文件中每行是一个旋转框中心点 宽高 旋转角的 5 个归一化值加类别 id而不是普通检测的 4 值轴对齐框。这正是该数据集专门服务于 OBB 模型的原因。3. 数据集 YAMLdota8.yaml逐字段解读Ultralytics 用 YAML 文件描述数据集的路径、类别与下载源。DOTA8 对应的配置文件维护在 ultralytics/cfg/datasets/dota8.yaml其完整内容为# DOTA8 dataset (8 images from the DOTAv1 split) by Ultralytics # parent # ├── ultralytics # └── datasets # └── dota8 ← downloads here (1 MB) # 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: dota8 # dataset root dir train: images/train # train images (relative to path) 4 images val: images/val # val images (relative to path) 4 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/dota8.zip各字段的作用如下字段取值说明pathdota8数据集根目录相对当前工作目录。首次使用时框架会自动下载并解压到该目录trainimages/train训练图像目录相对path共 4 张valimages/val验证图像目录相对path共 4 张names0–14 共 15 类完整继承 DOTAv1 类别表。OBB 训练器会从该字段自动推导出类别数nc与通道数channelsdownloadGitHub release 的 zip 地址可选字段。存在时训练启动会自动下载解压注释中已标明目标位置为datasets/dota8体积约 1 MB从源码结构看训练器在构建模型时会读取数据集配置中的类别与通道信息OBBTrainer.get_model 在初始化OBBModel时传入ncself.data[nc]和chself.data[channels]即模型结构中的类别输出数直接来自 YAML 的names字段——这也是为什么nc在模型 YAML如 yolo26-obb.yaml里只是一个默认值实际以数据集配置为准。4. 使用 DOTA8 训练 YOLO26n-obb官方给出的标准用法是加载预训练的yolo26n-obb.pt在dota8.yaml上训练 100 个 epoch、图像尺寸 640。完整参数列表可参考训练模式文档 docs/en/modes/train.md。Pythonfrom ultralytics import YOLO # Load a model model YOLO(yolo26n-obb.pt) # load a pretrained model (recommended for training) # Train the model results model.train(datadota8.yaml, epochs100, imgsz640)CLI# Start training from a pretrained *.pt model yolo obb train datadota8.yaml modelyolo26n-obb.pt epochs100 imgsz640两种写法的差异仅在于调用入口Python API 中任务由模型文件名中的-obb后缀自动识别CLI 中则显式以obb子命令声明任务类型。训练链路从model.train到 OBBTrainer调用model.train(datadota8.yaml, ...)后仓库内部的调用链如下YOLO对象根据任务路由到 OBB 任务模块构造 OBBTrainerOBBTrainer.__init__强制覆写overrides[task] obb再委托给父类DetectionTrainer完成通用训练初始化见 train.py#L33-L46get_model创建OBBModel并加载yolo26n-obb.pt权重类别数由dota8.yaml的names推导get_validator返回 OBBValidator用于每轮验证。模型侧yolo26n-obb.pt对应 ultralytics/cfg/models/26/yolo26-obb.yaml其 backbone/head 采用 P3/8、P4/16、P5/32 三级特征末端是OBB26旋转框头。该配置文件同时给出了 n/s/m/l/x 五种尺度的参数量与 GFLOPs 概要如 n 档约 271.6 万参数、16.9 GFLOPs在 DOTA8 这类小数据调试场景下n档是速度最优的选择。验证环节值得注意的一点OBBValidator.init_metrics 会检查验证路径中是否包含 DOTA 字符串并设置is_dota标志同时把confusion_matrix.task设为obb评估指标使用专门的OBBMetrics旋转框 IoU。由于 DOTA8 正是从 DOTAv1 划分而来其验证结果会正确走旋转框评估路径。训练中的 Mosaic 增强原数据集文档特别展示了 DOTA8 的mosaic 拼接训练批次多张航拍图被拼成一张图构成一个训练样本用于提升 batch 内目标尺寸、长宽比与上下文场景的多样性帮助模型泛化到不同尺度与朝向的物体。从 ultralytics/cfg/default.yaml 可以看到mosaic: 1.0是默认增强概率即 OBB 训练中默认全程启用 mosaic如调试时想关闭该增强以便观察单图样本可显式传mosaic0.0。验证val训练完成后可直接验证训练时保存的数据集与超参会被记住无需重复传参from ultralytics import YOLO model YOLO(best.pt) # 训练产出的权重 metrics model.val(datadota8.yaml)yolo obb val modelbest.pt datadota8.yaml更完整的训练/验证/推理示例可参见 OBB 任务文档 docs/en/tasks/obb.md其中还给出了.yaml从零构建、.pt预训练加载、pretrained权重迁移三种 CLI 组合方式。5. 在测试体系中的角色DOTA8 不只是文档示例数据它也是仓库回归测试的标准 OBB 数据集。以下几处测试参数可以印证其CI 标准数据的定位tests/test_engine.pyOBBTrainer/OBBValidator/OBBPredictor三件套的集成测试使用dota8.yaml与yolo26n-obb.yamltests/test_cli.pyOBB 任务 CLI 测试以dota8.yaml训练并以yolo26s-obb.pt权重做后续验证tests/test_python.pyPython API 与云端集成测试同样选用dota8.yaml注释中说明理由是类别更少可减少推理耗时。如果你的自定义 OBB 数据集训练流水线出现问题先在 DOTA8 上跑通同一条命令是最快的定位手段DOTA8 上成功说明问题在数据标注、路径、格式失败则说明问题在代码或环境本身。6. 引用与致谢在研究或开发工作中使用 DOTA 系列数据集含 DOTA8时请引用 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} }文档中对该数据集的许可证标注为Research-Only仅限研究用途商用前请自行确认 DOTA 官方许可条款。7. 常见问题FAQDOTA8 由哪些图像组成适合做什么DOTA8 由 DOTAv1 划分集的前 8 张图像组成4 训练 4 验证体量小但类别覆盖 DOTAv1 全部 15 类适合测试与调试 OBB 检测模型、暴露训练管线错误以及在训练更大数据集之前做健全性检查。如何用 DOTA8 训练 YOLO26 模型按第 4 节的 Python 或 CLI 示例执行即可datadota8.yaml、epochs100、imgsz640推荐使用yolo26n-obb.pt预训练权重。更多参数见 docs/en/modes/train.md。Mosaic 增强对 DOTA8 训练有什么帮助Mosaic 在训练时将多张图像拼合成一张增加每个 batch 内物体尺寸、长宽比与场景上下文的多样性提升模型对不同朝向与尺度的泛化能力DOTA8 的航拍目标尺寸差异明显该增强收益直观。默认概率为 1.0见 default.yaml。DOTA8 与其他 DOTA 子集如何取舍仓库同时提供 DOTA128128 图与 DOTAv2完整大规模版本等数据集配置DOTA8 用于最快速度验证流程DOTA128 适合小规模实验正式训练则使用完整 DOTA。相关文档见 docs/en/datasets/obb/dota128.md 与 docs/en/datasets/obb/dota-v2.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),仅供参考