当前位置: 首页 > news >正文

基于YOLOv5n/s/m不同参数量级模型开发构建茶叶嫩芽检测识别模型,使用pruning剪枝技术来对模型进行轻量化处理,探索不同剪枝水平下模型性能影响【续】

这里主要是前一篇博文的后续内容,简单回顾一下:本文选取了n/s/m三款不同量级的模型来依次构建训练模型,所有的参数保持同样的设置,之后探索在不同剪枝处理操作下的性能影响。

在上一篇博文中保持30的剪枝程度得到的效果还是比较理想的。这里进行的是分别进行60和90两种不同程度的剪枝,之后对其进行微调训练开发,对比分析模型性能。

先看60的结果:

【yolov5n_pruning】

 【yolov5s_pruning】

【yolov5m_pruning】

 三款参数量级的模型对比评估结果详情如下所示:

【yolov5n_pruning】
Validating runs/train/yolov5n_pruning_0.60/weights/best.pt...
Fusing layers... 
YOLOv5n summary: 157 layers, 932592 parameters, 0 gradients, 2.1 GFLOPsClass     Images  Instances          P          R      mAP50   mAP50-95: 100%|██████████| 5/5 [00:01<00:00,  2.79it/s]                      all         40        100      0.627       0.42      0.482      0.153
Results saved to runs/train/yolov5n_pruning_0.60【yolov5s_pruning】
Validating runs/train/yolov5s_pruning_0.60/weights/best.pt...
Fusing layers... 
YOLOv5s summary: 166 layers, 4637807 parameters, 0 gradientsClass     Images  Instances          P          R      mAP50   mAP50-95: 100%|??????????| 5/5 [00:01<00:00,  2.51it/s]                      all         40        100      0.488        0.5      0.481      0.183
Results saved to runs/train/yolov5s_pruning_0.60【yolov5m_pruning】
Validating runs/train/yolov5m_pruning_0.60/weights/best.pt...
Fusing layers... 
YOLOv5m summary: 212 layers, 11711883 parameters, 0 gradients, 25.4 GFLOPsClass     Images  Instances          P          R      mAP50   mAP50-95: 100%|██████████| 5/5 [00:01<00:00,  2.77it/s]                      all         40        100      0.633      0.708      0.672      0.256
Results saved to runs/train/yolov5m_pruning_0.60

综合对比不难发现:在60%的剪枝程度处理下,各款模型都发现了明显的精度下降的问题。为了直观对比分析,我对其进行了可视化,如下所示:

【Precision曲线】
精确率曲线(Precision-Recall Curve)是一种用于评估二分类模型在不同阈值下的精确率性能的可视化工具。它通过绘制不同阈值下的精确率和召回率之间的关系图来帮助我们了解模型在不同阈值下的表现。
精确率(Precision)是指被正确预测为正例的样本数占所有预测为正例的样本数的比例。召回率(Recall)是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。
绘制精确率曲线的步骤如下:
使用不同的阈值将预测概率转换为二进制类别标签。通常,当预测概率大于阈值时,样本被分类为正例,否则分类为负例。
对于每个阈值,计算相应的精确率和召回率。
将每个阈值下的精确率和召回率绘制在同一个图表上,形成精确率曲线。
根据精确率曲线的形状和变化趋势,可以选择适当的阈值以达到所需的性能要求。
通过观察精确率曲线,我们可以根据需求确定最佳的阈值,以平衡精确率和召回率。较高的精确率意味着较少的误报,而较高的召回率则表示较少的漏报。根据具体的业务需求和成本权衡,可以在曲线上选择合适的操作点或阈值。
精确率曲线通常与召回率曲线(Recall Curve)一起使用,以提供更全面的分类器性能分析,并帮助评估和比较不同模型的性能。


