张江永,徐智勇,张建林,许 涛
(1.中国科学院光电技术研究所,成都 610209;2.中国科学院大学 电子电气与通信工程学院,北京 100049;3.中国船舶工业系统工程研究院,北京 100036)
自从2012 年AlexNet 问世以来,深度卷积神经网络(Convolutional Neural Network,CNN)在图像处理和自然语言处理等任务中取得了重要成果。为增强卷积神经网络的非线性拟合能力,网络通常被设计得更宽和更深,并且需要大量的存储空间和计算资源,导致其不适用于算力有限的硬件设备。因此,针对大型卷积神经网络进行压缩,在确保精度损失较少的前提下,设计占用存储量、前向推理计算量和能源消耗量均减少的轻量化网络模型就显得十分重要,而轻量化方法主要包括剪枝[1-2]、低秩分解[3]、量化[4]、知识蒸馏[5-6]等。由于卷积神经网络中包含卷积层和全连接层等人为设定的训练参数模块,这种凭借经验通过重复实验得到的局部最优超参数不能代表网络的实际需求。根据深度卷积神经网络的新双U 型偏差-方差风险曲线[6]可知,在不考虑资源限制的条件下,参数越多、模型越复杂的网络性能表现越好,但是过多参数的复杂模型没有权衡成本和性能间的关系并且模型存在冗余。剪枝的目的是通过剪除网络中冗余的模块,从过参数化的复杂模型中得到参数较少的轻量化模型,该模型处于双U 型曲线的第一极小值点。
剪枝按照粒度的粗细可以分为非结构化剪枝和结构化剪枝两种。非结构化剪枝主要是对权重进行修剪,LECUN 等[7]通过删除目标函数的参数二阶导较小的神经元以稀疏权重,HAN 等[8]提出基于参数值的剪枝方法去除冗余权重,GUO 等[9]提出动态网络剪枝方法,可恢复已被剪掉的重要神经元,避免了错误修剪导致的精度损失。结构化剪枝由于内部非规整的连接,需要依赖专门运行库和硬件设备,因此卷积核(指三维卷积核,即滤波器)层面的结构化剪枝更受青睐。在卷积核粒度层面的结构化剪枝中,一旦某个卷积核或者通道被视为不重要,则会被整个移除,因此需要得到整个卷积核或者通道的重要性。LI 等[10]将卷积核权重的L1 范数值作为得分判断卷积核的重要性。HU 等[11]通过计算卷积核权重的稀疏程度,得出越稀疏的核越不重要的结论。WANG 等[12]利用Group Lasso 得到稀疏化的卷积核,以便于进一步剪枝。YE 等[13]对“较小范数不重要”准则进行重新思考,认为较小的范数可能是对信息的补充。
除了从参数层面评估卷积核的重要性以外,还有基于特征重建的剪枝方式,通过最小化重建误差获取轻量化模型。LUO 等[14]使用贪心算法,在每一层的卷积核中寻找合适的子集代替原有的集合,如果可以得到类似于原来的特征,则可去除子集外的卷积核。ZHUANG 等[15]在fine-tuning 和剪枝阶段引入鉴别力感知的辅助损失,增强剪枝后所保留特征的鉴别能力。HE 等[16]认为位于或者接近几何中位数的卷积核是冗余的,可以用边缘的剩余卷积核代替。LIU 等[17]提出网络轻量化方法,通过在训练过程中将BN 层的缩放因子的稀疏性损失加入网络本身的损失函数中,使网络在训练时自主稀疏缩放因子,基于缩放因子的大小决定卷积核是否删减,但如果层之间的稀疏不均匀,则会导致网络中的层间卷积核个数不均匀。本文提出针对YOLO 网络的基于敏感度的集成剪枝算法,利用稀疏缩放因子方式稀疏YOLO 网络中卷积核个数较多的层,综合3 种参数重要性评价方法对卷积核做重要性排序,通过网络中每个剪枝层对精度下降的敏感度确定剪枝比率。
结构化剪枝可表示为如下形式:
其中:L是网络损失函数;D是预测值和真实值的差;W是卷积核的权重参数;λ是平衡剪枝比率和损失的系数。剪枝的目标为在减少卷积核数目的前提下,尽量使损失函数最小化。本文采用结构化剪枝,剪去重要性低的卷积核,并通过fine-tuning 得到具有较高网络精度的精简模型。YOLO 网络剪枝流程如图1 所示。
图1 YOLO 网络剪枝流程Fig.1 Procedure of YOLO network pruning
YOLOv3[18]采用darknet-53 的backbone,同时借鉴ResNet[19]的残差结构,采 用5 个残差单元(共53 个卷积层)进行5 次降采样。在输入到yolo 层之前,为避免深层特征提取的信息不足以判断类别,采用concat 的方式进行特征叠加,提高识别精度。由于残差结构连接了不同层,如果剪除残差结构中某一层的卷积核,在进行剪枝时要维持输入输出的维度一致,需要对与其连接的所有层进行对应个数的卷积核剪除。为避免这一问题,在对YOLOv3 进行剪枝时,仅对残差块中间的卷积层(共42 个卷积层)进行卷积核筛选。YOLOv3 残差结构如图2所示。
图2 YOLOv3 残差结构Fig.2 Residual structure in YOLOv3
YOLOv3-tiny 采用简单的直筒式结构,为达到更快的检测速度,剪除了一些特征层和残差层,只采用2 个yolo 层检测不同尺度。YOLOv3-tiny 网络共23 层,其中可剪枝的卷积层共10 个,其余的是pooling 层和yolo 层前的卷积层。
1.2.1 冗余层稀疏
根据文献[20]研究,近些年来被提出的一些参数重要性评价方法有很强的相似性,依据的参数都近似符合类似高斯分布。如果按照这些准则进行剪枝,可以得到近似的卷积核重要性排序,但是当某一卷积层存在过多的卷积核时,网络训练会导致卷积层形成特殊的空间几何结构,参数重要性评价方法不能有效区分卷积核重要性。YOLOv3 网络中的卷积核个数相差较大,可剪枝层中最少的层有32 个卷积核,最多的层有1 024 个卷积核。YOLOv3-Tiny 网络中最少的层只有16 个卷积核。面对卷积核个数差异巨大的剪枝层,通过稀疏缩放因子方法可以解决上述问题。BN 层[21]的作用是使每一层的激活输入值在训练时保持相同分布,避免内部协变量偏移问题,使得激活输入值始终处于敏感区,远离导数饱和区,解决了反向传播的梯度消失问题。
卷积层对输入特征图的处理如下:
其中:u是输入值;B是偏置。
对x进行正则化,使其符合标准正态分布:
其中:μζ和σζ代表输入x的小批次的均值 和方差;ε是一个极小值。符合标准正态分布,使用式(4)保证非线性,而sscale和sshift是网络中的可学习参数,根据不同的实例将标准正态分布进行尺度变换和平移:
稀疏缩放因子方法针对的是网络中BN 层的sscale参数,通过对缩放因子L1 正则化将其不断向0推进,因此与接近0 的缩放因子一一对应的卷积核对网络性能的贡献较小,可以将其剪除而不会导致过多的精度损失。
在训练过程中,对缩放因子进行稀疏性正则化处理:
其中:W是卷积核矩阵;x和y是输入和标签;g(γ)=|γ|是稀疏诱导惩罚函数,λ将原始损失和进行稀疏平衡。
通过对卷积核多的层(实验中选择512和1 024个卷积核的层)稀疏训练得到稀疏化模型,此时参数重要性评价方法可以判断卷积核重要性,再使用集成剪枝算法进行剪枝。
1.2.2 参数重要性评价方法
为避免一种参数重要性评价方法对于YOLO 网络的卷积核重要性判断存在片面性,本文采用结合L1 范数、激活值和梯度3 种参数重要性评价方法的集成剪枝算法。首先分析上述3 种参数重要性评价方法的剪枝原理,说明根据每种评价方法的剪枝合理性,然后比较基于3 种参数重要性评价方法的剪枝算法和集成剪枝算法的剪枝效果,以展示集成剪枝在YOLO 网络上的优越性。集成剪枝算法同时采用3 种评价方法得到的3 个卷积核排序,三者之间没有优先级关系。
1)L1 范数。将卷积核的权重的绝对值相加得到L1 范数‖Wi,j‖1,然后将所有卷积核的L1 范数进行排序,由于在网络训练过程中不重要的神经元在优化时权重会逐渐趋近于0,因此权重的绝对值较小的卷积核对于最终结果的影响是相应较小的,可在剪枝过程中对其进行剪除。
2)激活值。在网络训练过程中,为能够分辨不同特征的重要性,会尽可能保留对于判定类别有重要影响的特征,其他特征则被视为噪声尽量剪除。这一行为体现在卷积后激活得到的特征图上,重要的特征对应的是高响应值,其他特征对应的是低响应值,因此根据激活值大小对卷积神经网络进行剪枝。
3)梯度。卷积神经网络通过反向传播进行参数优化,在训练过程中根据式(6)更新参数。SUN 等[22]提出的meProp 方法仅更新梯度最大的k个神经元,由于一些梯度为0 的神经元会加速反向传播,梯度大小与神经元的重要性是相关的,因此仅保留梯度大的卷积核。
图3 是YOLOv3 网络预训练后第41 层和稀疏训练后第76 层的3 种参数的分布情况,选用这两层是因为它们的参数分布在稀疏前后更具代表性。L1范数、激活值和梯度在稀疏前都是类似正态分布,稀疏后的参数中心较为靠近0。稀疏前的参数差异是明显存在的,可以根据分布将正态分布中心前的一部分卷积核剪除,因为这些卷积核的3 种参数值都较小,而稀疏后的参数差异更明显,可以将靠近0 的参数代表的卷积核剪除。
图3 3 种参数稀疏前后的分布情况Fig.3 Distribution of three parameters before and after sparse
通过比较集成剪枝算法和基于L1 范数重要性评价方法的剪枝算法(简称为基于L1 范数的剪枝算法)、基于激活值重要性评价方法的剪枝算法(简称为基于激活值的剪枝算法)、基于梯度重要性评价方法的剪枝算法(简称为基于梯度的剪枝算法)的剪枝效果,验证集成剪枝算法的优越性。选择YOLOv3-tiny 网络进行实验,对网络每一剪枝层的卷积核按照上述4 种重要性评价方法排序后剪枝50%,得到同等结构的不同剪枝策略下的精简模型,并且各自微调100 代后得到100 组微调的平均精度均值(mean Average Precision,mAP)数据,拟合后的曲线如图4 所示。可以看出,利用基于3 种单一参数重要性评价方法的剪枝算法得到的精简模型在训练时的曲线比较接近,说明它们的剪枝效果十分接近,而集合剪枝算法得到的曲线在训练5 代以后一直处于前3 种算法训练曲线的上方,表明集成剪枝算法的剪枝效果优于基于单一重要性评价方法的剪枝算法。
图4 4 种剪枝算法的剪枝效果比较Fig.4 Comparison of pruning effect of four pruning algorithms
4 种集成剪枝算法的检测精度如表1 所示。
表1 4 种剪枝算法的检测精度比较Table 1 Comparison of detection accuracy of four pruning algorithms
为加快训练速度,在训练过程中采用的置信度阈值为0.1,以减少检测框的数量。在测试训练的最后一代时采用的置信度阈值为0.001,因此mAP 在最后一代会有一个向上的跳变(在图4 中采用的是前99 代的数据拟合曲线,未体现出该跳变),最终集成剪枝算法得到的模型检测精度最高。
1.2.3 集成剪枝的参数重要性评价方法
每种参数重要性评价方法都考虑每层的所有卷积核的不同参数,如果要根据某一参数对卷积核做筛选,需要计算每个卷积核对应参数的值,然后将同一层卷积核的该参数的对应值做排序。为使网络精度损失最小,需要剪除排序靠后的部分卷积核,即不重要的卷积核。
在同一层中,不同卷积核对该层在网络整体性能中的贡献是不同的,不同的参数重要性评价方法对同一卷积核在该层的排序也是不同的,因此不同的参数重要性评价方法剪枝后得到的精简模型有所差别。在理想情况下,为能够使不同的参数重要性评价方法相结合,将其写成一个数学表达式的形式,但是本文采用的L1 范数、梯度和激活值3 种参数之间的数值差可能有好几个数量级,而且在数值空间上的分布也不一致,因此单纯采用相加、相乘等方式得到的排序剪枝的效果可能还不如单一参数重要性评价方法。
由于每种参数重要性评价方法都能够得到每一层卷积核的重要性排序,因此将该排序当作新的评价参数,此时每一个剪枝层都有3 组排序,把3 组排序相加即可得到一组新的卷积核重要性排序。这组新的排序集成了3 种方法对每一个卷积核的重要性判断,相比单一方法得到的判断更全面,可以得到更接近最优解的卷积核保留集合,减少了单一参数重要性评价方法的片面性。图4 的实验结果也证实了集成剪枝算法得到的精简模型微调后的检测精度优于基于单一参数重要性评价方法的剪枝算法。
假设对第L层(共m个卷积核)进行剪枝,卷积核权重集合为(图5 中省略了卷积层参数l 和上标0,其中0 表示卷积核原始权重)。从训练集中随机选择256 张图片得到网络可剪枝层的每个卷积核的平均L1 范数、该层的每个卷积核的平均激活值以及反向传播时的平均梯度(取绝对值的平均值),对该层所有卷积核按照3 种方法对应的值分别进行从大到小的排序,得到每一个卷积核在序列中的对应位置,然后将每个卷积核的3个序号对应相加作为最终的重要性得分,据此去除得分低的m-n个卷积核得到新的权重集合,n 图5 集成剪枝的卷积核选择过程Fig.5 Convolution kernel selection process of integrated pruning 在剪枝实验时需要对多个层进行剪枝,上述方法针对的是单层的卷积核排序,因此需要根据总体剪枝比率确定每一层的剪枝比率,在这种情况下需要考虑多层剪枝时的精度损失均衡问题,以避免对某一层剪枝比率过大出现短板效应,导致精度损失严重,finetuning 后精度恢复达不到理想效果。为解决这一问题,在所有层的重要性排序完成后,首先用验证集测试网络原始精度,然后从第一个待剪枝的层开始,剪除重要性较低的60%的卷积核(将BN的缩放因子设置为0),对验证集测试得到新的精度,根据得到精度差值,再除以该层60%的卷积核个数近似得到这些卷积核对网络精度造成的平均损失对其他待剪枝层执行相同的操作得到每层对网络精度造成的平均损失的集合,将该层每个卷积核的平均损失精度称为该层的剪枝敏感度。 首先根据平均损失集合和需要剪除的卷积核总数,求解式(7)得到每一层剪除的卷积核个数,其中式(7)的矩阵表示为式(8);然后执行剪枝操作,按照得到的剪枝数量逐层进行剪枝;最后通过fine-tuning恢复网络精度。 在式(7)中:k代表每一剪枝层通过计算得到的剪除的卷积核个数,下标代表的是剪枝层的序号,共p个待剪枝层;N是所有剪枝层的卷积核总数,K是本次剪枝期望的总体剪枝比率;第1 个等式代表各剪枝层所有剪除的卷积核总数,与所有剪枝层的卷积核总数乘以期望的整体剪枝比率是相等的;第2 个等式用来确定不同剪枝层的剪除卷积核个数间的比率。为避免出现短板效应,假设每层在剪除一部分卷积核后剩下的卷积核对网络性能的贡献是相当的,不会出现明显差异,否则会导致精度微调后恢复不到理想精度。由于不同剪枝层中的每个卷积核对性能的贡献不同,逐次单独测算一个卷积核对性能的贡献又不现实,因此在实际剪枝时采用测试每一层剪枝排序靠后的60%的卷积核,经过计算得到,该平均损失精度可以当作该层60%的卷积核的精度贡献。为避免出现短板效应,需要使每一层剪枝时剪除的卷积核对网络造成的精度损失是相等的,也就是剩下的卷积核对检测精度的贡献也是相等的,如图6 所示。式(8)将式(7)写成了矩阵形式,计算得到每一个剪枝层应剪除的卷积核个数。 图6 基于敏感度的剪枝比率确定Fig.6 Determination of pruning ratio based on sensitivity 在实际操作过程中,每次剪除总数50%的卷积核,确保检测得到的敏感度在适用范围内。为避免出现求得的解过大或者过小,对每一层设置最高剪枝阈值为60%、最低剪枝阈值为25%,经过多次剪枝得到精简模型。 通过稀疏卷积核多的层后进行集成剪枝,可避免集成剪枝算法无法处理冗余多的层及区分卷积核重要性的问题,使剪枝泛化能力更好,同时有利于获得均匀模型和更高的剪枝精度。基于敏感度的YOLO 网络集成剪枝步骤具体如下: 输入VOC 数据集,YOLO 原始网络的cfg 配置文件和初始化权重,期望剪枝比率K% 输出剪枝的YOLO模型cfg配置文件及对应权重 1)预训练YOLO 模型。 2)确定剪枝层,对YOLO 模型冗余多的剪枝层使用稀疏缩放因子方法进行稀疏训练。 3)使用集成剪枝算法,基于3 种参数重要性评估方法对每一剪枝层的卷积核进行重要性排序,将每个卷积核的3 种排序相加得到卷积核的重要性得分。 4)在验证集上测试得到原始精度,将每一个剪枝层的重要性低的K%的卷积核剪除,在验证集上测试得到新精度,原始精度减去新精度,除以剪掉的卷积核个数得到剪除的每个卷积核对精度的贡献。 5)求解式(7)得到每一剪枝层应剪除的卷积核个数。 6)对网络模型按式(5)中的每一剪枝层应减卷积核个数进行逐层剪枝,得到精简模型。 7)对精简模型进行fine-tuning 操作恢复模型精度。 8)如果卷积核剪枝数目达不到期望值,则返回步骤4。 实验对YOLOv3 网络使用VOC 数据集剪枝,但仅对从VOC2007 和VOC2012 的train+val 数据中提取出的行人类别进行网络剪枝,从模型大小、mAP、推理时间、参数量、卷积核个数和计算量6 个方面,对原始YOLOv3 模型与本文模型和文献[17]模型进行对比。 实验平台CPU 为i5-9600KF,显卡为RTX2060 Super。实验利用VOC2007 和VOC2012 的train+val数据进行训练,采用VOC2007 的test 数据进行测试。原始YOLOv3 模型与两种轻量化模型性能比较结果如表2 所示,其中计算量为每秒10 亿次浮点运算。 表2 YOLOv3 与两种轻量化模型性能比较Table 2 Performance comparison among YOLOv3 and two lightweight models 由表2 可以看出,文献[17]模型和本文模型相比原始YOLOv3 模型,在mAP 上都有一定的下降,原因在于检测网络相较分类网络不单需要识别,还要回归以确定目标位置,在针对20 类目标时需要较高的网络性能,剪枝在达到一定比率的阈值后精度会开始快速下降。两种轻量化模型的模型大小、推理时间、参数量、剪枝层卷积核个数、剪枝层计算量分别缩减为原始YOLOv3 模型的19.7%和19.6%、60%和59%、19.7%和19.5%、15%和17.2%、12.5%和8.6%,由此可得本文模型的参数量缩减了80.5%,并且检测精度相对文献[17]模型提升了0.2%。可见,使用基于敏感度的集成剪枝算法得到的网络模型相比文献[17]基于网络轻量化方法的网络模型参数量、模型规模和计算量更小,推理速度更快且mAP 更高。 表3 比较了原始YOLOv3 模型与两种轻量化模型对于20 个类别的检测精度,原始YOLOv3 模型的检测精度在所有类别中均是最高的,本文模型在各类别的检测精度上相比文献[17]模型更具优势。 表3 YOLOv3 与两种轻量化模型精度比较Table 3 Accuracy comparison among YOLOv3 and two lightweight models 实验环境设置同YOLOv3,由于YOLOv3-tiny网络层数较少(23 层),因此网络能力有限,实验仅针对从VOC2007 和VOC2012 的train+val 数据中提取出的行人类别进行网络剪枝,利用VOC2007 的test数据进行测试,并在模型大小、mAP、推理时间等方面,对YOLOv3-tiny 原始模型与本文模型和文献[17]模型进行比较,如表4 所示。 由于YOLOv3-tiny 网络较浅,GPU 的算力完全能够满足网络需求,而算力较弱的NVIDIA Jetson TX2 开发平台也能较好地展现剪枝后模型的速度提升情况。由表4 可以看出,文献[17]模型和本文模型在精度轻微下降的情况下,得到的轻量化模型大小、前向推理时间、参数量、剪枝层卷积核个数、剪枝层计算量分别缩减为原始YOLOv3-tiny 模型的8.6%和7.5%、41.2%和28%、8.6%和7.4%、32.7%和21.9%、28.75%和13.47%,由此可得本文模型的参数量缩减了92.6%,并且检测速度相比文献[17]模型更快,检测精度提升了0.2%。 表4 YOLOv3-tiny 与两种轻量化模型性能比较Table 4 Performance comparison among YOLOv3-tiny and two lightweight models 表5 给出了原始YOLOv3-tiny 模型与两种轻量化模型的各卷积层卷积核个数,可以看出相比文献[17]网络轻量化方法,本文集成剪枝算法对各剪枝层的卷积核都有相当程度的剪除,说明对于网络各剪枝层的能力贡献判断更加全面,得出的网络卷积核分布更加均匀。文献[17]网络轻量化方法由于没有在训练中控制各剪枝层的稀疏比例,可能导致有些层稀疏程度较大,有些层稀疏程度较小,因此剪枝后各层之间的卷积核个数差异仍然较大,而卷积核多的层会对网络有较大的贡献,但是在卷积核总数一定时,可能会加重卷积核较少层的负担,导致精度下降严重。 表5 YOLOv3-tiny 与两种轻量化模型结构比较Table 5 Structure comparison among YOLOv3-tiny and two lightweight models 为进一步说明本文基于敏感度的集成剪枝算法对各剪枝层剪枝比率的选择合理性,对直筒式架构的YOLOv3-tiny 网络进行网络性能贡献实验。YOLOv3-tiny 共10 个剪枝层,对每一个剪枝层利用集成剪枝算法剪去排序靠后的50%的卷积核,然后微调网络100 代,得到最终的单层剪枝的精简模型并测试其精度,比较剪枝前后的精度差。共做10 组实验,将得到的10 个精度差作为该层对网络整体性能贡献的测度值,精度差越大说明该层对网络性能的贡献越大,反之越小。 在表6 中对10 个剪枝层分别做剪枝50%的实验,微调精度是剪枝后微调网络100 代得到的模型的检测精度,使用原始精度剪去微调精度得到每一层剪枝50%后的损失精度。将每层的损失精度和同层的剪枝比率(本文基于敏感度的集成剪枝算法得到的最终剪枝模型的剪枝比率)进行分析,发现剪枝比率与损失精度呈负相关关系。因为前面的卷积层用于提取物体的边缘特征,且卷积核个数较少,所以每个卷积核承担的性能压力较大,后面的卷积层处理的是高维度信息,卷积核个数较多,相比较而言每个卷积核承担的性能压力较小。 表6 YOLOv3-tiny 网络性能贡献和各层剪枝比率Table 6 The contribution of each layer to network performance and the pruning ratio of YOLOv3-tiny 剪枝比率与损失精度的关系如图7 所示,其中,圆形点表示剪枝比率与损失精度呈负相关关系,方形点表示网络最后一个剪枝层的剪枝比率,也就是第二个yolo 层前的第二个卷积层,该剪枝层前面一层将浅层和深层信息拼接后输入,进行特征融合后输入到这一层,在网络剪枝时对于融合特征的卷积核的剪枝比率较大。 图7 剪枝比率与损失精度的关系Fig.7 The relationship between pruning ratio and loss accuracy 本文基于敏感度的集成剪枝算法在YOLO 系列网络的剪枝中,展现出优于基于单一参数重要性评估方法和文献[17]网络轻量化方法的剪枝算法的性能,并且在实际操作中时间成本并没有增加。为得到所需的L1 范数、激活值、梯度这3 种参数,对256 张图片进行单张输入(batch size 设置为1),网络训练1 次即可获取梯度和激活值的平均值,在加载权重后得到卷积核的L1 范数,3 种参数的获取耗时较短。在获得每层的平均梯度损失后,需要对网络的每一层伪剪枝后(某些核BN 层缩放因子置0)使用测试集测试获得新的精度,这一操作相对耗时。但是,本文基于敏感度的集成剪枝算法只需在第一次剪枝之前做稀疏化训练,解除特殊空间结构的限制,后面再重复剪枝、微调步骤时无需提前稀疏化训练,相比文献[17]网络轻量化方法的剪枝算法每次剪枝前都要稀疏化训练节省了很多时间。 为在算力有限的设备上部署YOLO 检测网络,本文提出基于敏感度的集成剪枝算法,通过结合3 种参数重要性评价方法得到每一层的卷积核重要性的最优排序,并使用稀疏缩放因子方式将冗余多的层稀疏化后进行网络剪枝。实验结果表明,该算法相比基于单一参数重要性评估方法和网络轻量化方法的剪枝算法有效提升了剪枝效果,解决了基于单一参数重要性评价方法的剪枝算法的片面性和泛化能力差问题。后续将针对检测类别较多或者特征较复杂的数据集,结合TensorRT 对称饱和量化等方法进一步加速网络前向推理。1.3 基于敏感度的剪枝比率确定
1.4 基于敏感度的YOLO 网络集成剪枝步骤
2 实验与结果分析
2.1 YOLOv3 实验效果对比
2.2 YOLOv3-tiny 实验效果对比
2.3 网络剪枝层对网络性能的贡献分析
2.4 YOLO 网络集成剪枝算法耗时分析
3 结束语