模型轻量化加速是深度学习领域的重要研究方向,旨在减小模型的体积和计算复杂度,从而提高在资源受限设备上的运行效率,模型参数量在轻量化加速中扮演着至关重要的角色。
首先,模型参数量直接决定了模型的复杂度和存储空间需求。随着深度学习技术的不断发展,模型参数数量急剧增加,导致模型体积庞大,给存储和传输带来了巨大挑战。通过减少模型参数量,可以有效降低模型的体积,从而减小存储空间需求,使模型更容易在嵌入式设备和移动设备上部署。
其次,模型参数量对计算资源的需求有显著影响。在模型训练和推理过程中,参数量的大小直接决定了所需的计算量。减少模型参数量可以降低计算资源的消耗,提高计算效率,使得模型在资源受限设备上能够更快地完成训练和推理任务。
此外,模型参数量还影响着模型的泛化能力和鲁棒性。过多的参数可能导致模型过拟合,降低其泛化能力;而减少参数量则有助于防止过拟合,提高模型的鲁棒性。因此,在模型轻量化加速过程中,通过合理减少参数量,可以在保持模型性能的同时,实现模型的轻量化。
为了降低模型参数量,研究人员采用了多种方法,如剪枝、量化、蒸馏等。这些方法可以有效地移除模型中的冗余参数,降低模型的复杂度和存储空间需求。在剪枝过程中,研究人员会识别并移除模型中的冗余连接和权重较小的参数;在量化过程中,会将模型中的高精度参数转换为低精度参数,从而减少参数数量并降低计算复杂度;在蒸馏过程中,则会将大模型的知识转移到小模型中,使小模型在保持一定性能的同时减少参数量。
本文将从另外一个角度,即模型的结构设计方面,实现参数量的最小,并以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
通过以上模块的替换使得模型参数降低至原来的一半不到,且精度不变,这是通过剪枝、蒸馏都没办到的
注:全部源码可联系博主获取