全新YOLOv11美化版检测界面 涵盖超多功能 支持百种模型改进训练

news2024/11/25 6:49:02

文章目录

  • 前言
  • 视频效果
  • 必要环境
  • 一、界面功能概述
    • 1. 运行方法
    • 2. 图像
      • 选择图像:
      • 表格信息:
      • 统计信息:
      • IOU和NMS调节:
      • 目标框显示:
    • 3. 文件夹
      • 选择文件夹:
      • 进度显示:
      • 推理结果:
    • 4. 视频、摄像头
      • 进度显示:
      • 实时检测:
      • 帧状态回溯:
    • 5. 替换界面中的模型
    • 5. 鼠标悬浮
  • 二、训练改进模型
    • 运行方法
      • 假设我们要训练yolov11+mobilenetv4主干网
      • 假设我们要训练yolov11+mobilenetv4主干网+mpdiouloss
      • 效果
  • 三、 关键参数解析
      • 关键参数详解:
  • 总结


前言

最近觉得自己以往作品的界面有点简陋,打算认真设计一下,顺便借一下 YOLOv11 的热度~~ 这次的界面美化了pyqt5 ui,且涵盖了许多功能,如推理图像、视频处理、摄像头接入、目标统计(总数和单数)、帧状态回溯等等,且不仅支持v11模型、v8、v10都可以使用,具体效果可以观看我在下方放的视频。
项目中包含我整理的一些主流改进方案,以及 500+ 主干网替换的优化。目前界面和改进在持续更新中,欢迎大家关注!


视频效果

YOLOv11美化版检测界面 涵盖超多功能 支持上百种改进模型 持续更新中~~


必要环境

  1. 配置yolov11环境 可参考往期博客
    地址:搭建YOLOv11环境 训练+推理+模型评估+简单的小界面

一、界面功能概述

在这里插入图片描述

1. 运行方法

python 1_yolo_pyqt.py --weights yolo11n.pt
  • –weights 选择模型,支持该项目下训练出来的所有模型,同时除v11外,同样支持yolov8、yolov10

2. 图像

选择图像:

  • 选择一个图像文件,软件会自动推理该图像,并将结果展现在界面中

表格信息:

  • 图像名称
  • 目标序号
  • 目标类别
  • 目标置信度
  • 推理用时
  • 目标坐标
  • 保存路径

统计信息:

  • 目标总数
  • 每个小类别的数量(显示在右下角)

IOU和NMS调节:

  • 可调节 IOU 阈值和 NMS 阈值来调整目标框数量

目标框显示:

  • 点击表格中任意位置(对应不同目标序号),可单独显示该序号的目标框及标号
  • 点击表头可显示所有目标及标号
  • 可在下拉列表中选择单独目标序号进行显示

3. 文件夹

选择文件夹:

  • 选择一个文件夹,软件会自动推理该文件夹中的所有图片

进度显示:

  • 推理的过程中会出现一个小进度条来显示处理进度

推理结果:

  • 点击表格中的信息可以显示不同图片的推理结果,其余功能与检测图像相同

4. 视频、摄像头

进度显示:

  • 推理的过程中会出现一个小进度条来显示处理进度

实时检测:

  • 在视频运行过程中,点击保存按钮或使用 Ctrl+S 实时获取对应帧的检测结果
  • 可以实时调节 IOU 阈值和 NMS 阈值

帧状态回溯:

  • 关闭视频后,可以通过列表中的信息回溯到对应帧的状态

  • 若需保存某一帧的推理图像,通过列表跳转到该位置,然后点击保存按钮或使用 Ctrl+S 来保存

  • 推理摄像头: 推理摄像头的功能与推理视频一致,此处不再过多介绍

5. 替换界面中的模型

  • yolov11_qt.py代码中 --weights 参数替换成你的模型路径
  • 例如:parser.add_argument('--weights', default=r"yolov8n.pt", type=str, help='weights path')
  • 支持YOLOv8、YOLOv10以及全部在项目目录中训练出来的模型

5. 鼠标悬浮

  • 鼠标悬浮在按钮处可查看输入路径,悬浮在右上角处可在运行的过程中查看使用方法

二、训练改进模型

运行方法

假设我们要训练yolov11+mobilenetv4主干网

python 2_train.py --weights refinedModel/backbone/yolov11_mobilenetv4_conv_aa_large.yaml --epoch 200 --batch 16 --workers 0

假设我们要训练yolov11+mobilenetv4主干网+mpdiouloss

python 2_train.py --weights refinedModel/backbone/yolov11_mobilenetv4_conv_aa_large.yaml --epoch 200 --batch 16 --workers 0 --mpdiou True

效果

