yolov8 模型架构轻量化 | 极致降参数量

news2024/9/22 15:33:27

 

模型轻量化加速是深度学习领域的重要研究方向,旨在减小模型的体积和计算复杂度,从而提高在资源受限设备上的运行效率,模型参数量在轻量化加速中扮演着至关重要的角色。

首先,模型参数量直接决定了模型的复杂度和存储空间需求。随着深度学习技术的不断发展,模型参数数量急剧增加,导致模型体积庞大,给存储和传输带来了巨大挑战。通过减少模型参数量,可以有效降低模型的体积,从而减小存储空间需求,使模型更容易在嵌入式设备和移动设备上部署。

其次,模型参数量对计算资源的需求有显著影响。在模型训练和推理过程中,参数量的大小直接决定了所需的计算量。减少模型参数量可以降低计算资源的消耗,提高计算效率,使得模型在资源受限设备上能够更快地完成训练和推理任务。

此外,模型参数量还影响着模型的泛化能力和鲁棒性。过多的参数可能导致模型过拟合,降低其泛化能力;而减少参数量则有助于防止过拟合,提高模型的鲁棒性。因此,在模型轻量化加速过程中,通过合理减少参数量,可以在保持模型性能的同时,实现模型的轻量化。

为了降低模型参数量,研究人员采用了多种方法,如剪枝、量化、蒸馏等。这些方法可以有效地移除模型中的冗余参数,降低模型的复杂度和存储空间需求。在剪枝过程中,研究人员会识别并移除模型中的冗余连接和权重较小的参数;在量化过程中,会将模型中的高精度参数转换为低精度参数,从而减少参数数量并降低计算复杂度;在蒸馏过程中,则会将大模型的知识转移到小模型中,使小模型在保持一定性能的同时减少参数量。

本文将从另外一个角度,即模型的结构设计方面,实现参数量的最小,并以YOLOV8为例子,通过模型结构的轻量化设计,在保证模型性能稳定不变的前提下极致的压缩参数量

一、设计思路

从模型结构看V8主要有两个大的模块构成,就是backbone和head模块,因此降低参数量我们就从这两模块开始

二、bakebone模块轻量化参数

1.CSPPC替换c2f卷积块

                                                       CSPPC模块

论文地址:https://arxiv.org/pdf/2303.03667.pdf

如上图,其中利用了PConv模块大量降低参数量

其中

PConv(部分卷积)的基本原理是利用特征图的冗余,从而减少计算和内存访问。具体来说,PConv 只在输入通道的一部分上应用常规卷积进行空间特征提取,而保留剩余通道不变。这种设计的优势在于:
1.减少计算复杂度:PConv 通过在较少的通道上进行计算,降低了浮点操作(FLOPs)的数量。例如,如果部分率设置为 1/4,则PConv的计算量只有常规卷积的 1/16.
2.降低内存访问:与常规卷积相比,PConv减少了内存访问量,这对于输入输出(/0)受限的设备尤其有益
3.保持特征信息流:尽管只对输入通道的一部分进行计算,但保留的通道在后续的逐点卷积(PWConv)层中仍然有用,允许特征信息在所有通道中流动

2.Down_wt替换backbone下采样模块

                                                ADown模块

上图是ADown,其是在202402021最新发布的yolov9模型结构中提出的

检测头轻量化参数

论文地址:https://arxiv.org/pdf/2306.15988.pdf

主要改进机制:
1.底层特征融合: AFPN通过引入底层特征的逐步融合,首先融合底层特征,接着深层特征,最后整合顶层特征。这种层级融合的方式有助于更好地利用不同层次的语义信息,提高检测性能。
2,自适应空间融合;引入自适应空间融合机制(ASFF),在多级特征融合过程中引入变化的空间权重,加强关键级别的重要性,同时抑制来自不同对象的矛盾信息的影响。这有助于提高检测性能,尤其在处理矛盾信息时更为有效。
3.底层特征对齐: AFPN采用渐近融合的思想,使得不同层次的特征在融合过程中逐渐接近,减小它们之间的语义差距。通过底层特征的
逐步整合,提高了特征融合的效果,使得模型更能理解和利用不同层次的信息。个人总结:AFPN的灵感就像是搭积木一样,它不是一下子把所有的积木都放到一起,而是逐步地将不同层次的积木慢慢整合在一起。这样一来,我们可以更好地理解和利用每一层次的积木,从而构建一个更牢固的目标检测系统。同时,引入了一种智能的机制,能够根据不同情况调整注意力,更好地处理矛盾信息。

模型结构轻量化参数对比

原yolov8参数:3011043

轻量化后参数:1436977

通过以上模块的替换使得模型参数降低至原来的一半不到,且精度不变,这是通过剪枝、蒸馏都没办到的

注:全部源码可联系博主获取

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

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

相关文章

西南大学计算机考研,选学硕还是专硕?西南大学计算机考研考情分析!

西南大学(Southwest University)是教育部直属,教育部、农业农村部、重庆市共建的重点综合大学,是国家首批"双一流"建设高校,"211工程"和"985工程优势学科创新平台"建设高校。现任党委书…

JVM学习-虚拟机栈

虚拟机栈 每个线程创建时都会创建一个虚拟机栈,其内部保存一个个栈帧,对应一次次Java方法调用,栈是线程私有的。 生命周期: 与线程相同 作用 主管Java程序的运行,它保存方法的局部变量、部分结果、并参与方法的调用和返回。 …

【Linux】系统登录,调用shell,shell配置文件,shell命令,特殊符号,shell快捷键,Linux运行级别,解决无限登录问题,修改提示符