【Recall曲线】
召回率曲线(Recall Curve)是一种用于评估二分类模型在不同阈值下的召回率性能的可视化工具。它通过绘制不同阈值下的召回率和对应的精确率之间的关系图来帮助我们了解模型在不同阈值下的表现。
召回率(Recall)是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。召回率也被称为灵敏度(Sensitivity)或真正例率(True Positive Rate)。
绘制召回率曲线的步骤如下:
使用不同的阈值将预测概率转换为二进制类别标签。通常,当预测概率大于阈值时,样本被分类为正例,否则分类为负例。
对于每个阈值,计算相应的召回率和对应的精确率。
将每个阈值下的召回率和精确率绘制在同一个图表上,形成召回率曲线。
根据召回率曲线的形状和变化趋势,可以选择适当的阈值以达到所需的性能要求。
通过观察召回率曲线,我们可以根据需求确定最佳的阈值,以平衡召回率和精确率。较高的召回率表示较少的漏报,而较高的精确率意味着较少的误报。根据具体的业务需求和成本权衡,可以在曲线上选择合适的操作点或阈值。
召回率曲线通常与精确率曲线(Precision Curve)一起使用,以提供更全面的分类器性能分析,并帮助评估和比较不同模型的性能。


【F1值曲线】
F1值曲线是一种用于评估二分类模型在不同阈值下的性能的可视化工具。它通过绘制不同阈值下的精确率(Precision)、召回率(Recall)和F1分数的关系图来帮助我们理解模型的整体性能。
F1分数是精确率和召回率的调和平均值,它综合考虑了两者的性能指标。F1值曲线可以帮助我们确定在不同精确率和召回率之间找到一个平衡点,以选择最佳的阈值。
绘制F1值曲线的步骤如下:
使用不同的阈值将预测概率转换为二进制类别标签。通常,当预测概率大于阈值时,样本被分类为正例,否则分类为负例。
对于每个阈值,计算相应的精确率、召回率和F1分数。
将每个阈值下的精确率、召回率和F1分数绘制在同一个图表上,形成F1值曲线。
根据F1值曲线的形状和变化趋势,可以选择适当的阈值以达到所需的性能要求。
F1值曲线通常与接收者操作特征曲线(ROC曲线)一起使用,以帮助评估和比较不同模型的性能。它们提供了更全面的分类器性能分析,可以根据具体应用场景来选择合适的模型和阈值设置。

 【loss曲线】

 接下来是剪枝度为90的最后一组实验。

【yolov5n_pruning】

 【yolov5s_pruning】

 【yolov5m_pruning】

 三款不同参数量级在剪枝度90的情况下,模型评估结果对比如下所示:

【yolov5n_pruning】
Validating runs/train/yolov5n_pruning_0.90/weights/best.pt...
Fusing layers... 
YOLOv5n summary: 157 layers, 710530 parameters, 0 gradients, 1.4 GFLOPsClass     Images  Instances          P          R      mAP50   mAP50-95: 100%|██████████| 5/5 [00:01<00:00,  3.53it/s]                      all         40        100      0.267       0.23      0.189     0.0464
Results saved to runs/train/yolov5n_pruning_0.90【yolov5s_pruning】
Validating runs/train/yolov5s_pruning_0.90/weights/best.pt...
Fusing layers... 
YOLOv5s summary: 166 layers, 3920903 parameters, 0 gradientsClass     Images  Instances          P          R      mAP50   mAP50-95: 100%|??????????| 5/5 [00:01<00:00,  3.59it/s]                      all         40        100      0.204       0.27      0.175     0.0635
Results saved to runs/train/yolov5s_pruning_0.90【yolov5m_pruning】
Validating runs/train/yolov5m_pruning_0.90/weights/best.pt...
Fusing layers... 
YOLOv5m summary: 212 layers, 8908815 parameters, 0 gradients, 17.7 GFLOPsClass     Images  Instances          P          R      mAP50   mAP50-95: 100%|??????????| 5/5 [00:01<00:00,  3.21it/s]                      all         40        100      0.213       0.35      0.221      0.078
Results saved to runs/train/yolov5m_pruning_0.90

同样为了直观对比分析,我对其也进行了对比可视化展示,如下所示:

【F1值】

【loss曲线】

 【Precision】

 【Recall】

 90的话结果已经变差了很多了。