运行成功后会打印log信息
在这里插入图片描述


三、 关键参数解析

# 解析命令行参数
parser = argparse.ArgumentParser(description='Train or validate YOLO model.')
#想用哪个loss直接把对应的变量改为True即可,全部填写False这里默认使用ciouloss进行训练
parser.add_argument('--mpdiou', type=str, default=False, help='Whether to use mpdiou or not (True/False)')
parser.add_argument('--diou', type=str, default=False, help='Whether to use diou or not (True/False)')
parser.add_argument('--giou', type=str, default=False, help='Whether to use giou or not (True/False)')
parser.add_argument('--siou', type=str, default=False, help='Whether to use siou or not (True/False)')
parser.add_argument('--eiou', type=str, default=False, help='Whether to use eiou or not (True/False)')
parser.add_argument('--shapeiou', type=str, default=False, help='Whether to use shapeiou or not (True/False)')
# 是否使用nwdloss
parser.add_argument('--usenwd', type=str, default=False, help='Whether to use NWDLoss or not (True/False)')
# iou使用比例
parser.add_argument('--iou_ratio', type=float, default=0.5,
                    help='Intersection over Union (IoU) threshold for NWDLoss')

# train用于训练原始模型  val 用于得到精度指标
parser.add_argument('--mode', type=str, default='train', help='Mode of operation.')

# 训练时此处填写yaml文件路径 推理时此处填写网络结构.yaml文件路径
parser.add_argument('--weights', type=str, default=r'refinedModel/yolo11-ImprovedSimAM.yaml', help='Path to model file.')
# 数据集存放路径
parser.add_argument('--data', type=str, default='data/data.yaml', help='Path to data file.')

parser.add_argument('--epoch', type=int, default=100, help='Number of epochs.')
parser.add_argument('--batch', type=int, default=8, help='Batch size.')
parser.add_argument('--workers', type=int, default=0, help='Number of workers.')
parser.add_argument('--device', type=str, default='0', help='Device to use.')
parser.add_argument('--name', type=str, default='', help='Name data file.')
args = parser.parse_args()

关键参数详解:

  • –mpdiou: 指定是否使用 MPD IoU 损失。填写 TrueFalse,默认为 False

  • –diou: 指定是否使用 DIoU 损失。填写 TrueFalse,默认为 False

  • –giou: 指定是否使用 GIoU 损失。填写 TrueFalse,默认为 False

  • –siou: 指定是否使用 SIoU 损失。填写 TrueFalse,默认为 False

  • –eiou: 指定是否使用 EIou 损失。填写 TrueFalse,默认为 False

  • –shapeiou: 指定是否使用 Shape IoU 损失。填写 TrueFalse,默认为 False

  • –usenwd: 指定是否使用 NWD 损失。填写 TrueFalse,默认为 False。NWD 损失可以改善小目标的检测性能

  • –iou_ratio: 设置 IoU 阈值,用于 NWD 损失的计算。默认为 0.5 该参数影响损失函数的敏感度

  • –mode: 指定操作模式。填写 train 用于训练模型,填写 val 用于验证模型的精度 默认为 train

  • –weights: 填写预训练模型的路径。如果不使用预训练模型,则此处可以为空 默认为 refinedModel/yolo11-ImprovedSimAM.yaml

  • –data: 数据集存放路径。填写数据集配置文件的路径,默认为 data/data.yaml

  • –epoch: 设置训练的轮数。默认为 100 增加轮数可以提高模型的性能,但也可能导致过拟合

  • –batch: 设置批处理大小。默认为 8 批处理大小影响训练速度和内存占用

  • –workers: 设置加载数据的工作线程数。默认为 0

  • –device: 指定使用的设备。默认为 0,表示使用第一个 GPU。如果为 cpu,则在 CPU 上运行

  • –name: 指定数据文件的名称。默认为空字符串,可以用于标识实验或结果


总结

yolo是真卷呐,版本号一会儿一变的 看不过来了…

本期博客就到这里啦 如有问题,欢迎评论区交流~~

学习交流群:995760755

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2210896.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣周赛:第419场周赛

👨‍🎓作者简介:爱好技术和算法的研究生 🌌上期文章:力扣周赛:第415场周赛 📚订阅专栏:力扣周赛 希望文章对你们有所帮助 因为一些特殊原因,这场比赛就打了1h&#xff0c…

[Linux] Linux 模拟实现 Shell

标题:[Linux] Linux 模拟实现 Shell 个人主页水墨不写bug(图片来源于网络) 目录 一、什么是shell 二、shell的理解 三、模拟实现shell 1)打印命令行提示 2)获取用户的输入字符串 3)分割命令字符串 4…

