2. 中国科学院计算技术研究所 泛在计算系统研究中心, 北京 100190
2. Research Center for Ubiquitous Computing Systems, Institute of Computing Technology, Chinese Academy of Sciences, Beijing 100190, China
开放科学(资源服务)标志码(OSID):
深度神经网络的发展使图像分类、目标检测等计算机视觉任务得到了巨大的性能提升。随着计算机视觉处理任务日趋复杂,研究人员所设计的神经网络规模也逐步增大。神经网络的规模能够代表其学习能力,模型的参数量越多,模型容量越大,学习能力也越强。然而,针对不同的任务进行网络设计时很难确定神经网络的宽度和深度,通常研究者设计一个过参数化网络来保证学习能力,同时保证模型训练阶段能够收敛到一个比较好的局部最优点[1-2]。但复杂的网络模型需要高额的存储空间和计算资源,在边缘设备的实际应用中,设备的计算性能和存储资源很难满足过参数化网络的性能需求。针对上述问题,可对模型进行压缩,以有效减少计算空间和时间消耗,提高模型的运行效率。神经网络的压缩方法主要有低秩分解、剪枝、量化、知识蒸馏、紧凑的网络设计等,其中剪枝方法简单有效,是目前的研究热点。
模型剪枝应设计可保证模型精度不损失的有效压缩模型,关键问题在于如何评价神经元的重要性和怎样移除神经元。剪枝算法可分为非结构化剪枝和结构化剪枝两种方式。非结构化剪枝是一种细粒度的剪枝方式,其直接针对模型中的参数进行剪枝,通常会根据权值、梯度等不同的方面衡量参数的重要性,不重要的参数会被剪除。非结构化剪枝能够有效地压缩模型,但是得到的稀疏权重矩阵需要特殊的硬件设备支持。结构化剪枝是对模型中的滤波器、通道等结构进行剪枝,通过在损失函数中加入卷积核中权值L1、L2正则项的方法评价卷积核的重要性[3]。结构化剪枝方式对于网络每一层都需要设定超参数,并且在进行剪枝时网络需要迭代多次才能收敛。除了在损失函数中对卷积核权重加入正则化的方式评价卷积核的重要性之外,也有研究利用Batch Normalization中的γ参数来评价特征图的重要性[4],通过卷积核与上层特征图卷积得到本层特征图,通过γ参数评价特征图间接实现对卷积核的评价。结构化剪枝算法实现简单且不需要硬件设备支持,但是评价滤波器重要性时也同样从卷积核、通道等结构出发,无法对单个神经元的重要性进行评价。
模型的梯度信息与损失函数直接相关,利用梯度信息能够剔除影响模型收敛的冗余参数,在保证压缩参数量和计算量的同时提高模型性能。直接利用训练好的模型梯度信息相比加入惩罚因子、利用Batch Normalization中的γ参数等学习化的方法更简单有效。为了最大限度剔除神经网络中的冗余参数,本文采用权重梯度的绝对值对卷积核中的神经元进行量化,设置不同阈值,利用网格搜索的方式获取剪枝前后剩余参数量差值,通过计算参数量差值曲线的曲率最大值,确定参数量不发生明显变化时网络层的剪枝权重阈值。本文算法只需要对网络进行一次剪枝即能重新训练恢复模型精度,而无需经历多次剪枝-重训练的重复循环过程。
1 相关工作利用模型参数的绝对值大小评估神经元重要性是模型剪枝操作中用来剔除不重要神经元最直接的评价方式。文献[5]提出以模型中权重的大小表征其重要程度,并将模型中权值低于某个阈值的权重参数置为0,然后通过重新训练的方式恢复模型精度。这种将某个权重直接归零的方式属于非结构化剪枝方法,此类方法能够有效地压缩模型,但是需要特殊的硬件设备支持。文献[3]计算一个卷积核内所有权值绝对值之和来表征每层中该卷积核的重要性,根据权重绝对值之和对卷积核进行排序,剔除权重绝对值之和最小的卷积核。在CIFAR10数据集上,该方法可使VGG-16的推理成本相比剪枝前降低34%,ResNet-110最高可降低38%,其通过在损失函数中加入L1、L2正则项的方法评价卷积核的重要程度,对于每一层都需要设定超参数,并且进行剪枝时网络需要迭代多次才能收敛。也有研究[6]以group Lasso的方式获取稀疏化权重,将滤波器的权重分成多个组,通过对每个组的权重值进行L1正则化获取稀疏权重,实现对模型的压缩。
除了采用权值的方式之外,也有研究[7-9]结合梯度值与模型权重进行剪枝。文献[7]将模型剪枝视作优化问题,通过泰勒展开式评价卷积核参数全部为0时对损失函数的影响,最终得到参数值与其梯度值的乘积来评价神经元的重要性。但该方法每完成一个卷积核的剪枝过程就需要重新训练一次网络恢复模型精度。文献[8]提出在深度模型训练之前多次采样部分训练数据,利用损失函数关于权重连接的梯度决定不同权重连接的重要性。该方法只需要一次剪枝操作即可实现权重重要性评价,避免了剪枝-微调的迭代过程。文献[9]通过计算数据的反向传播梯度得到损失变化的估计值,使用权重对应的梯度值量化所有权重元素的重要性,并将权重按梯度绝对值升序排序,去除不重要的权重。上述3种方法都属于结构化剪枝方式,通常会对滤波器、通道等结构进行重要性评估,然后去除不重要的滤波器和通道。
除了基于度量标准的方法判断神经元的重要性之外,还有采用参数的熵值[10-11]、最小化特征输出重建误差[12-13]等方法。这些方法以神经网络的卷积核或通道为最小单位进行量化,通过度量剪枝前后信息传递的完整性对模型进行剪枝,但都与结构化剪枝的方法类似,在剪枝过程中需要对网络进行多次训练,耗费了大量时间。非结构化剪枝方法虽然在剪枝过程中无需多次训练并且对神经网络的单个神经元进行了细粒度评价,能够取得很好的压缩效果,但是压缩后的模型需要专用硬件和算法库的支持,不具备通用性。
2 卷积核自适应阈值剪枝算法本文算法根据反向传播的梯度绝对值来衡量神经元的重要性,利用多次搜索到的参数阈值自适应确定不同网络层的剪枝阈值,通过剪枝阈值调整卷积核个数,从而对模型进行压缩。在此过程中,网络执行一次数据迭代即可完成模型压缩,对压缩模型进行重新训练即可恢复模型精度。
2.1 基于梯度衡量准则的剪枝算法本文算法采用梯度绝对值作为评判滤波器中权重重要性的依据,统计模型中梯度绝对值的最大值
![]() |
Download:
|
图 1 本文剪枝算法流程 Fig. 1 Procedure of the proposed pruning algorithm |
步骤1 载入利用图像和标注实例训练完成的基线模型,选择需要剪枝的网络层。
步骤2 统计基线模型第
步骤3 计算第
步骤4 计算
步骤5 根据阈值
步骤6 重复步骤3~步骤5,得到不同阈值
步骤7 重复步骤2~步骤6,根据步骤6获得第
步骤8 计算第
步骤9 重复步骤2~步骤8完成所有层的卷积核个数计算。
步骤10 获取待剪枝的所有层卷积核个数后,对网络模型进行卷积核个数调整。
步骤11 进行重新训练。
2.2 卷积层自适应剪枝阈值方法与通道调整本文算法中的自适应阈值是在每层网络中设置不同的剪枝参数量,通过网格搜索的方式查找神经网络中不同网络层的卷积核所对应的剪枝阈值,根据每次搜索后的剩余参数量确定不同卷积层中卷积核内置零的冗余参数。对于剪枝算法流程中的阈值
![]() |
Download:
|
图 2 VGG16第1、4、8、12层网络参数搜索阈值 Fig. 2 Parameter searching thresholds of the 1st, 4th, 8th and 12th layer network for VGG16 |
由图 2可以看出,当网格搜索达到20~50步时,剩余参数量会明显减少,表明大量不重要参数需要被减除,通常达到50步以后剩余参数量趋于稳定。根据不同的梯度阈值能够获取所有网格搜索阈值下的剩余参数量,对所有离散点进行数据平滑后,通过求取剩余参数量的最大曲率半径,对不同滤波器自适应地获取梯度阈值
![]() |
Download:
|
图 3 卷积核个数调整 Fig. 3 Adjustment of the number of convolution kernels |
对残差网络完成剪枝后,会存在通道不匹配的问题。ResNet50的残差结构如图 4(a)所示,其中:残差分支包含3层卷积核用来改变滤波器核的尺寸和个数;捷径分支上有一个1×1的卷积层。如果对Conv1和Conv2进行剪枝只会影响到后一层的输入,如果对Conv3进行剪枝会影响主分支和捷径分支最后的相加操作。针对剪枝过程中残差结构内部残差分支和捷径分支通道变化的情况,采取改变捷径分支滤波器个数和残差分支最后一层滤波器个数的方式进行通道匹配,如图 4(b)所示。如果对Conv3进行剪枝,则要将残差分支最后一层滤波器的个数和捷径通道的滤波器个数设置为剪枝结果给出的M。
![]() |
Download:
|
图 4 ResNet50残差结构剪枝处理 Fig. 4 Pruning treatment of ResNet50 residual structure |
针对本文提出的结构化剪枝算法,分别在VGGNet[14]、ResNet[15]等分类模型和SSD[16]、Yolov4[17]、MaskRCNN[18]等目标检测模型上进行模型压缩,所有的实验均基于PyTorch框架。
3.1 实验数据集对于分类模型,在深度学习领域常用的图片数据集Cifar10上进行剪枝实验。Cifar10数据集包含10个不同类别,每个类别有6 000张彩色图片,每张图片大小为32×32像素。Cifar10的训练集有50 000张图片,测试集有10 000张图片。
对于目标检测模型,分别在公开的EgoHands数据集和安全头盔佩戴数据集SHWD上进行剪枝实验。EgoHands数据集有4 800张彩色图片,其中包含超过15 000多只手的图片,每张图片大小为720×1 280像素,3 874张图片用于训练,431张图片用于验证,479张图片用于测试。SHWD数据集有7 581张彩色图片,其中包含9 044个佩戴安全头盔对象和111 514个未佩戴安全帽对象,图像尺寸大小不一致,5 457张图片用于训练,607张图片用于验证,1 517张图片用于测试。
3.2 剪枝算法对比与性能评价指标将本文提出的剪枝算法与PF[3]、SFP[19]、Rethinking[20]等算法进行性能对比,评价指标为分类准确率(目标检测中用mAP衡量)、模型参数量和浮点运算数(Floating Point Operations,FLOPs)。其中:分类准确率表示分类模型的分类正确率;模型参数量表示神经网络模型在计算机中内存的占用量,决定模型文件的大小;FLOPs表示神经网络模型的计算量,用于衡量模型的复杂度。
3.3 结果分析 3.3.1 分类模型剪枝实验对分类模型VGG16、ResNet50和resnet56采用如下超参数设置训练:Epoch设置为200,初始学习率设置为0.1。优化方法采用随机梯度下降法,其中,momentum设置为0.9,weight_decay设置为0.000 5。学习率衰减策略采用余弦退火学习方法。表 1为利用不同算法对这两种分类模型剪枝后的实验结果对比,表中粗体表示最优结果,“—”表示文献中缺少对应数据,对比算法的实验结果直接使用文献[3, 19-21]中的数据。
![]() |
下载CSV 表 1 不同剪枝算法对分类模型的剪枝实验结果 Table 1 Pruning experiment results of different pruning algorithms on classification models |
由表 1可知,当设置不同超参数
目前,目标检测模型剪枝实验相对较少,并且所用数据集和算法并不统一。本文使用EgoHands和SHWD这两个公开数据集对本文提出的剪枝算法进行测试,选择经典的目标检测模型进行剪枝实验,直接采用文献[22-26]中的数据进行对比,分别对比Faster RCNN[22]、SSD[23]、Yolo系列[24-26]等目标检测模型采用不同剪枝算法的剪枝效果。训练模型的硬件设备设置为处理器Xeon Silver 4216、GPU显卡RTX 3070 8 GB;操作系统为Ubuntu18.0.4,python环境为3.6.10。在不同数据集上的训练超参数如表 2所示,其中,学习率衰减策略中的等间隔调整学习率gamma设置为0.91,剪枝前模型训练step_size设置为1,迭代次数设置为200,剪枝后的网络模型相对较小,恢复精度需要迭代更多的次数,通常将模型训练step_size设置为3,迭代次数设置为300。CSPdarknet53的网络设计相对轻量化,在达到同样参数压缩比例的情况下影响了模型的特征提取能力。CSPdarknet53模型压缩后恢复精度训练容易出现梯度爆炸的情况,损失函数会出现NaN的问题。为了防止CSPdarknet53出现梯度爆炸,加速网络收敛,先冻结全部的骨干网络迭代10次,再解冻训练全部参数恢复模型精度。
![]() |
下载CSV 表 2 不同目标检测模型的训练超参数设置 Table 2 Training hyperparameters setting of different target detection models |
利用本文算法和文献[22-26]算法对3种模型剪枝前后的实验结果对比如表 3所示,其中,“—”表示文献中缺少对应数据。表中给出了不同剪枝算法实验所用数据集,在不同剪枝算法对比上主要分析模型压缩比率和精度损失情况。由表 3可以看出:利用文献[22]算法对骨干网络为ResNet50的FasterRCNN模型压缩后精度下降1.6%,但是模型参数量只压缩了26.21%;利用文献[23]算法对骨干网络为VGG16的SSD检测模型进行压缩,模型参数量压缩超过60%,但模型精度下降10.48%;文献[24]算法采用权值、激活值、梯度3种方式衡量神经元的重要性,最终Yolov3模型参数量压缩80.38%,精度下降5.2%。文献[22-24]实验数据都采用Pascal VOC数据集,该数据集中目标相对明显但是需要检测的物体种类较多,对模型过度压缩会影响模型精度。Drones和Deer数据集中目标种类相比Pascal VOC类别要少,但是目标像素占比相对较小,并且目标数量较多。利用文献[25-26]算法分别对Yolov4和Yolov3进行模型压缩,虽然能够达到较高的模型压缩比率,但是精度损失相对较大。
![]() |
下载CSV 表 3 不同算法对目标检测模型的剪枝实验结果 Table 3 Pruning experiment results of different algorithms on target detection models |
模型压缩多针对特定数据集进行压缩,以方便模型在边缘设备上部署。本实验采用EgoHands和SHWD两种数据集对3种算法进行测试。EgoHands数据集相对比较简单,3种原始检测模型精度相对比较高。实验结果表明,采用本文算法剪枝前后模型的参数量减少都超过80%,计算量减少都超过65%。SHWD数据集相比EgoHands较为复杂,相比EgoHands数据集上的实验,模型精度相对较低。为了保证剪枝以后模型精度不受太大影响,对模型压缩比例进行限制,在表 3中给出在两种数据集实验中权衡剪枝比率和模型精度最优的超参数
3种模型的骨干网络不同,SSD采用VGG16作为骨干网络,VGG16整体结构比较简单,采用堆叠规整的卷积块结构进行特征提取,提取特征的能力有限。对SSD过度压缩容易影响模型精度,SSD在两个数据集上的压缩比率都超过了75%,在3种模型中SSD压缩比率最小。ResNet50采用残差模块解决训练退化问题,增强了深度网络的特征提取能力。从表 3的实验结果也可以发现,MaskRCNN的参数量压缩比例在SHWD数据集上达到81.57%,在EgoHands数据集上达到91.33%,而MaskRCNN的精度损失也最小,这充分证明了ResNet50相比其他两种骨干网络特征提取能力更强。CSPdarknet53同样采用了残差结构,但是相比其他两种骨干网络更轻量化,对应的模型容量也更小,在达到其他两种模型相当的压缩比例情况下会影响模型的精度。对比本文算法与其他算法的实验结果可以发现,在模型达到同样压缩比例的前提下,本文算法精度损失更小。
4 结束语为了细粒度地评价卷积核中每个神经元的重要性,本文提出采用权重的梯度绝对值来衡量卷积核中每个权重的影响,采用网格搜索的方式获取剪枝前后剩余参数量差值,通过计算剩余参数量差值的曲率大小获取不同网络层的剪枝权重阈值,利用超参数
[1] |
DENTON E, ZAREMBA W, BRUNA J, et al. Exploiting linear structure within convolutional networks for efficient evaluation[C]//Proceedings of the 28th Conference on Neural Information Processing Systems. Montreal, Canada: [s. n. ], 2014: 1269-1277.
|
[2] |
HINTON G E, SRIVASTAVA N, KRIZHEVSKY A, et al. Improving neural networks by preventing co-adaptation of feature detectors[J]. Computer Science, 2012, 3(4): 212-223. |
[3] |
LI H, KADAV A, DURDANOVIC I, et al. Pruning filters for efficient ConvNets[C]//Proceedings of International Conference on Learning Representation. Toulon, France: [s. n. ], 2016: 1-10.
|
[4] |
LIU Z, LI J G, SHEN Z Q, et al. Learning efficient convolutional networks through network slimming[C]//Proceedings of IEEE International Conference on Computer Vision. Washington D. C., USA: IEEE Press, 2017: 2755-2763.
|
[5] |
HAN S, POOL J, TRAN J, et al. Learning both weights and connections for efficient neural networks [EB/OL]. (2015-10-30)[2021-07-13]. https://arxiv.org/abs/1506.02626.
|
[6] |
WEN W, WU C, WANG Y, et al. Learning structured sparsity in deep neural networks[J]. Advances in Neural Information Processing Systems, 2016, 29: 2074-2082. |
[7] |
MOLCHANOV P, TYREE S, KARRAS T, et al. Pruning convolutional neural networks for resource efficient inference[EB/OL]. (2017-06-08)[2021-07-13]. https://arxiv.org/abs/1611.06440.
|
[8] |
LEE N, AJANTHAN T, TORR P H S. SNIP: single-shot network pruning based on connection sensitivity[EB/OL]. (2019-02-23)[2021-07-13]. https://arxiv.org/abs/1810.02340.
|
[9] |
CHANDAKKAR P S, LI Y K, DING P L K, et al. Strategies for re-training a pruned neural network in an edge computing paradigm[C]//Proceedings of IEEE International Conference on Edge Computing. Washington D. C., USA: IEEE Press, 2017: 244-247.
|
[10] |
LI Y C, LIN S H, ZHANG B C, et al. Exploiting kernel sparsity and entropy for interpretable CNN compression[C]//Proceedings of IEEE/CVF Conference on Computer Vision and Pattern Recognition. Washington D. C., USA: IEEE Press, 2019: 2795-2804.
|
[11] |
LUO J H, WU J X. An entropy-based pruning method for CNN compression[EB/OL]. (2017-06-19)[2021-07-13]. https://arxiv.org/abs/1706.05791.
|
[12] |
ZHANG X, HE Y, JIAN S. Channel pruning for accelerating very deep neural networks[C]//Proceedings of IEEE International Conference on Computer Vision. Washington D. C., USA: IEEE Press: 2017: 1398-1406.
|
[13] |
YU R, LI A, CHEN C F, et al. NISP: pruning networks using neuron importance score propagation[C]//Proceedings of IEEE/CVF Conference on Computer Vision and Pattern Recognition. Washington D. C., USA: IEEE Press: 2018: 9194-9203.
|
[14] |
SIMONYAN K, ZISSERMAN A. Very deep convolutional networks for large-scale image recognition[EB/OL]. (2015-04-10)[2021-07-13]. https://arxiv.org/abs/1409.1556.
|
[15] |
HE K M, ZHANG X Y, REN S Q, et al. Deep residual learning for image recognition[C]//Proceedings of IEEE International Conference on Computer Vision and Pattern Recognition. Berlin, Germany: Springer, 2016: 770-778.
|
[16] |
LIU W, ANGUELOV D, ERHAN D, et al. SSD: single shot multibox detector[C]//Proceedings of the 14th Europeam Conference on Computer Vision. Berlin, Germany: Springer, 2016: 21-37.
|
[17] |
BOCHKOVSKIY A, WANG C Y, LIAO H Y M. YOLOv4: optimal speed and accuracy of object detection[EB/OL]. (2020-04-23)[2021-07-13]. https://arxiv.org/abs/2004.10934.
|
[18] |
HE K M, GKIOXARI G, DOLLÁR P, et al. Mask R-CNN[C]//Proceedings of IEEE International Conference on Computer Vision. Washington D. C., USA: IEEE Press, 2017: 2980-2988.
|
[19] |
HE Y, DONG X Y, KANG G L, et al. Asymptotic soft filter pruning for deep convolutional neural networks[J]. IEEE Transactions on Cybernetics, 2020, 50(8): 3594-3604. DOI:10.1109/TCYB.2019.2933477 |
[20] |
LIU Z, SUN M J, ZHOU T H, et al. Rethinking the value of network pruning[EB/OL]. (2019-03-05)[2021-07-13]. https://arxiv.org/abs/1810.05270.
|
[21] |
DONG X Y, HUANG J S, YANG Y, et al. More is less: a more complicated network with less inference complexity[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition. Washington D. C., USA: IEEE Press, 2017: 1895-1903.
|
[22] |
TZELEPIS G, ASIF A, BACI S, et al. Deep neural network compression for image classification and object detection[EB/OL]. (2019-10-07)[2021-10-09]. https://arxiv.org/abs/1910.02747.
|
[23] |
LI Z S, SUN Y R, TIAN G Z, et al. A compression pipeline for one-stage object detection model[J]. Journal of Real-Time Image Processing, 2021, 18(6): 1949-1962. DOI:10.1007/s11554-020-01053-z |
[24] |
张江永, 徐智勇, 张建林, 等. 基于敏感度的YOLO网络集成剪枝算法[J]. 计算机工程, 2021, 47(9): 59-68. ZHANG J Y, XU Z Y, ZHANG J L, et al. Sensitivity-based integrated pruning algorithm for YOLO network[J]. Computer Engineering, 2021, 47(9): 59-68. (in Chinese) |
[25] |
LIU H S, FAN K G, OUYANG Q H, et al. Real-time small drones detection based on pruned YOLOv4[J]. Sensors (Basel, Switzerland), 2021, 21(10): 3374. DOI:10.3390/s21103374 |
[26] |
杨民杰, 梁亚玲, 杜明辉. 基于参数子空间和缩放因子的YOLO剪枝算法[J]. 计算机工程, 2021, 47(2): 111-117. YANG M J, LIANG Y L, DU M H. YOLO pruning algorithm based on parameter subspace and scaling factor[J]. Computer Engineering, 2021, 47(2): 111-117. (in Chinese) |