目录 Linux系统的登录方式 以及 调用shell Linux shell 以及 shell配置文件 shell 命令 shell 特殊符号 shell 快捷键 Linux操作系统运行级别 单用户模式下解决无限登录问题 centos7修改命令行提示符 PS1 补充、centos7没有滚动条 Linux系统的登录方式 以及 调用shell…

怎样让猫给啥吃啥?生骨肉冻干拌粮哪有猫咪不吃的!

随着科学养猫的普及,生骨肉冻干喂养越来越受欢迎,生骨肉冻干喂养对猫的好处很多,它符合猫咪的天性,可以提供全面的营养,保持牙齿和牙龈的健康,还有助于维持健康的消化系统。然而,许多猫主人在选…

构建智能化不动产管理系统:数字化引领未来房地产行业发展

随着城市化进程的不断推进和房地产市场的持续发展,不动产管理系统的重要性日益凸显。在这一背景下,构建智能化不动产管理系统成为推动房地产行业数字化转型的关键举措。本文将深入探讨智能化不动产管理系统的构建与优势,助力房地产企业把握数…

深入剖析Tomcat(八) 载入器与打破双亲委派机制的自定义类加载器

写这篇文章让我头大了好几天,书中描述的内容倒是不多,可能也是那会Tomcat的现状。如今Tomcat发展了好多代,加上springboot的广泛应用,导致现在的类加载的步骤和Tomcat资料中描述的大相径庭。可能也是由于微服务的发展,…

Linux 第三十四章

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C,linux 🔥座右铭:“不要等到什么都没有了…

五丰黎红引领新营销模式:布局一物一码数字化营销,提高调味品销量和复购率

调味品行业的销售渠道主要有餐饮、家庭消费和食品加工,按销售额的占比约为6:3:1,餐饮行业是调味品行业的供需主力。在餐饮行业中,“大厨”这一角色具有十分重要的地位。因此,借助大厨的力量成为了许多调味品…

HCIP【VLAN综合实验】

目录 一、实验拓扑图: 二、实验要求: 三、实验思路: 四、实验步骤: 1、在交换机SW1,SW2,SW3配置VLAN和各个接口对应类型的配置 2、在路由器上面配置DHCP服务 一、实验拓扑图: 二、实验要求: 1、PC1 …

MT2057 门票

思路: 此题是求有多少个区间的平均值>t, 那么可以把每个值-t。如果新的数列的某个区间的和>0,那么说明这个区间满足条件。 令新数列的前缀和为b[i],所以求[i, j]区间是否满足条件,即求b[j]-b[i-1]是否>0&am…

基于SSM的婚恋网站的设计与实现(有报告)。Javaee项目。ssm项目。

演示视频: 基于SSM的婚恋网站的设计与实现(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spri…

SpringBoot上传文件到服务器(跨服务器上传)

目录 (一)上传文件到本地(windows) (二)上传文件到linux服务器 (三)跨服务器上传文件 (一)上传文件到本地(windows) 1.新建一个文件…

程序员兼职引起的纠纷?

最近跟朋友聊天,说遇到一些因兼职工作而引发的争议,因为我本人也曾涉足过兼职领域,因此对程序员兼职时可能遇到的各种情况和应遵循的“套路”准则还有有一些发言权的,所以想和大家聊聊如何安全“兼职”的1/2事项~ ✅顺便内推个机会…

什么是用户画像?用户画像的作用是什么?

首先我们来说下什么是用户画像? 用户画像是指对目标用户进行详细描述和分类的方法。 它是根据用户的个人特征、行为习惯、兴趣爱好、消费习惯等信息进行分析和总结,以便更好地了解用户需求和行为模式。用户画像可以帮助企业或组织更好地了解他们的目标…

Nacos+GateWay 搭建微服务架构

文章目录 1.当前项目架构分析1.请求多个模块的方式1.请求renren-fast模块开发环境生产环境 2.请求sunliving-commodity模块1.使用环境变量资源路径的方式2.开发环境 dev.env.js3.生产环境 prod.env.js 3.文件上传请求 sunliving-service模块1.请求后端接口(开发环境…

对于接口的安全性测试,这几点你掌握了吗?

接口防刷 1.为什么会有人要刷接口? 牟利:黄牛在 12306 网上抢票再倒卖。 恶意攻击竞争对手:如短信接口被请求一次,会触发几分钱的运营商费用,当量级大了也很可观。 压测:用apache bench 做压力测试。 …

Wiley数据库文献哪里比较全?去哪里下载比较高效

Wiley出版社1807年创建于美国,是一家具有超过200年历史的全球知名的出版机构,面向专业人士、科研人员、教育工作者、学生、终身学习者提供必需的知识和服务。 Wiley及旗下的子品牌出版了超过500位诺贝尔奖得主的作品。Wiley Online Library为全学科期刊全…

std::remove-----std::remove_if

std::remove和std::remove_if 是 C11 标准库中的一个算法函数. std::remove 作用 遍历一遍容器,将容器中所有不是指定元素的元素往前复制。 总之就是一句话: 把不该删除的移动到前面,后面的就是应该删除的。 注意: 1&#…

postgreSQL安装配置

安装 在ubuntu界面执行 sudo apt install postgresql安装完成后,切换到postgres (安装过程中自动创建) sudo su - postgres#然后执行psql,进入数据库 psql创建数据库用户 在数据库中执行create命令创建用户,并带有…

C++调用有依赖库的python函数(VS2017+WIN10+Anaconda虚拟环境)

情况1.在写的函数中依赖了能够pip的库,例如numpy库、torch库,见下面的函数: import numpy as np import torch def add1(a, b):# 确保a和b都是NumPy数组a_array np.array(a) if not isinstance(a, np.ndarray) else ab_array np.array(b) if not isins…