接下来我整体对比一下30/60/90这三组剪枝实验结果,如下所示:

【F1值】

 【loss】

 【Precision】

 【Recall】

 从对比可视化曲线上面不难看出:剪枝三组实验效果依次递降。

精度和速度本身就是一堆需要平衡的指标,在算力条件允许的情况下尽量保持较低程度的剪枝水平会带来不错的精度体验。

最后我们来直观体验感受下不同剪枝水平下模型体量的差异:

 后面有时间再继续实验分析吧。

相关文章:

基于YOLOv5n/s/m不同参数量级模型开发构建茶叶嫩芽检测识别模型,使用pruning剪枝技术来对模型进行轻量化处理,探索不同剪枝水平下模型性能影响【续】

这里主要是前一篇博文的后续内容&#xff0c;简单回顾一下&#xff1a;本文选取了n/s/m三款不同量级的模型来依次构建训练模型&#xff0c;所有的参数保持同样的设置&#xff0c;之后探索在不同剪枝处理操作下的性能影响。 在上一篇博文中保持30的剪枝程度得到的效果还是比较理…...

深度解析 Llama 2 的资源汇总:不容错过

“ 探索 Llama 2 背后的过程&#xff0c;包括了模型的全面解析&#xff0c;在线体验&#xff0c;微调&#xff0c;部署等&#xff0c;这份资源汇总将带您深入了解其内涵。” 01 — 周二发布了文章《中文大模型 Chinese-LLaMA-Alpaca-2 开源且可以商用》后&#xff0c;不少朋友们…...

Git 删除 GitHub仓库的文件

新建文件夹 git bash here 在新建的文件夹里右键git bash here打开终端&#xff0c;并执行git init初始化仓库 git clone <你的地址> 找到github上要删除的仓库地址&#xff0c;并复制&#xff0c;在终端里输入git clone <你的地址> 要删除文件的库里右键git b…...

如何使用 ChatGPT 将文本转换为 PowerPoint 演示文稿

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建可二次编辑的3D应用场景 步骤 1&#xff1a;将文本转换为幻灯片演示文稿 第一步涉及指示 ChatGPT 根据给定的文本生成具有特定数量幻灯片的演示文稿。首先&#xff0c;您必须向 ChatGPT 提供要转换的文本。 使用以下提示指示…...

html(七)meta标签

一 meta标签 1、背景&#xff1a;发现自带某些请求头2、本文没有实际的生产应用场景,仅仅作为技术积累 ① meta标签含义 1、metadata: 元数据,是用于描述数据的数据,它不会显示在页面上,但是机器却可以识别2、应用场景&#xff1a; [1]、SEO搜索引擎优化[2]、定义页面使用…...

《Go 语言第一课》课程学习笔记(五)

入口函数与包初始化&#xff1a;搞清 Go 程序的执行次序 main.main 函数&#xff1a;Go 应用的入口函数 Go 语言中有一个特殊的函数&#xff1a;main 包中的 main 函数&#xff0c;也就是 main.main&#xff0c;它是所有 Go 可执行程序的用户层执行逻辑的入口函数。 Go 程序在…...

Golang 并发编程基础

runtime 包&#xff0c;定义了协程管理相关的 API runtime.Gosched() package mainimport ("fmt""runtime" )func main() {go func() {for i : 0; i < 5; i {fmt.Println(i)}}()// 让出当前CPU给其他协程runtime.Gosched()fmt.Println("end...&qu…...

代码随想录算法训练营(二叉树总结篇)

一.二叉树的种类 1.满二叉树&#xff1a;就是说每一个非叶子节点的节点都有两个子节点。 2.完全二叉树&#xff1a;此二叉树只有最后一层可能没填满&#xff0c;并且存在的叶子节点都集中在左侧&#xff01;&#xff01;&#xff01; &#xff08;满二叉树也是完全二叉树&…...

华为开源自研AI框架昇思MindSpore应用案例:基于MindSpore框架的UNet-2D案例实现

