当前位置: 首页 > news >正文

目标检测之YOLOV11自定义数据使用OBB训练与验证

一、前置条件与环境准备

在开始训练前,确保已完成以下准备《目标检测之YOLOV11自定义数据预处理——从原始标注到YOLO-OBB格式转换与验证》:
数据目录结构

yolov11/
├── datasets/
│   └── shrimp/
│       ├── images/
│       │   ├── train/  # 训练集图片
│       │   └── val/    # 验证集图片
│       └── labels/
│           ├── train/  # 训练集YOLO-OBB标注(.txt)
│           └── val/    # 验证集YOLO-OBB标注(.txt)
├── shrimp_obb.yaml     # 训练配置文件
└── runs/               # 训练结果保存目录└── obb/             # OBB任务结果

二、训练配置文件shrimp_obb.yaml设置

配置文件定义了数据集路径、类别数等关键信息,shrimp_obb.yaml应包含以下内容:

# 数据集基础信息(根据实际路径调整)
train: /datasets/shrimp/images/train  # 训练集图片目录(需提前划分训练集)
val:  /datasets/shrimp/images/val    # 验证集图片目录(你代码中的val路径)# 标签路径(YOLO自动匹配:与图片目录同级的labels目录,如images/train → labels/train)
# 转换后标签路径labels/val(与val图片目录同级)# 类别信息(你提到只有1个类别)
nc: 1  # 类别数量(必须与转换后的class_index=0一致)
names: ["shrimp"]  # 类别名称(与实际标注的类别一致)# 可选:测试集路径(若有)
#test:  /datasets/shrimp/images/test# 以下为可选超参数(可在训练命令中覆盖,非必须写在yaml里)
# 超参数参考:https://docs.ultralytics.com/yolov5/training
# hsv_h: 0.015  # 色调增强系数
# hsv_s: 0.7    # 饱和度增强系数
# hsv_v: 0.4    # 明度增强系数
# flipud: 0.5   # 上下翻转概率(OBB任务慎用,可能改变旋转方向)

三、训练命令与参数详解

1. 基础训练命令

使用YOLOv11-OBB模型(如yolo11n-obb.pt)启动训练,命令示例:

yolo obb train \data=shrimp_obb.yaml \model=yolo11n-obb.pt \epochs=300 \imgsz=640 \device=0,1 \batch=128 \project=runs/obb/train \name=shrimp_exp \plots=True \verbose=True
2. 关键参数解释
参数名作用示例值/说明
data指定训练配置文件(定义数据集路径、类别等)shrimp_obb.yaml
model预训练模型路径(OBB专用模型)yolo11n-obb.pt(轻量级)
epochs训练轮次(根据数据量调整,日志显示300轮收敛)300
imgsz输入图片尺寸(与数据集中图片分辨率匹配,日志为640)640
device训练设备(多GPU加速)0,1(使用2张显卡)
batch每批次图片数(根据GPU显存调整,日志为128)128
project训练结果保存根目录(历史结果在runs/obb/trainruns/obb/train
name当前实验名称(避免覆盖历史结果)shrimp_exp(自定义)
plots启用训练过程可视化(生成损失曲线、混淆矩阵等)True(默认启用)
verbose终端输出详细日志(显示每批次损失、学习率等)True(调试时推荐)

3. 结果曲线

在这里插入图片描述

四、训练过程监控

1. 实时日志查看

训练过程中,终端会输出每轮(Epoch)的损失值(box_losscls_lossdfl_loss)和验证指标(mAP50mAP50-95),如日志所示:

在这里插入图片描述

2. TensorBoard可视化

训练完成后,日志文件(events.out.tfevents.*)保存在runs/obb/train/shrimp_exp目录。通过以下命令启动TensorBoard查看损失曲线和mAP趋势:

tensorboard --logdir runs/obb/train/shrimp_exp

浏览器访问http://localhost:6006即可查看。


五、模型验证(Val)

训练完成后,使用验证集评估最佳模型(best.pt)的泛化能力,命令如下:

yolo obb val \model=runs/obb/train/shrimp_exp/weights/best.pt \data=shrimp_obb.yaml \imgsz=640 \batch=128

输出指标与训练日志中的mAP50mAP50-95一致(日志显示mAP50-95=0.937)。
在这里插入图片描述

六、模型预测(Inference)

使用训练好的best.pt对新图片/视频进行预测,命令示例(隐藏类别名和置信度):

yolo obb predict \model=runs/obb/train/shrimp_exp/weights/best.pt \source=xxx.jpg \imgsz=640 \show_labels=False \show_conf=False \project=runs/obb/predict \name=shrimp_pred
关键预测参数
参数名作用示例值/说明
source预测源(图片/视频路径或摄像头ID)图片:/path/to/image.jpg
show_labels是否显示类别名称(需求是隐藏)False
show_conf是否显示置信度分数(需求是隐藏)False
project/name预测结果保存目录(历史结果在runs/obb/predictruns/obb/predict/shrimp_pred
部分预测结果

在这里插入图片描述
在这里插入图片描述

七、常见问题与解决方案

问题现象可能原因解决方法
训练报错label not found标签文件与图片文件名不匹配(如图片是.png,标签是.txt但前缀不一致)确保images/train/xxx.jpg对应labels/train/xxx.txt(同名不同后缀)
mAP远低于预期数据增强参数不当(如rotate过大导致标注方向混乱)调整shrimp_obb.yaml中的rotate值(如从0.5降至0.3)
预测框偏移原图目标数据转换时坐标归一化错误(如图片尺寸读取失败)检查convert_to_yolo_obb.pyimg.shape是否正确获取宽高(shape[1]是宽)

八、总结

难以想象,一句像样的代码都没怎么写,就能完成了一个yolov11的训练和验证。
通过本文的步骤,已完成从数据格式转换→训练配置→模型训练→验证→预测的全流程。训练得到的best.pt可直接用于实际场景(如虾类检测),后续可通过调整超参数(如学习率、数据增强)进一步优化模型性能。
不过对比之前用yolov5-obb和现在的yolov11-obb,现在的结果比之前的好很多,无论是训练过程还是结果都有提升。

相关文章:

  • Apache ECharts-01.介绍
  • Arduino Nano 33 BLE Sense Rev 2开发板使用指南之【外设开发】
  • 响应式数据框架性能深度分析报告(@type-dom/signals)
  • EchoEar(喵伴):乐鑫发布与火山引擎扣子联名 AI 智能体开发板
  • 20250619在Ubuntu20.04.6下编译Rockchip瑞芯微原厂的RK3576的Buildroot系统
  • SSH服务与rsync服务配置实战
  • 内网运行控制四百来个海康威视硬件物联网定员管控软件(华为平板电脑版)
  • 3.5 map_saver地图的保存与加载
  • STM32 定时器讲解
  • 【Bug:docker】--Docker同时部署Dify和RAGFlow出现错误
  • 《汇编语言:基于X86处理器》第2章 复习题
  • 【AI论文】SWE-Factory:您的自动化工厂,提供问题解决培训数据和评估基准
  • Java 正则表达式高级用法
  • 全局数据的处理
  • 设计模式 - 原型模式
  • LTC3130EMSE#TRPBF ADI电子元器件深度解析 物联网/工业传感器首选!
  • RK3568笔记八十五:LVGL播放AVI视频
  • 单服务器部署多个Discuz! X3.5站点并独立Redis配置方案
  • 蜻蜓Q系统的技术演进:从Laravel 6到Laravel 8的升级之路-优雅草卓伊凡
  • NAT基础配置实验
  • 郑州企业做网站/2023年8月新冠疫情
  • 贵州省住房和城乡建设厅官方网站/竞价托管哪家便宜
  • 益阳营销型网站建设/市场推广策略 包括哪些
  • 怎样利用网站做推广/东莞头条最新新闻
  • 常德政务网站/竞价推广哪家公司好
  • 网站备案费用多少/百度网站排名查询