Yolov8_OBB斜框数据集制作与训练全流程实战指南

张开发
2026/4/6 11:04:07 15 分钟阅读

分享文章

Yolov8_OBB斜框数据集制作与训练全流程实战指南
1. 环境搭建与工具准备第一次接触YOLOv8_OBB旋转框检测时最头疼的就是环境配置问题。这里分享几个我踩过坑后总结的经验建议使用Python 3.8-3.10版本太高或太低都可能遇到依赖冲突。安装时记得先更新pip到最新版否则可能会报错python -m pip install --upgrade pip pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple实测发现用清华镜像源能大幅提升下载速度。如果遇到PyTorch安装问题建议先去官网生成对应CUDA版本的安装命令。我常用的组合是CUDA 11.7PyTorch 2.0这个组合在3090显卡上跑得最稳。roLabelImg的安装有个小技巧直接克隆GitHub仓库后用conda创建独立环境。记得安装qt5的依赖conda install pyqt5 python resources.py python roLabelImg.py2. 斜框标注实战技巧用roLabelImg标注时新手常犯的错误是旋转角度设置不当。建议打开View-Auto Save和View-Advanced Mode这样能看到实时角度数值。标注船舶这类长条形目标时按住Ctrl键可以微调角度每按一次调整1度。标注文件结构要提前规划好我习惯这样组织myData/ ├── images/ │ ├── train/ │ └── val/ ├── labels/ │ ├── train/ │ └── val/ └── original_labels/ ├── train_xml/ └── val_xml/标注时注意三点同类目标保持相同旋转方向比如船舶统一船头朝右相邻目标不要有太多重叠区域小目标至少占20x20像素以上3. 数据格式转换详解原始标注XML转DOTA格式时最容易出错的是坐标转换。我优化过的转换脚本增加了边界检查def check_coords(x1, y1, x2, y2, x3, y3, x4, y4, img_w, img_h): coords [x1, y1, x2, y2, x3, y3, x4, y4] coords [max(0, min(coord, img_w if i%20 else img_h)) for i, coord in enumerate(coords)] return coords转换后的DOTA格式文本每行包含8个坐标值类别例如100 200 150 200 150 250 100 250 ship 0执行dota2obb转换时要注意路径设置。我建议用绝对路径并在脚本开头添加import os os.environ[KMP_DUPLICATE_LIB_OK]TRUE4. 配置文件深度优化yaml配置文件有三大关键点需要定制类别名必须和标注完全一致训练验证集路径建议用相对路径添加数据增强参数这是我的配置文件模板path: ../myData train: images/train val: images/val names: 0: ship 1: vehicle 2: aircraft obb_params: angle_range: 45 # 限制旋转角度范围 hflip_prob: 0.5 # 水平翻转概率对于小数据集建议开启mosaic增强augment: mosaic: 0.8 mixup: 0.25. 训练参数调优心得训练命令中的关键参数组合直接影响效果yolo obb train datamy-dota8-obb.yaml modelyolov8s-obb.pt epochs300 imgsz640 batch16 device0,1 patience50 lr00.01 lrf0.01几个实用技巧初始学习率lr0设为0.01-0.1早停patience建议50-100小目标多的场景用imgsz800显存不足时调低batch并启用梯度累积batch4 accumulate46. 模型验证与部署验证时要注意测试集不能参与训练。推荐用TTA(Test Time Augmentation)提升精度yolo obb val modelbest-obb.pt datamy-dota8-obb.yaml splittest imgsz640 augmentTrue导出ONNX时记得指定动态维度yolo export modelbest-obb.pt formatonnx dynamicTrue simplifyTrue opset13在TensorRT部署时我习惯先做量化trtexec --onnxmodel.onnx --fp16 --saveEnginemodel.engine7. 常见问题解决方案标注文件不匹配检查XML和图片文件名是否完全一致包括大小写训练出现NaN降低学习率或增大batch size验证mAP低检查标注质量特别是小目标显存不足减小imgsz或使用--adam优化器最近在航拍图像项目中发现对高度倾斜的目标60度可以适当增大angle_range到60度。另外建议每训练50个epoch就做一次验证保存多个中间模型备选。

更多文章