孙文宇 曹健 李普 刘瑞
北京大学软件与微电子学院, 北京 102600; † 通信作者, E-mail: caojian@ss.pku.edu.cn
卷积神经网络在图像分类、目标检测等领域得到广泛应用。随着网络效果提升, 网络规模愈发庞大, 需要高额存储空间和计算资源, 使网络部署到资源受限的端侧硬件平台变得困难。因此, 在保证模型精度的同时, 需尽可能降低模型参数量和计算消耗。研究者们提出过若干模型压缩方法, 如模型剪枝[1-5]、权重量化[6-9]和神经网络结构搜索[10-12]等。其中, 模型剪枝方法能大幅度地减少模型参数量和运算量, 成为模型压缩的主流方法, 又可分为非结构化剪枝方法和结构化剪枝方法。
非结构化剪枝方法[13]认为卷积神经网络中存在小值权重, 对网络最终输出贡献少, 可将其置 0,以便减少网络运算量。采用此类方法的模型压缩效果较好, 但部署到端侧设备时, 硬件平台要具有相应的稀疏矩阵运算加速库才能实现提速, 故非结构化剪枝方法在部署中通用性差。
结构化剪枝方法将整个卷积核视为被裁剪对象, 对于硬件部署更加友好, 受到研究者青睐。Li等[14]提出基于卷积核 L1 范数的简单有效的剪枝方法, 通过裁剪 L1 范数小的卷积核, 实现模型压缩和加速。在此基础上, Frankle 等[15]利用 L2 范数寻找大规模模型中的最小子网络, 实现模型剪枝。He等[16]将卷积核视为欧式空间中的点, 计算每个卷积层的几何中位数, 将靠近几何中心点的卷积核裁减掉, 实现模型压缩。
以上剪枝方法往往需要大规模的模型训练和剪枝以及小规模的模型微调 3 个步骤。当剪枝率过大时, 通过已有剪枝方法得到的小规模模型会因信息丢失严重及语义表达能力不足从而导致较大的精度损失。本文在模型微调前, 对小规模的模型进行全局信息优化, 使其在微调后可以取得较大的压缩率,并具有极低的精度损失。此优化方法可嵌入任何一种结构化剪枝方法中, 具有工程易用性。
在适中剪枝率情况下, 剪枝方法对不同卷积层有不同的剪枝率[13], 即剪枝后每个卷积层的卷积核个数不同(见图 1)。对于保留较多卷积核的卷积层,因保留了较多的原模型信息, 故在微调后可恢复语义表达能力。对于保留较少卷积核的卷积层, 因其原模型信息破坏较为严重, 导致模型精度下降。所以, 如果能使剪枝后模型尽可能多地具备原模型信息, 则可保证剪枝后模型的高精度。
图1 VGG16 部分卷积层剪枝前后对比Fig. 1 Comparison of convolution layers before and after pruning in VGG16
图2 正常卷积与剪枝后卷积的区别Fig. 2 Difference between normal convolution and convolution after pruning
综上所述, 将剪枝后模型信息保留优化问题转化为求解形如式(1)的优化问题, 通过改进的 Matrix Sketching 算法求解[17]。改进后的剪枝模型微调优化算法流程如算法 1 所示。
由式(1)及算法 1 可知, 改进后的微调优化方法将原模型信息引入剪枝后模型, 并最小化二者间信息误差, 从而实现对剪枝后模型某些卷积层的信息补偿, 进而在微调后获得更高精度。原理解释如图3 所示。
图3 算法原理解释Fig. 3 Explanation of algorithm
残差网络 ResNet[18]中的残差模块可以解决深层网络无法有效训练的问题, 使深层网络的准确度得以提升, 其跳连结构已应用在许多大规模网络中。将现有剪枝方法应用于 YOLOv3[19]等存在跳连结构的模型时, 均需保证剪枝后模型在跳连相加处通道数相同。如图 4 所示, 剪枝后模型在微调前需保证c1′ =c2′, 进而保证跳连相加可以顺利进行, 但会严重地限制剪枝方法的压缩效果, 故此类特殊结构也是限制模型压缩效果的重要因素。
图4 模型跳连部分的剪枝Fig. 4 Pruning of shortcut in the model
在现有剪枝方法上嵌入本文提出的微调优化方法, 可在初步剪枝时不必要求跳连相加处通道数相同, 而是在微调时, 通过算法 1 将保留较多通道数的卷积层1c′优化为2c′, 在保证最大化压缩率的同时,还可以保证模型精度。
本文将算法 1 嵌入不同的剪枝方法, 并在主流图像分类模型和目标检测模型上进行对比实验来证明本文提出微调优化方法的有效性及普遍适用性。
本文采用图像分类数据集 CIFAR10 和 CIFAR 100, 在 VGG16 模型上验证微调优化方法在分类任务中的效果。利用大规模遥感数据集 Visdrone[20],在 Anchor-base 目标检测模型 YOLOv3 和 Anchorfree 目标检测模型 CenterNet[21]上, 验证微调优化方法在目标检测任务中的效果。数据集概况见表 1。
表1 本文所用数据集概况Table 1 Overview of the datasets used in the article
对于图像分类任务, 采用测试集准确率(Acc)作为评价指标。对于目标检测任务, 输入图片分辨率均为 608×608, 采用交并比(IOU)阈值为 0.5、置信度(confidence)阈值为 0.1、非极大值抑制(NMS)阈值为 0.5 情况下的平均精度均值(mAP)作为评价指标。
将微调优化方法分别嵌入 L1 剪枝方法[14]和 Network Slimming (NS)剪枝方法[22], 在 VGG16 模型上, 利用 CIFAR10 和 CIFAR100 数据集进行实验,实验结果如表 2 所示。
表2 各剪枝方法在CIFAR10 和CIFAR100 数据集的效果对比Table 2 Effects of various pruning methods on CIFAR10 and CIFAR100
由表 2 可知, 在图像分类任务中, 在已有的若干剪枝方法中嵌入微调优化方法, 可以同时提高压缩率和剪枝后模型的准确率。可以看出, 此微调优化方法对带有模型稀疏化训练的剪枝方法更适用。通过模型稀疏化训练, 模型中更多的卷积核可被裁剪, 此时通过微调优化方法, 可使模型在尽可能高的压缩率下获得更高的精度恢复, 实现模型参数量与精度间的平衡。将此方法嵌入 Network Slimming剪枝后的 VGG16 网络进行微调时, 剪枝后模型精度比原模型略有提高, 说明经过此方法优化后的模型具备较优的初始化参数及学习能力。
为了证明算法在其他任务中的有效性, 采用遥感数据集 Visdrone, 在 Anchor-base 目标检测模型YOLOv3 和 Anchor-free 目标检测模型 CenterNet 上进行实验, 结果如表 3 所示。
由表 3 可知, 在目标检测任务中, 本文所提微调优化方法对于主流 Anchor-base 模型和 Anchor-Free 模型均具有适用性, 在最大程度上保证模型精度的同时, 可以降低模型参数量和复杂度。
表3 各剪枝方法在Visdrone 数据集效果对比Table 3 Effects of various pruning methods on Visdrone
本文针对现有剪枝方法在高压缩率时精度严重下降的问题, 提出一种基于全局信息的模型剪枝微调优化方法。对于剪枝率过大的卷积层, 此优化方法将未剪枝模型的全局权重信息引入剪枝后模型中, 从而解决了模型跳连结构对剪枝方法的限制问题。在图像分类任务和目标检测任务中的实验结果表明, 将已有剪枝方法中嵌入此优化方法, 在获得高压缩率的同时, 只有极低的精度损失。
在未来的工作中, 我们将进一步探索剪枝后模型在微调前的权重优化, 使本文提出的微调优化方法在不失通用性的前提下获得更高的压缩率, 以便在端侧智能设备的部署与加速。