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

文章目录


前言

最近觉得自己以往作品的界面有点简陋,打算认真设计一下,顺便借一下 YOLOv11 的热度~~ 这次的界面美化了pyqt5 ui,且涵盖了许多功能,如推理图像、视频处理、摄像头接入、目标统计(总数和单数)、帧状态回溯等等,且不仅支持v11模型、v8、v10都可以使用,具体效果可以观看我在下方放的视频。

项目中包含我整理的一些主流改进方案,以及 500+ 主干网替换的优化。目前界面和改进在持续更新中,欢迎大家关注!


视频效果

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


必要环境

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

一、界面功能概述

1. 运行方法

python 复制代码
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 复制代码
python 2_train.py --weights refinedModel/backbone/yolov11_mobilenetv4_conv_aa_large.yaml --epoch 200 --batch 16 --workers 0

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

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

效果

运行成功后会打印log信息


三、 关键参数解析

python 复制代码
# 解析命令行参数
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

相关推荐
思通数科多模态大模型14 小时前
10大核心应用场景,解锁AI检测系统的智能安全之道
人工智能·深度学习·安全·目标检测·计算机视觉·自然语言处理·数据挖掘
红色的山茶花14 小时前
YOLOv8-ultralytics-8.2.103部分代码阅读笔记-block.py
笔记·深度学习·yolo
sp_fyf_202414 小时前
【大语言模型】ACL2024论文-18 MINPROMPT:基于图的最小提示数据增强用于少样本问答
人工智能·深度学习·神经网络·目标检测·机器学习·语言模型·自然语言处理
思通数科AI全行业智能NLP系统15 小时前
六大核心应用场景,解锁AI检测系统的智能安全之道
图像处理·人工智能·深度学习·安全·目标检测·计算机视觉·知识图谱
非自律懒癌患者17 小时前
Transformer中的Self-Attention机制如何自然地适应于目标检测任务
人工智能·算法·目标检测
unix2linux18 小时前
YOLO v5 Series - Image & Video Storage ( Openresty + Lua)
yolo·lua·openresty
菠菠萝宝20 小时前
【YOLOv8】安卓端部署-1-项目介绍
android·java·c++·yolo·目标检测·目标跟踪·kotlin
ZZZZ_Y_21 小时前
YOLOv5指定标签框背景颜色和标签字
yolo
Eric.Lee20211 天前
数据集-目标检测系列- 花卉 玫瑰 检测数据集 rose >> DataBall
人工智能·目标检测·计算机视觉
红色的山茶花1 天前
YOLOv8-ultralytics-8.2.103部分代码阅读笔记-conv.py
笔记·yolo