一、前置条件与环境准备

在开始训练前,确保已完成以下准备《目标检测之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.pswp.cn/news/910335.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/910335.shtml
英文地址,请注明出处:http://en.pswp.cn/news/910335.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Labview教程进阶一(Labview与OPC UA设备通信)

1.Labview与OPC UA设备通信 OPC UA通信协议优势显著,具体表现如下: 跨平台兼容:支持多种操作系统和硬件平台,实现无缝数据交换。高安全性:内置加密、身份验证和授权机制,确保数据传输安全。高效数据交换:采用二进制编码和优化的传输协议,提高通信效率。复杂数据建模:…

【Comsol教程】如何求解指定范围的积分 或 在积分中去除奇异点/异常值

我们在Comsol中经常需要对物体的边界求积分,比如求物体在流场中所受的总流体牵引力,又或者是物体在电场中受到的总介电泳力。当物体的材料或者边界条件存在突变时,物体表面的粘性应力或者麦克斯韦电应力可能会存在异常值。通常解决方法有细化…

Python 多版本治理理念(Windows 平台 · 零基础友好)

🧠 Python 多版本治理理念(Windows 平台 零基础友好) 🌐 核心原则:三维治理、四级隔离、五项自治 以下是基于人工智能深度学习环境搭建实践,总结出的"零基础入门 Conda工具链 全隔离项目环境"…

Python文件管理利器之Shutil库详解

Shutil是一个Python内置的用来高效处理文件和目录迁移任务的库。Shutil不仅支持基本的文件复制、移动和删除操作,还具备处理大文件、批量迁移目录、以及跨平台兼容性等特性。通过使用Shutil,我们可以更加轻松地实现文件系统的管理和维护,本文…

学习华为 ensp 的学习心得体会

引言​ 在信息技术日新月异的今天,网络技术作为连接世界的桥梁,其重要性不言而喻。作为一名对网络技术充满热情的大一新生,我选择了 eNSP(Enterprise Network Simulation Platform,企业网络模拟平台)作为我…

jenkins-2.439.1搭建

一、 二、pipeline文件 pipeline { agent any // 可以指定特定的agent, 如 label 或 docker environment { JAVA_HOME "/usr/local/software/jdk1.8.0_451" PATH "${JAVA_HOME}/bin:${env.PATH}" } tools { …

【threejs】一天一个小案例讲解:控制面板(GUI)

# 好吧,每天更新实在有点艰巨,我尽量少量多次 代码仓 所有代码都会上传到这里,可自行clone GitHub - TiffanyHoo/three_practices: Learning three.js together! 运行效果图 ​ 知识要点 一、安装dat.gui npm i dat.gui 二、使用步骤&a…

飞轮储能辅助双馈风机参与电力系统一次调频的仿真模型研究

以下是一篇关于飞轮储能辅助双馈风机参与电力系统一次调频的仿真模型研究的论文 ,涵盖理论分析、数学模型构建、控制策略设计及仿真验证等内容,适用于电气工程、新能源技术等领域的研究参考。 飞轮储能辅助双馈风机参与电力系统一次调频的仿真模型研究 摘要 随着风电在电力…

一次性理解Java垃圾回收--简单直接方便面试时使用

Java的垃圾回收是一个面试必问题,只要按照下面的步骤回答肯定不会有大问题。 1.先告诉面试官垃圾回收分为两大步: a.识别哪些对象是"垃圾"(不再被使用的对象) b.回收这些垃圾对象占用的内存空间 2. 接下来分别介绍标记阶段和回收阶段的细节…

XML映射文件-辅助配置

如果你没有按照同包同名来,就要下面的配置,指定好路径 1.把路径改为类下面的xml文件 #指定xml映射文件的位置 mybatis.mapper-locationsclasspath:mapper/*.xml

120、三角形最小路径和

题目 解答: 直接按照空间复杂度O(n)来做了。这种明显是动态规划,每一层用到上一层的信息。 观察数据形状,如下: (0,0) (1,0)(1,1) (2,0)(2,1)(2,2) (3,0)(3,1)(3,2)(3,3) ... (n-1,0)...(n-1,n-1) 设dp[n],定义为本层第n…

仕么是Transformer以及工作原理和架构

Transformer 是一种革命性的**深度学习架构**,由 Google 团队在 2017 年论文《Attention is All You Need》中提出。它彻底改变了自然语言处理(NLP)领域,并逐渐扩展到计算机视觉、语音识别等多模态任务。其核心创新在于**完全依赖…

opencv 锁页内存的使用

在OpenCV的CUDA编程中,cv::cuda::HostMem类用于管理锁页内存(Page-Locked Memory)​,这种内存能显著提升主机(CPU)与设备(GPU)间的数据传输效率。而.createMatHeader()正是将HostMem…

亚远景-ASPICE与ISO 26262:理解汽车软件质量保障的双标体系

在汽车行业向智能化、电动化转型的背景下,ASPICE(Automotive SPICE)与ISO 26262作为汽车软件质量保障的两大核心标准,分别从过程能力与功能安全两个维度构建了完整的开发管理体系。以下从标准定位、核心差异、协同实践及行业价值四…

数组的应用

Java数组的基本概念 数组是Java中一种重要的数据结构,用于存储固定大小的相同类型元素。数组在内存中连续分配空间,可以通过索引快速访问元素。数组的声明和初始化是使用数组的基础,声明时需要指定数据类型和数组名称,初始化可以…

基础RAG实现,最佳入门选择(七)

增强型RAG系统的查询转换 采用三种查询转换技术,以提高RAG系统中的检索性能,而无需依赖于像LangChain这样的专门库。通过修改用户查询,我们可以显著提高检索信息的相关性和全面性。 关键转换技术 1.查询重写:使查询更加具体和详…

企业应用观测中枢建设

本文来自腾讯蓝鲸智云社区用户: CanWay 运维挑战加剧 新时代技术背景下,运维面临的挑战加剧: 1、业务数量日益增加、业务规模日益庞大 随着科技发展进步、民众生活富足,线下业务线上化、线上业务复杂化趋势愈演愈烈,各行各业投…

Python实例题:基于边缘计算的智能物联网系统

目录 Python实例题 题目 问题描述 解题思路 关键代码框架 难点分析 扩展方向 Python实例题 题目 基于边缘计算的智能物联网系统 问题描述 开发一个基于边缘计算的智能物联网系统,包含以下功能: 边缘设备管理:连接和管理大量物联网…

一,python语法教程.内置API

一,字符串相关API string.strip([chars])方法:移除字符串开头和结尾的空白字符(如空格、制表符、换行符等),它不会修改原始字符串,而是返回一个新的处理后的字符串 chars(可选)&…

私有 Word 文件预览转 PDF 实现方案

私有 Word 文件在线预览方案(.doc/.docx 转 PDF) 前言 由于 .doc 和 .docx Word 文件 无法在浏览器中直接预览(尤其在私有 API 场景下),常见的 Content-Disposition: inline 并不能生效。因此,本方案通过…