摘要:针对YOLO系列算法参数量大、算法复杂度咼提出一种基于BN(batchnormalization)层■枝方法。该方法先通过对BN层的缩放系数7以及平移系数0添加正则化约束训练,根据BN层参数以及卷积层各通道对网络贡献度等指标设定合适阈值进行剪枝。该方法在基本没有精度损失的前提下对YOLOv4Tiny模型压缩11倍,计算量减少72%,在CPU和GPU处理器下推理速度分别增快44%和29%。实验结果表明,该剪枝方法能保持模型良好性能的前提下压缩模型,减少参数,降低算法复杂度。
关键词:深度学习;卷积神经网络;YOLOv4Tiny;YOLOv3Tiny;模型剪枝;稀疏训练
曹远杰;高瑜翔;刘海波;吴美霖;涂雅培;夏朝禹成都信息工程大学学报2021-12-13
0引言
随着计算机视觉的发展,对深度学习网络性能要求提高,出现许多优秀的深层神经网络模型[13],如VGGNet、GoogleNet、ResNet、DenseNet等。伴随性能提高的同时,网络层数也在不断增加。这些网络都因为算法复杂度太高难以在嵌人式平台等资源较少的设备应用。针对网络模型太大、参数量太多、算法计算量(FLOPs)大等问题,出现许多解决方案。如SqueezeNet网络,网络米用squeeze和expand两部分,squeeze部分由1x1的卷积组成,expand部分是将1x1和3x3两种层的输出特征图进行合并(<:on<:at);Mo-bileNets网络,网络主要采用深度可分离卷积[45]替代传统卷积。深度可分离卷积由通道卷积和点卷积组成,相较于传统卷积在卷积核越大的情况下能降低更多的参数量和计算量。轻量化模型在不同的处理器上展示性能也不同,由于采用深度可分离网络会增加模型访存量,也会降低模型性能。
深度学习网络模型有很大一部分参数对结果没有影响W,为压缩深度学习模型,除设计轻量级结构以外还可以对模型进行剪枝[7],通过对每个卷积层进行结果贡献度排序,减去冗余的通道,可以有效地压缩模型,降低计算量。文献[8]提出对网络迭代剪枝,获得一个精简模型,最终在没有精度损失前提下AlexNet参数量减少9倍。有研究者提出不需要稀疏卷积库的支持,直接对权重大小排序进行剪枝。模型中加人稀疏约束项可以使卷积中的部分参数趋近于0,获得稀疏权值m。姚巍巍等[1°]提出针对BN层7参数添加L1正则化稀疏约束,大部分的神经元输出为0,通过对这些不重要神经元进行修剪来迭代优化网络。
基于以上方法,针对Y0L0v4-Tiny模型提出一种更精确的剪枝方法完成轻量化模型设计。该方法在BN层参数7和0添加L1正则化约束,然后对每个通道权值的绝对值均值大小排序,根据每个通道权重绝对值的均值、y/Ja^+e和jB-iJbpj/Jal+e这3个值判断是否满足剪枝条件。该方法无疑比单纯判断7系数或者卷积层大小更可靠。模型剪掉大量参数后精度会下降,微调后即可恢复精度。
1YOLOv4-Tiny
YOLO(youonlylookonce)算法[ll]是典型的目标检测onestage方法,将预测和分类通过一个网络直接得出结果,特点就是推理速度很快,检测效率高。2020年提出了YOLOv4[l2]和Y0L0v4-Tiny两种目标检测算法。Y0L0v4-Tiny相较于Y0L0v3-Tiny算法结构更复杂,但精度有小提升,并用参数更少。与Y0L0v3-Tiny类似,输出两种尺度大小的特征图[13]。Y0L0v4-Tiny在结构上采用CSP结构作为主干网络,该结构将第一个卷积的一半特征图用于结构内卷积使用,最终再进行合并(concat)操作。Y0L0v4-Tiny网络结构图1所刀、
2YOLOv4-Tiny的稀疏化剪枝
针对深度学习网络模型余参数过多导致算法复杂度就推理速度慢等何氣先阐述模型的稀疏训练原理,苒对稀疏后的权重和—层进行大小排序,通过设定的阈值进行剪枝完成YOLCM-Tiny賺量化模型册a
2.1稀疏化训练
主要通过对BN层添加L1正则化约料丽■参数稀疏化。lommlizationW—GTOgte提出的一种训练技巧,在模型训练时将BN层加人每个卷积后,可解决钏练收敛慢等问题,还在一定程度上控制梯度爆炸。假设卷积层输出为尤,则经过丽层后输出为4其片,为BN层输出,y为BN层缩放系数,/S为乎移系数?和4为均值和方差,为常数,Y0LO4-Tiny算法中一般取值为0.001。Leskyilelu层的输出为=LeakyRelu?X+/3-^其中3Wu为瀲活层输出,为激活函数。(2)当激洁函数内的值趋近于0时可以看作输出为0,对后面的卷积没有甩。基于UakyRdu激活函数,根据式(2),当蠢数b=y/Jcr^+s和b=P-i^y/njcr^+s较小时,通过澈活函数后输出对网络貢献非常小,可以将其剪掉。由于均值,方差?和6都为定值,所以只霉襄判断7和召两个参数足够小即可。为方便判断,对BN层y和召参数都进行L1疋则化约束uL1范数公式为/2(0)=i0,,(3)L1范数是求各元素绝对值之和,假设目标函数为其中,J为原目标函数为添加L1疋则化约東后的目标函数,0秀参数,2■为输人,J?为标靈,a为正测化系数,隹制约束力度。由式(4)可知,比较大时,粟使/尽可能小向〇趋近,_此L1正则化约束可以将参数稀疏化。对BN层添加U正则化约束宕,参数a=y/V〇>5和参数厶=/3-/^y/Vcr|+及稀疏度如图2所示。
图2是采用a为0.0001时稀疏训练后的第15个BN?参数频数直方图,由于15层参数较多,比较直观,更具普麗性a由图2可知,添加L1正则化约束后的参数有大部分参数都趋近f〇,可以将大部分的冗余通道剪去。嚭过实验验证,由于采用a=0.001训练后精度下降比较大,故采用a=0.0001进行稀疏训练,训练后精度还提升了0.1个百分点。
2.2剪枝和优化
模型的BN层通过稀疏化后对参数n和6进行大小排序,假设其中参数“的集合为4=U,,a2,,…,%i,愈数6的集合为iH…Ah将卷积层的每层通道的权值助绝对值求和取平均后得到集;合Fiw,,?2,a>s…|Q第一层,的频数分_直方'鹰如图3所示,第一层参数较少。
由囿3可知,稀疏训练、后各通道均值差别较大。F集合中可以.剪掉的通道比普通逋道均值小了约1〇7倍:a假设输入A为1,权值、a和fr参数郁为3E:|,(%XM,X£+6,)可以粗略地看作第;:层BNs的输出特征图,此处五为和输出特征B太小一#的全1矩阵。r集合各元素取均值为必,涵由于通道均值差别太的原因向0趋近,当a,<品且6,小于一个很小的数时,可以判別为第(层输出对结果贡献小。判另拭为(Ia-1<(Tp+sB的参数jf|层,为第的意思上与为&&的倒数遣大小各通,此处设的数小很设为一个率枝剪节调以用常数F均值再取均值;A-和,也就是各通道均值的f有权值该层卷积层Iffi^crl+y丨层参数f:层为-第,I,akf)<(bkx>
如式【2)所示,BN层周是在做线性运算,剪枝后即可将BN層融入到卷积层当中以减少箅法访存暈,加快推理速度。假设第i层权重为
3实验结果及分析
为验证该剪枝算法,实验在YOL〇v4-Tiny和YOLOd-Tiny以及采用GhostNet_构所构造__量馨网络(YOLO-Ghoglet)1115]3种鏡虐进行自ft靡滅^
3.1实验平台和数据
由于硬件设备有限,虞验均采用10097张饮料数据:氣数据集包含4个种类,分别为可乐、绿茶、雪_、王老吉,每个种类太约2500张。其中测试集908张,训练集8281张9实验软件平台为PyGliami,训练与验证框架为KerasTemwrfbwl.13-GPU?CPU处理器下进行。硬件乎台为CPU(AMDR_en53500X),GPU(这DQ0606〇,16(J_(3600MHz):。训练均采用B_h§fce=4。
3.2实验结果及分析
根据式(5),当A=1时,Y0L0v4-Tiny剪枝前后各卷积层对比如表1所示。
比较大,不同慕拫据冗余通道的多少剪枝率也不相同,整体剪枝率达到91%。其中舉3、7、11层卷积为如围4所示的CSP块中黄色部分的第一个卷积层,该层分为了两步第一歩是将卷积层的后半部分通道进行下^步卷积,如图4黄色解析部分的上_一条卷积路线。第二杳是将所有通道进行卷积,如图4黄色解析部分的下面一条卷积路线。最终将两条路线输出的特征图进行合并
CSP结构中的黄色部分解析如图4中下商黄色部分所葙。对该层剪枝后分布会变椿不均勻,所以剪枝后不能再将第一个卷积的一半遒道进行后面卷积了。根据每层剪枝通道的不同,分出的通道也不一样。如第三个卷积震.剪枝爵试有42个输出通道,如果分一半通道进行國4所示的第一步卷积,那将会破坏之前训练的结构。根据剪枝通道编醫可知,第三个卷积层的前半部分剪15个通道,后半部分剪7个通道。因此,第三个卷积暴只分出后调的25个通道迸行第一步卷积。
Y_v3-Ti坤和YOL〇v4-Tiiiy及以讲0義t春积模_所构建的植量攀(YQLO-Ghostlet)模型:通过稀疏训练和稀疏训练后通过该剪枝方法后在饮料数据集下各项数据对比如表2所示。
泰2中以Lle4开头晕代表以a=0.0001的正则化系数进行稀疏训练的模型,以-P结尾为剪枝后的模型。BNtnefget代表该震靡将丽层进行合并qY0L0v3-Tinj?是采用YQL〇v4-Tiny的损失.函数所训练,所以精度有提升。据表2,输人圮寸均采用416X416,可以看到f0L0\?4 ̄Tiiif菌枝唇在精度方面相对于Lle4_Y0LCH4-tiny模型值降低了0.01个百分点,剪枝率达91%,计算量只翁原乘的28#LCPU推理速度加快44资,在GPU环機下推理速度加快29%。Y0L0v3-TiHf和YQLO-Gh?StNet两种模型体?^别较大,这也与模型冗余通道的多少有衾。在稀疏训编后通过读剪枝算法剪枝率分别为96%和36%,精度损失都在0.05%.以内。3种模型在稀疏训练后通过该剪枝算法都能维持.原有性能的基础上降低算法复杂度和参数優,加快模型推理速度&
4结束语
所提出剪梭蠶法在不同模灘翦枝效果和剪枝率拫据模型冗余通道.的多少也会不同.,通过对爾层参数添加正则化约束训练后再迸行剪枝可减去大童参数的同时保持精度&该剪校算法可以配合设计轻量辍结构的模型进行使甩,在保持精度不降低的前提下可以,吏大程度地轻量化模型?在以Gh〇sNet所设计的YOLCM-Tiny的箨量级模fl进行剪枝后模型尺f哥降低至1.43Mb,推理速度在不苘处理器下可提高29%-57%,,可更好完成轻養化模型设计s