融合剪枝与量化的目标检测网络压缩方法

2022-11-20 13:57杨国威许志旺王以忠
计算机工程与应用 2022年22期
关键词:剪枝阈值动态

杨国威,许志旺,房 臣,王以忠

天津科技大学 电子信息与自动化学院,天津 300222

近年来,目标检测网络[1-2]发展非常成熟,其较高的网络性能得益于模型参数以及深度的成倍增加。正因如此,复杂的网络模型严重限制了目标检测网络在手机等资源受限的嵌入式平台上使用。因此,如何在保证目标检测网络性能或者性能降低很少的情况下,减小网络模型存储空间,提高网络推理速度成为目前急需解决的问题。

为解决上述问题,刘勤让等[3]提出固定阈值剪枝方法,通过剪除小于固定阈值的神经元结构达到降低神经网络参数的效果,但是容易造成误剪枝,损失网络性能。靳丽蕾等[4]提出了混合剪枝方法,通过将权重剪枝和卷积核剪枝相结合剪除网络中冗余的参数,但是这种方法增大了计算量,实际剪枝操作繁琐且不能提高网络模型推理运行速度。BWN(binary-weight-networks)[5]网络通过将模型的权重参数量化到1 bit以达到压缩效果,并将权重参数乘以尺度因子,把网络模型的量化压缩问题转变成权重参数优化问题。TWNs(ternary weight networks)[6]提出将网络模型的权重参数量化到2 bit,量化值范围取(1,0,-1),这种方法虽然能够极大地压缩网络模型,但是网络检测精度损失严重。INQ(incremental network quantization)[7]提出将激活值量化成1 bit,不但将乘加操作简化成位操作,而且减少网络内存消耗,这种方法虽然加快推理速度,但是二值量化容易损失数据信息,对网络模型检测精度影响很大。Vanhoucke等[8]提出了8 bit参数量化的方法,该方法可以在准确率损失极小的同时实现大幅加速,然而此方法对网络模型的压缩效果不够明显。

综合上述研究,分别对网络模型剪枝或者量化容易使网络性能下降且压缩效果[9-10]不够明显。本文将采用融合动态阈值剪枝和均匀映射量化方法[11]对目标检测网络进行压缩实验。首先通过网络模型稀疏化训练得到缩放因子,根据缩放因子的分布计算卷积层中通道重要性的占比并,以此判断卷积层对网络模型贡献,设置动态阈值将对网络贡献小的卷积层剪除,循环计算剪枝的动态阈值实现网络模型最大程度的剪枝。其次通过均匀映射量化的方式将32位浮点型数据按照量化缩放系数Δ和零点偏移z量化成8位整型数据,减少网络存储空间,加快网络推理速度。通过融合动态阈值剪枝与均匀映射量化的压缩方法,权衡目标检测网络模型复杂度和性能之间的关系,将网络模型压缩到合适的大小,以扩展适用范围。

1 融合动态阈值剪枝和均匀映射量化的目标检测网络压缩框架

本文提出的融合动态阈值剪枝和均匀映射量化的目标检测网络压缩方法主要分为两部分。第一部分为动态阈值剪枝,通过分析网络结构并进行稀疏化训练,然后计算缩放因子分布和动态阈值,剪除低于动态阈值的卷积层,并通过知识蒸馏策略迅速恢复网络性能,循环计算每次剪枝的动态阈值实现网络模型最大程度的剪枝;第二步为均匀映射量化,计算均匀映射量化的缩放系数Δ和零点偏移量z,通过均匀映射量化方法,将32位高精度参数映射成低比特整型数据进行参数存储,并通过微调再训练的方式循环量化操作,确保网络模型被压缩到合适大小。图1为融合动态阈值剪枝与均匀映射量化的网络压缩框架示意图。

2 基于动态阈值的剪枝

对目标检测网络模型实施全局阈值剪枝方案,难以把握网络模型的剪枝比例。剪枝比例设置大,很容易对重要性大的数据信息误剪枝,损失网络模型精度且无法恢复;剪枝比例设置过小则无法达到较好的压缩效果。针对这个问题,本文提出基于动态阈值的剪枝算法,通过计算所有卷积层通道缩放因子分布确定阈值,并选取T%位置的缩放因子作为该次剪枝的阈值。根据缩放因子的分布确定动态阈值能够克服固定阈值设置过大或者过小带来的弊端。通过计算缩放因子小于阈值的通道数占据卷积层中所有通道数的比例,判断计算的该卷积层对目标检测网络模型贡献的大小,剪枝时候优先把重要度低的卷积层剪除。动态阈值剪枝流程如图2所示。