目录 一、环境准备1.进入ModelArts官网2.使用CodeLab体验Notebook实例 二、环境准备与数据读取三、模型解析Transformer基本原理Attention模块 Transformer EncoderViT模型的输入整体构建ViT 四、模型训练与推理模型训练模型验证模型推理 近些年&#xff0c;随着基于自注意&…...

Python入门【TCP建立连接的三次握手、 TCP断开连接的四次挥手、套接字编程实战、 TCP编程的实现、TCP双向持续通信】(二十七)

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱敲代码的小王&#xff0c;CSDN博客博主,Python小白 &#x1f4d5;系列专栏&#xff1a;python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 &#x1f4e7;如果文章知识点有错误…...

React笔记-React入门

主要是现在要改一个开源项目&#xff0c;需要学习下React入门&#xff0c;在此记录一下。 几个关键的库 React底层核心&#xff1a;react.development.js React操作DOM库&#xff1a;react-dom.development.js 解析ES6语法&#xff1a;babel.min.js React.createElement() …...

SD WebUI 扩展:prompt-all-in-one

sd-webui-prompt-all-in-one 是一个基于 Stable Diffusion WebUI 的扩展&#xff0c;旨在提高提示词/反向提示词输入框的使用体验。它拥有更直观、强大的输入界面功能&#xff0c;它提供了自动翻译、历史记录和收藏等功能&#xff0c;它支持多种语言&#xff0c;满足不同用户的…...

Go和Java实现中介者模式

Go和Java实现中介者模式 下面通过一个同事之间相互通信的例子来说明中介者模式的使用。 1、中介者模式 中介者模式是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类&#xff0c;该类通常处理不同类之间的 通信&#xff0c;并支持松耦合&#xff0c;使代码…...

CentOS系统环境搭建(十五)——CentOS安装Kibana

centos系统环境搭建专栏&#x1f517;点击跳转 关于Elasticsearch的安装请看CentOS系统环境搭建&#xff08;十二&#xff09;——CentOS7安装Elasticsearch。 CentOS安装Kibana 文章目录 CentOS安装Kibana1.下载2.上传3.解压4.修改kibana配置文件5.授予es用户权限6.kibana 后台…...

简单的洗牌算法

目录 前言 问题 代码展现及分析 poker类 game类 Text类 前言 洗牌算法为ArrayList具体使用的典例&#xff0c;可以很好的让我们快速熟系ArrayList的用法。如果你对ArrayList还不太了解除&#xff0c;推荐先看本博主的ArrayList的详解。 ArrayList的详解_WHabcwu的博客-CSD…...

vscode用ssh远程连接linux

1、vscode是利用ssh远程连接linux的&#xff0c;所以首先确保vscode已经安装了这两个插件 2、点击左下角的连接 3、选择Connect to Host…… 5、按格式输入 ssh 主机名ip 比如我的&#xff1a;ssh mnt192.168.198.128 6、选择第一个打开配置文件&#xff0c;确保输入正确 7、…...

chapter 3 Free electrons in solid - 3.2 量子自由电子理论对一些现象的解释

3.2 自由电子气的热容 Heat capacity of free electron gas 3.2.1 计算自由电子的热容 Calculation of Heat Capacity of free Electrons T>0K, total energy of free electrons: E ∫ E d N 3 5 N e E F 0 [ 1 5 12 π 2 ( k B T E F 0 ) 2 ] E \int EdN \frac{3}{5}…...

vue实现打印功能

在Vue应用中调用打印机功能&#xff0c;可以使用JavaScript的window.print()方法。这个方法会打开打印对话框&#xff0c;然后让我们选择打印设置并打印文档&#xff0c;但是尼这种方法依赖于浏览器的打印功能。 以下是一个简单的示例&#xff0c;演示如何在Vue组件中调用打印…...

golang—面试题大全

目录标题 sliceslice和array的区别slice扩容机制slice是否线程安全slice分配到栈上还是堆上扩容过程中是否重新写入go深拷贝发生在什么情况下&#xff1f;切片的深拷贝是怎么做的copy和左值进行初始化区别slice和map的区别 mapmap介绍map的key的类型map对象如何比较map的底层原…...

