当前位置: 首页 > 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,现在的结果比之前的好很多,无论是训练过程还是结果都有提升。

http://www.lryc.cn/news/572432.html

相关文章:

  • Neo4j常用语法-path
  • JS红宝书笔记 8.3 继承
  • 煤矿井下Modbus转Profibus网关的传感器与PLC互联解决方案
  • 机器学习×第十二卷:回归树与剪枝策略——她剪去多余的分支,只保留想靠近你的那一层
  • 运维人员常用网站列表
  • 【unitrix】 3.2 位取反运算(not.rs)
  • 【数字人开发】Unity+百度智能云平台实现长短文本个性化语音生成功能
  • 吃透 Golang 基础:Goroutine
  • golang excel导出时需要显示刷新
  • Set_path_margin 命令介绍
  • C++中所有数据类型
  • Jenkins通过Pipeline流水线方式编译Java项目
  • Docker+Jenkins+git实现Golang项目自动部署
  • springboot 打的可执行jar包单独更新某个jar包
  • JMeter 高阶玩法:分布式压测的技术核心技术要点
  • 【K8S】详解NodePort 和 ClusterIP
  • 大数据复习HDFS
  • 11.0592MHz晶振:电脑主板的“心脏”
  • 通过Docker挂载nginx并修改页面
  • ros中相机话题在web页面上的显示,尝试js解析sensor_msgs/Image数据
  • 嵌入式开发之freeRTOS移植
  • Kafka性能调优全攻略:从JVM参数到系统优化
  • Java的SpringAI+Deepseek大模型实战
  • 基于keepalived、vip实现高可用nginx (centos)
  • mongodb单节点改副本集模式
  • Python 开发环境全栈隔离架构:从 Anaconda 到 PyCharm 的四级防护体系
  • NetworkManager介绍与用法
  • 【单片机】51单片机练习代码
  • GRBL_UNO R3编译下载
  • Spring Boot 虚拟线程 vs WebFlux:谁更胜一筹?