根据流程图2,基于动态阈值剪枝的步骤主要有:基础训练、稀疏化训练、动态阈值剪枝、知识蒸馏策略微调等。

(1)基础训练

目标检测网络模型基础训练精度越高,稀疏化训练效果越好。考虑到目标检测网络YOLO系列[12]原始先验框由COCO数据集训练得到,然而COCO数据集消耗庞大的计算机资源且没有针对单一物体的训练,故选取VOC数据集、行人与车辆数据集以及Hands数据集替代进行压缩实验,以增强目标检测网络模型的鲁棒性和泛化能力,更好适应目标检测场景。为了提高目标检测网络模型基础训练的精度,得到更加精确的先验框分布位置信息,采取对K-means算法[13]初始聚类中心进行计算,目的是使初始的K个聚类中心尽可能分散,以保证网络训练迭代优化和先验框分布合理。从输入点集合任选一个点作为第一个聚类中心C1,通过公式

依次计算出其他点x到P1之间的距离,并通过公式

计算样本点被选为新聚类中心的概率,并大概率选取较远点作为新的聚类中心,重复计算,直至选出K个聚类中心,并对这K个初始聚类中心运行标准K-means聚类算法。根据改进K-means算法优化这3类数据集生成的9个先验框,并将其均匀分布到3个尺度特征图中,使先验框位置得以优化,从而使得目标检测网络对于锚框[14]的回归更加精确,基础训练的网络性能更好。

(2)稀疏化训练

YOLO系列目标检测网络卷积层后普遍连接批量归一化层,且目标检测网络模型卷积层中含有大量冗余参数。因此网络模型在稀疏化训练时,利用批量归一化层中的缩放因子γ和平移因子β评估数据信息对网络模型的特征表达是否有利的特点,在网络模型训练正向传播过程中更新学习参数,并在稀疏化训练时通过式(3)进行联合训练优化。利用学习调整的缩放因子γ作为衡量网络模型卷积层中通道参数重要性的指标。利用网络模型批量归一化层中学习调整的缩放因子并进行联合训练优化的优势在于没有给网络增加额外的网络计算。如果在网络中增加缩放层,网络中的缩放因子容易发生冗余混乱,给网络压缩造成难度。

通过对L目标损失函数联合训练优化:

得出损失函数和正则项稀疏化的最优解,降低损失函数同时得到衡量卷积层通道参数重要性的缩放因子分布情况。式中第一项为网络模型训练过程中的损失函数,(x,y)代表网络模型训练过程中的输入与目标,w代表网络模型训练过程中可更新的参数。第二项f(γ)=||γ代表对网络模型中的缩放因子进行L1正则化,用于网络模型稀疏化训练,使缩放因子分布更清晰,利于剪枝,α用来平衡两个损失项,通常取值为10-4。经过稀疏化训练,对网络模型贡献小的通道缩放因子值会变小,向0靠近。

对式(3)进行联合训练优化时,缩放因子以批量归一化层公式(4)为约束:

式中,BNγ,β(xi)网络模型批量归一化的输出,γ和β为批量归一化层中缩放因子和平移因子。网络模型训练时通过式(4)对批量归一化层参数更新学习,得出缩放因子和尺度因子的线性关系,并将缩放因子输入式(3)联合训练优化。其中为规范化处理数据值,通过公式

将数据信息进行规范化处理,使数据分布更合理,更容易在网络模型训练过程中学习到有用的特征信息。其中σ2B为网络批处理数据的方差,通过公式

可计算得到批处理数据的方差值。其中μB为网络批处理数据的均值,通过式(7)可计算得:

其中输入为x,m为小批量处理的数值。初始化时令γ=1,β=0,通过对网络模型批量归一化层中表达网络模型特征的数据参数进行学习调整,将学习到的缩放因子利用式(3)进行联合训练优化,得出损失函数和正则项稀疏化的最优解,在优化损失函数同时得到用来衡量卷积层通道参数重要性的缩放因子分布情况。