Spring、Springboot、SpringCloud--包含的知识点大全

类型难度AOPspring-自定义AOP面向切面注解--统一切面处理-登陆信息采集快速入门SpringbootAOP实现切面处理请求Demo线程池通俗易懂的线程池底层原理&#xff0c;一文知所有数据结构数据结构-链表篇数据结构--数组篇数据结构之-concurrentHashMap源码分析JVMJVM调优及各种问题处…...

Anubi基金会为何押注Cassava?深度解析Web3数据层+社交任务的黄金组合

Anubi基金会战略投资Cassava&#xff1a;Web3社交任务与数据层的价值重构 当Web3世界从DeFi的金融实验转向更广泛的社会化应用时&#xff0c;基础设施的演进正在经历一场静默的革命。Anubi基金会近期对Cassava Network的战略投资&#xff0c;揭示了两个关键趋势&#xff1a;社交…...

SerialLCD库深度解析:SerLCD v2.5串口LCD驱动实践

1. SerialLCD 库技术解析&#xff1a;面向嵌入式系统的 SparkFun SerLCD v2.5 串口 LCD 驱动深度实践 1.1 背景与工程定位 SerialLCD 是一个专为 SparkFun SerLCD v2.5 硬件模块设计的轻量级串口 LCD 控制库&#xff0c;其原始实现源自 Arduino.cc Playground 社区维护的 Ser…...

3个创新特性让开发者解决Linux存储管理难题

3个创新特性让开发者解决Linux存储管理难题 【免费下载链接】czkawka Multi functional app to find duplicates, empty folders, similar images etc. 项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka 一、诊断存储瓶颈 识别隐形存储占用 当系统提示磁盘空…...

Qwen3-4B-Thinking-GGUF开源模型:Apache-2.0协议下合规商用注意事项

Qwen3-4B-Thinking-GGUF开源模型&#xff1a;Apache-2.0协议下合规商用注意事项 1. 引言&#xff1a;当开源模型遇上商业应用 最近&#xff0c;一个名为Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF的模型在开发者圈子里引起了不小的关注。这个模型基于Qwen3-4B-Thinkin…...

PingFangSC字体:跨平台专业中文排版的终极开源解决方案

PingFangSC字体&#xff1a;跨平台专业中文排版的终极开源解决方案 【免费下载链接】PingFangSC PingFangSC字体包文件、苹果平方字体文件&#xff0c;包含ttf和woff2格式 项目地址: https://gitcode.com/gh_mirrors/pi/PingFangSC 在当今数字化时代&#xff0c;跨平台字…...

我的上课记

...

5分钟搞定电脑风扇噪音!FanControl超详细配置指南让你告别“飞机起飞“

5分钟搞定电脑风扇噪音&#xff01;FanControl超详细配置指南让你告别"飞机起飞" 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcod…...

Qwen3.5-4B-Claude-Opus-GGUF部署教程:llama-server API对接与Web前端联调

Qwen3.5-4B-Claude-Opus-GGUF部署教程&#xff1a;llama-server API对接与Web前端联调 1. 模型概述 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF是基于Qwen3.5-4B的推理蒸馏模型&#xff0c;特别强化了结构化分析、分步骤回答、代码与逻辑类问题的处理能力。该版本…...

重构macOS鼠标体验:从痛点到解决方案的技术探索

重构macOS鼠标体验&#xff1a;从痛点到解决方案的技术探索 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 【问题发现&#xff1a;被忽视的交互…...

避开Verilog数据转换的坑:ASCII码转16进制时,大小写处理你真的做对了吗?

Verilog字符转换实战&#xff1a;如何正确处理ASCII与十六进制的大小写问题 在数字系统设计中&#xff0c;数据格式转换是最基础却又最容易出错的环节之一。最近在review团队一位新成员的UART通信模块代码时&#xff0c;发现一个典型的"大小写陷阱"——当十六进制数据…...