【优选算法篇】双指针的优雅舞步:C++ 算法世界的浪漫探索

文章目录 C 双指针详解:基础题解与思维分析前言第一章:对撞指针1.1 移动零解题思路图解分析C代码实现易错点提示代码解读 1.2 复写零解题思路算法步骤C代码实现易错点提示代码复杂度 1.3 盛最多水的容器1. 题目链接2. 题目描述解法一(暴力求解…

链表(4)_合并K个升序链表_面试题

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 链表(4)_合并K个升序链表_面试题 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论💌 目录…

第十五届蓝桥杯C++B组省赛

文章目录 1.握手问题解题思路1(组合数学)解题思路2(暴力枚举) 2.小球反弹做题思路 3.好数算法思路(暴力解法)---不会超时 4.R格式算法思路 5.宝石组合算法思路---唯一分解定理 6.数字接龙算法思路----DFS 7…

【Oracle数据库进阶】001.SQL基础查询_查询语句

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :&#x1…

Egg考古系列-EggCore的生命周期

关于EGG egg框架的第一个版本还是2017-03-21,距今已有7年了。虽然最近几年没有什么更新,但它在国内的使用还是挺多的,mvc的分层模式也很受大家喜欢。虽然声称是面向企业级、中大型项目场景的框架,但这种约定式在大型项目中其实也很…

高校学科竞赛管理:SpringBoot实现的高效策略

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

【M2-Mixer】核心方法解读

abstract: 在本文中,我们提出了M2-Mixer,这是一种基于MLPMixer的结构,具有多头损失,用于多模态分类。它比基于卷积、循环或神经结构搜索的基线模型具有更好的性能,其主要优势是概念和计算简单。所提出的多…

【电子电力】LCL滤波器设计,包括电流控制调谐

摘要 LCL 滤波器是电力电子领域中广泛应用于并网逆变器的滤波器之一,其主要功能是减少高频开关的谐波,确保输出电流的质量。本文设计并实现了基于 MATLAB 的 LCL 滤波器模型,结合电流控制器和调谐技术,验证了其在谐波抑制方面的效…

从RNN讲起(RNN、LSTM、GRU、BiGRU)——序列数据处理网络

文章目录 RNN(Recurrent Neural Network,循环神经网络)1. 什么是RNN?2. 经典RNN的结构3. RNN的主要特点4. RNN存在问题——长期依赖(Long-TermDependencies)问题 LSTM(Long Short-Term Memory&a…

PostgreSQL学习笔记七:常规SQL操作

PostgreSQL 支持标准的 SQL 语句,同时也扩展了一些特有的功能。以下是一些常规的 SQL 语句示例,这些示例涵盖了数据定义、数据操作和数据查询的基本操作: 数据定义语言 (DDL 创建数据库: CREATE DATABASE mydatabase;创建表&#…

stm32单片机个人学习笔记9(TIM输入捕获)

前言 本篇文章属于stm32单片机(以下简称单片机)的学习笔记,来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益匪浅。 STM32入门教程-2023版 细…

AWD入门

一、简介 AWD(Attack With Defense,攻防兼备)模式。你需要在一场比赛里要扮演攻击方和防守方,攻者得分,失守者会被扣分。也就是说攻击别人的靶机可以获取 Flag 分数时,别人会被扣分,同时你也要保护自己的主机不被别人…

Docker 教程四 (Docker 镜像加速)

Docker 镜像加速 国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。 目前国内 Docker 镜像源出现了一些问题,基本不能用了,后期能用我再更新下。* Docker 官方和国内很多云服务商都提供了国内加速器服务,例如…

Python网络爬虫入门指南

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

MPA-SVM多变量回归预测|海洋捕食者优化算法-支持向量机|Matalb

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、算法介绍: 四、完整程序下载: 一、程序及算法内容介绍: 基本内容: 本代码基于Matlab平台编译&am…

2024年网络安全进阶学习路径-2024年进阶学习指南

🤟 基于入门网络安全/黑客打造的:👉黑客&网络安全入门&进阶学习资源包 前言 什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、…

KDD 2024论文分享┆用于序列推荐的数据集再生

论文简介 本推文介绍了2024 KDD的最佳学生论文《Dataset Regeneration for Sequential Recommendation》。该论文提出了一种基于数据中心化范式的新框架,称为DR4SR,该框架通过模型无关的数据再生机制,能够生成具有出色跨架构泛化能力的理想训…

git(版本回退,分支管理,vscode集成git)

一、安装与简单命令 1.官网 https://git-scm.com/downloads 2.查看版本号git --version 3.设置用户签名(用户名和邮箱) 用来标识用户,以区分不同的开发人员 git config --global user.name "Your Name" git config --global u…