(3)动态阈值剪枝

稀疏化训练后,重要性低的通道参数缩放因子值变小,通过计算卷积层中冗余参数的占比来判断卷积层对网络模型的重要性。根据缩放因子的分布计算剪枝的动态阈值,根据对网络模型的实际需求确定剪枝比例,最大程度剪除对网络模型贡献小的部分。本文提出的基于动态阈值的剪枝算法如下:

算法1基于动态阈值的剪枝算法

输入:训练集{x,y},惩罚因子α。

初始化网络参数w,缩放因子γ

While模型大小未达到要求:

epoch=1

while epoch<epochmaxdo

根据公式目标函数进行训练,更新参数w和γ

衡量整个网络卷积层中的γ,将其按照大小进行排序

end while

计算缩放因子在不同区间的分布情况,设置动态阈值T

计算卷积层中缩放因子小于阈值的通道参数的比例,并将其排序

选取排在T%位置的缩放因子的绝对值作为该次剪枝阈值Tthreshold

foriinγ:

如果||i<Tthreshold,则将i对应的冗余部分剪去

对剪枝后网络微调

输出:剪枝后的网络模型。

网络模型通过稀疏化训练计算评估通道参数重要性的缩放因子分布情况,并计算小于阈值的通道参数在卷积层中的占比,设置动态阈值T并选取排在T%位置的缩放因子值作为当次剪枝的阈值Tthreshold。多次循环剪枝操作且每次根据更新的参数以及缩放因子分布设置动态阈值,防止固定阈值导致的误剪枝,使得精度大幅度下降或者剪枝力度不够无法达到很好的压缩效果。此外,基于动态阈值的剪枝可以根据需求控制剪枝的比例,更好地权衡网络剪枝精度、网络模型大小以及剪枝后网络模型的速度之间的关系。

(4)知识蒸馏策略微调

由于剪枝前后的网络模型结构相似,剪枝后的网络模型性能略微降低,因此能够使用“老师-学生”策略的知识蒸馏[15]迅速恢复网络精度。利用动态阈值剪枝前复杂的“老师”网络模型的数据信息以及标签信息指导训练动态阈值剪枝后的简单的“学生”网络模型,使简单的“学生”网络模型的性能指标无限接近于复杂的“老师”网络模型的性能指标。本文对目标分类与位置进行知识蒸馏学习,并对目标检测位置进行回归,在老师学生边界回归公式中考虑老师网络边界回归:

式中,Lb表示复杂的“老师”网络模型边界回归损失,Rs表示简单的“学生”网络模型的回归,Rt表示复杂的“老师”网络模型的回归,m为可调阈值。公式含义为,当简单的“学生”网络的回归位置与真实位置的L2距离大于复杂的“老师”网络模型的回归位置与真实位置的L2距离,并且大于某一设定阈值时,简单的“学生”网络模型边界损失取复杂的“老师”网络模型的位置回归与真实位置之间的L2距离,否则复杂边界损失置0。通过使用新的损失公式对目标检测任务中的简单的“学生”网络模型进行位置回归,使得“学生”网络能够迅速学习到老师网络的数据信息,恢复网络的检测精度。

3 均匀映射量化压缩

均匀映射量化[16-17]目的主要是将网络模型中的权值参数从高精度转换成低精度。高精度浮点型数据使网络收敛,低比特的数据进行存储能够降低模型所需内存,提高目标检测网络模型推理速度。本文采用均匀映射量化的压缩方式,计算量化缩放系数Δ和零点偏移量z,并采用Round函数公式将高精度浮点型数据量化成低比特整型数据,并通过Clamp函数剔除部分极端数据。

首先,对目标检测网络模型输入的特征数据信息进行均匀映射量化,32位高精度浮点型数据均匀映射量化到8位低比特整型的数据范围是(0,255),如图3所示。用x表示网络模型均匀映射量化前的高精度浮点型数据,用xint表示网络模型均匀映射量化后低比特整型数据,rmax和rmin分别表示量化前浮点型数据范围内最值,作用是用来计算量化的缩放系数以及零点偏移量,Δ表示网络量化的缩放系数,通过缩小缩放系数公式(9)的数据映射的范围以减少误差:

z表示零点偏移,计算如下:

均匀映射量化时浮点型数据0会映射到零点整型数据,然而浮点数的0有特殊意义,比如padding时,浮点数据0值是参与计算的,进行8 bit量化后还是0,导致此处的信息丢失。通过零点偏移量将浮点型0值映射到整型数据范围(0,255)中,使得浮点型数据信息不丢失,量化结果更准确。

通过式(11)Round函数对高精度浮点型数据的计算结果四舍五入取整,并进行零点偏移,映射到整型数据范围。如图3所示。

将浮点型数据按照函数量化成整型数据过程中,为防止部分极端数据对量化结果造成过大偏差,使用Clamp函数将极少部分极端的数据剔除:

其中Clamp函数的计算原则如下所示:

网络模型通过对均匀映射量化后低比特的整型数据进行推理计算和参数存储,然而在网络模型的输出端需要通过量化操作的逆运算,将低比特整型数据反量化成高精度浮点型数据。反量化的输出Y计算公式为:

均匀映射量化减少网络模型的存储空间,极大提高网络模型的推理速度,有利于部署在汽车等资源受限平台使用。

4 实验设计与分析

本文主要以YOLO系列目标检测算法为例进行网络压缩实验,验证融合动态阈值的剪枝算法和均匀映射量化的目标检测网络压缩方案的可行性和有效性。

4.1 实验设置

本实验基于Darknet[18]框架以及TITAN XP型号GPU的硬件设备,CPU为E5-2640v4,Ubuntu16.04操作系统,32 GB DDR4的内存,利用YOLOv3[19]网络模型在行人与车辆数据集进行压缩实验。同时对YOLO系列[20]其他网络模型分别在Hands数据集、VCO2012数据集以及行人与车辆数据集上进行压缩实验,以验证本文提出的压缩方法的可行性和有效性。

基础训练时,网络每迭代2 000次保存一次网络模型,基础训练的超参数设置如表1所示。

表1 基础网络训练参数设置Table 1 Basic network training parameter settings

稀疏化训练时候,为了加速稀疏化训练的进程,将权重衰减率设置为10-4,为了恢复精度,分别在稀疏化训练总次数的60%和80%时,将权重衰减率变为之前的1/10。平衡损失的惩罚因子α设为10-4,稀疏化训练总共训练100轮次,对稀疏化后的网络模型计算动态阈值,利用计算的不同的动态阈值对网络模型进行不同次数的剪枝。在网络稀疏化和剪枝微调阶段,将网络模型输入图片设置为416×416,这样通过剪枝前后的网络模型的参数对比能有效地体现剪枝的作用。

4.2 基于动态阈值剪枝结果

对目标检测网络卷积层实施动态阈值剪枝时,优先剪除对网络模型贡献小的部分,根据缩放因子分布计算动态阈值下的不同剪枝次数时的剪枝结果,模型大小、参数量、mAP、参数量、FLOPs和检测速度等如表2所示。

由表2可以验证动态阈值策略下的剪枝效果。最开始为选取的基础训练中精度最高网络模型。随后是不同剪枝次数下的动态阈值剪枝效果。根据缩放因子分布计算第一次动态阈值为0.77时,网络模型的mAP从74.15%提升至74.21%,精度有所提升,网络模型从239 MB减少到26.1 MB,模型的参数量急剧减少,从6.251×107减少至6.82×106,减少到近1/9,检测速度略微有所提升。训练过程中,随着剪枝次数的增加,根据缩放因子计算的不同动态阈值下网络模型剪枝效果如表2所示。可以看出,网络模型的mAP有所下降,网络模型的大小和参数量都大大减少,经过8次动态阈值剪枝网络模型的参数量减少至2.04×106个,检测速度得到有效的提升。在实际的工业生产应用上通常可根据实际的需要进行剪枝。例如,当对精度要求较高时,选择较少次数的剪枝,此时参数量大大减少,检测速度提升不明显;当对检测速度以及模型的大小要求较高时,可以选择较多次数的剪枝。具体根据实际应用来选择。

表2 动态阈值剪枝结果Table 2 Dynamic threshold pruning results

随后使用基于“老师-学生”的微调策略对动态阈值剪枝后的目标检测网络模型进行微调,以使网络快速恢复检测精度。

