全新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

相关推荐
AI莫大猫1 小时前
(6)YOLOv4算法基本原理以及和YOLOv3 的差异
算法·yolo
KeepThinking!4 小时前
YOLO-World:Real-Time Open-Vocabulary Object Detection
人工智能·yolo·目标检测·多模态
前网易架构师-高司机7 小时前
游泳溺水识别数据集,对9984张原始图片进行YOLO,COCO JSON, VOC XML 格式的标注,平均识别率在91.7%以上
yolo·溺水·游泳溺水·游泳安全
街 三 仔7 小时前
【QSS样式表 - ⑤】:QLineEdit控件样式
pyside6·pyqt5·qtdesigner·qss
发呆小天才O.oᯅ8 小时前
YOLOv8目标检测——详细记录使用OpenCV的DNN模块进行推理部署C++实现
c++·图像处理·人工智能·opencv·yolo·目标检测·dnn
深度学习lover9 小时前
<项目代码>YOLO Visdrone航拍目标识别<目标检测>
python·yolo·目标检测·计算机视觉·visdrone航拍目标识别
深度学习lover19 小时前
[项目代码] YOLOv8 遥感航拍飞机和船舶识别 [目标检测]
python·yolo·目标检测·计算机视觉·遥感航拍飞机和船舶识别
学习BigData21 小时前
【使用PyQt5和YOLOv11开发电脑屏幕区域的实时分类GUI】——选择检测区域
qt·yolo·分类
love you joyfully1 天前
目标检测与R-CNN——pytorch与paddle实现目标检测与R-CNN
人工智能·pytorch·目标检测·cnn·paddle
红色的山茶花1 天前
YOLOv9-0.1部分代码阅读笔记-dataloaders.py
笔记·深度学习·yolo