从图4可以看出,目标检测网络经过压缩之后均能在保证检测性能的前提下提升检测速度,较好地实现压缩效果。

4.3 压缩前后的网络结构对比

以YOLO系列目标检测网络YOLOv3网络模型为例,经过压缩,网络在保证原有性能或者性能下降很少的情况下,减少网络中冗余的参数,图5(a)、(b)分别为YOLOv3压缩前后的网络结构对比。

通过对比图5(a)、(b)压缩前后网络结构图可以看出,经过压缩策略之后,目标检测网络的参数量仅为基础网络的3.2%,网络的“宽度”与“深度”都得到减少,网络的性能并无明显的下降,网络的速度提升了3倍以上,这使得YOLO系列目标检测网络在资源受限的嵌入式设备上的部署具有重要的意义。

4.4 融合动态阈值剪枝与均匀量化映射的效果

通过对目标检测网络进行动态阈值剪枝,参数量减少,网络结构更紧凑,网络模型检测速度大幅度提升,采用均匀映射量化测策略进一步降低网络模型存储空间,提升网络模型检测速度。表3为压缩之后的性能指标。

表3 融合动态阈值和均匀映射量化的压缩结果Table 3 Compression results combining dynamic threshold and uniform mapping quantization

由表3得知,经过动态阈值剪枝和均匀映射量化,目标检测网络模型被压缩至8 MB左右,检测速度较压缩前提升5倍左右。为验证融合动态阈值剪枝与均匀映射量化方法对目标检测网络压缩的检测效果,从测试集中选取部分图片进行测试。图6中(a)为各数据集中选取的待检测原图,(b)为压缩前的目标检测网络模型的检测效果,(c)为压缩后的目标检测网络模型检测效果。

由图6可知,压缩前的目标检测网络能够准确学习图片信息并检测物体位置。采用融合动态阈值剪枝和均匀映射量化后方法,压缩后的网络模型检测效果依然不错,位置信息以及物体同样能够准确检测出来。

4.5 YOLOv3、YOLOv4网络压缩效果

为验证本文提出的融合动态阈值与均匀映射量化对目标检测网络模型压缩方法的有效性和可行性,分别使用YOLOv3、YOLOv4网络模型对Hands数据集、行人与车辆数据集、VOC2012数据集进行压缩实验。表4为网络的压缩结果。

表4 YOLOv3和YOLOv4在三种数据集上的压缩效果Fig.4 Compression effect of YOLOv3 and YOLOv4 on three datasets

根据目标检测网络对三种数据集网络模型剪枝结果可以看出,压缩后网络模型mAP略微下降,极大地压缩了网络模型,并将网络速度提升了5倍左右。为比对压缩前后网络模型的性能变化,通过图片测试网络模型的mAP以及检测速度变化,结果如图7所示。

从图7可以看出,目标检测网络经过压缩之后均能在保证检测性能的前提下提升检测速度,较好地实现压缩效果。

5 结束语

本文针对目标检测网络模型大量冗余参数和计算量大难以应用于嵌入式设备的问题,提出了融合动态阈值剪枝和均匀映射量化的目标检测网络压缩方法。在VOC2012数据集、Hands数据集、行人与车辆数据集上分别对目标检测网络中YOLOv3-spp、YOLOv3以及YOLOv4网络模型进行模型压缩实验,实验结果显示:与原始网络相比较,网络模型缩减95%以上且速度提高5倍;优化后的网络模型由于网络层数减少,泛化学习特征的能力略微降低,mAP在不损失速度的前提下略微有所降低。本文融合动态阈值剪枝与均匀映射量化的目标检测网络压缩方法的设计流程具有较为广泛的应用,通用性强,对其他的目标检测网络例如YOLO系列等均可适用。

猜你喜欢
剪枝阈值动态
国内动态
人到晚年宜“剪枝”
国内动态
国内动态
土石坝坝体失稳破坏降水阈值的确定方法
基于小波变换阈值去噪算法的改进
基于YOLOv4-Tiny模型剪枝算法
采用红细胞沉降率和C-反应蛋白作为假体周围感染的阈值
基于激活-熵的分层迭代剪枝策略的CNN模型压缩
动态