1. 引言
深度神经网络(Deep Neural Network, DNN)作为一种强大的模式识别工具,在诸多领域展现出了显著的性能,尤其是在计算机视觉领域中,例如图像分类[1]、人脸识别[2]、目标检测[3]和视频分析[4]等方面。然而,随着模型规模的增长,深度神经网络也带来了巨大的计算和内存需求,使得在资源受限的边缘设备上的部署变得困难。为了缓解该问题,研究者们提出了各种模型压缩技术。这些技术包括网络剪枝[5]-[7]、量化[8]、知识蒸馏[9]和低秩分解[10]等。
剪枝作为一种有效的模型压缩方法受到广泛关注,剪枝方法探索模型中的冗余权重,修剪非关键和冗余的部分。根据剪枝粒度的不同,主要分为非结构化剪枝[11]和结构化剪枝[12]。其中,滤波器剪枝[13]属于结构化剪枝[12]的重要方法,能在减少计算复杂度的同时保持较高的网络性能,得到广泛应用。此外,如何选择待剪枝的滤波器是实现剪枝模型高性能的关键。常见的剪枝方法主要有两类:基于滤波器幅度和基于相似度[13]的剪枝方法。基于幅度的剪枝方法认为,幅度较小的滤波器对网络的贡献较小,因此可以优先剪枝;而基于相似度的方法则通过分析滤波器之间的相似性,剪枝冗余的滤波器。然而,单独使用这两种方法都会存在局限性:仅考虑幅度可能移除幅度稍低但具有独特特征的滤波器;而仅基于相似度则可能移除与其他滤波器相似度高但幅度也高的滤波器。因此,本文提出了一种新的滤波器剪枝方法,通过引入一个缩放因子
,在每次剪枝过程中动态平衡幅度和相似度的影响。实验表明,本文提出的平衡幅度和相似度的滤波器剪枝方法(MASFIP)能够更有效地识别冗余滤波器,并在减少计算复杂度的同时,保持模型的高性能。
综上所述,本文的主要贡献如下:
(1) 分析了滤波器幅度和相似度两个独立准则,发现单独使用前者可能会忽略滤波器之间的特征冗余,而仅考虑相似度可能会忽略对模型性能有重要贡献的滤波器,从而提出了一种平衡幅度和相似度的滤波器剪枝方法。
(2) 本文提出的方法通过控制缩放因子
的取值范围,能够在保留关键滤波器的同时去除冗余,更有效地实现模型的压缩和加速。
(3) 在CIFAR-10和CIFAR-100基准数据集上对常用的VGGNet和ResNet模型进行了综合评估,验证了本文所提出的剪枝算法的有效性和先进性。
2. 相关工作
2.1. 结构化剪枝
在深度学习模型优化过程中,虽然非结构化剪枝[14]-[16]能够显著降低网络复杂度,但由于对专用硬件的依赖限制了其应用范围。因此,结构化剪枝[12]方法被深入研究以提升模型效率,Fang等人[17]提出了一种通用的结构剪枝方法DepGraph。该方法对层间依赖关系进行建模,并对耦合参数进行综合分组,执行各种神经网络模型的剪枝。Yan等人[18]提出一种基于权重关联性的结构化剪枝方法,该方法评估滤波器的关联权重,并对评估值全局标准化,剪枝模型中评估值较小的滤波器。
结构化剪枝主要包括滤波器剪枝[19] [20]和通道剪枝[21] [22]两种形式。Lin等人[23]提出了一种HRank剪枝方法,通过计算平均秩去除卷积层中不必要的滤波器,避免了传统剪枝方法中单纯依赖权重范数的问题。GFI-AP [24]根据重要性指标与不同层的其他滤波器比较进行剪枝。MSVFP [25]提出了基于幅度和相似度的可变速率滤波器剪枝方法。滤波器剪枝关注卷积层内滤波器的精简,而通道剪枝注重减少网络的层间连接密度。Jiang等人[22]提出了一种通道剪枝方法CPGCN,使用全局平均池化提取特征,提高模型压缩效率。
2.1.1. 基于幅度和相似度的剪枝
基于幅度的剪枝方法通过对每个滤波器进行评估,并根据其在网络中的重要性进行排序,确定哪些滤波器应当保留或剪枝。Molchanov等人[26]提出一种基于泰勒公式展开的剪枝方法,该方法通过迭代移除对网络整体贡献较小的特征映射,高效压缩神经网络且维持其泛化能力。He等人[27]提出了基于元属性的滤波器剪枝方法。该方法在现有基于幅度信息的剪枝准则基础上,进一步引入了考虑滤波器几何距离的新准则。此外,为了明确评估网络的状态,MFP [27]通过元属性自适应地选择最合适的剪枝标准。PFEC [28]基于滤波器的范数衡量重要性,并剪除那些权重较小的滤波器。
基于相似度的方法旨在识别神经网络中相似或冗余的滤波器。通过比较滤波器之间的相似度,确定具有类似功能或信息的滤波器,并选择性地剪除它们,以降低模型复杂度。FPSSI [29]利用结构相似性指标对滤波器进行软剪枝,有效压缩深度神经网络模型且保持精度。FPGM [30]是一种基于几何中值的滤波器剪枝方法,采用欧几里德距离剪枝冗余滤波器,并考虑滤波器之间的相互关系。
3. 滤波器剪枝算法
首先,在本节中介绍一些符号和注释。网络包含L个卷积层,每一层都由多个滤波器组成,定义所有滤波器的集合为F。其中
表示第i层滤波器。
表示第i层第j个滤波器。将其参数化为
,
,其中
为输入通道数,
为输出通道数,K为卷积核大小。为了简单起见,将第i层中的所有3-D滤波器
表示为一维向量
,这表示在卷积层i中有
个一维滤波向量,每个向量的长度为
。
3.1. 滤波器评估准则
3.1.1. 幅度计算
在神经网络的滤波器剪枝中,通常采用
范数评估滤波器的重要性,其中L1范数[24]和L2范数是常用的幅度度量准则。如果将第i层中的第j个滤波器
表示为
,则其
范数计算为:
(1)
3.1.2. 相似度计算
常用的相似度度量包括欧几里德距离[26]和余弦相似度。欧几里德距离衡量了两个向量之间的差异程度,距离越小则两个向量越相似。余弦相似度表示两个向量夹角的余弦值,范围是[-1,1],值越接近1则表示两个向量越相似,而值为−1则表示它们完全相反。对于两个滤波向量
和
,它们之间的欧几里德距离计算为:
它们之间的欧几里德距离计算为:
(2)
余弦相似度的计算公式如下:
(3)
两个滤波器在同一层中的相似性可以通过公式(2)和公式(3)进行量化。为了进一步确定某个滤波器相对于该层其它滤波器的整体相似性得分,需要将目标滤波器与该层中其他滤波器的相似性值取平均,作为该滤波器的最终相似性得分。具体而言,第i个卷积层中第j个滤波器的相似性得分可以表示为:
(4)
3.2. MASFIP过程
MASFIP剪枝过程主要包括以下步骤:(1) 初始化网络;(2) 对原始网络进行指定次数(
)的训练,以充分优化网络权重并确定每层的步剪枝率;(3) 检查每一层并根据剪枝排序选择临时剪枝的滤波器集合,如果当前剪枝操作后的模型损失小于之前记录的最小损失,则更新并记录该层的剪枝信息;(4) 选出精度损失最小的模型进行永久性剪枝,之后进行少量轮次的训练,以恢复模型精度;(5) 重复上述步骤,直到达到目标剪枝率;(6) 微调,直至模型收敛。剪枝过程如图1所示。
Figure 1. Pruning process flowchart
图1. 剪枝过程流程图
3.2.1. 剪枝排序
在结构化剪枝过程中,确定合适的剪枝顺序至关重要。显然,对于幅度小且相似度高的滤波器,应优先进行剪枝,而对于幅度较大而相似度低的滤波器,应优先保留。MSVFP [25]指出幅度信息在滤波器选择的过程中起到至关重要的作用。即使在使用相似度作为衡量标准,滤波器的幅度信息仍然是一个重要因素。根据前人的经验[25]及实验结果,对于较低幅度且相似度较低的滤波器,以及较高幅度且相似较高的滤波器,剪枝时应优先考虑前者,即使前者提供的特征在某种程度上是独特的。这一步主要是为了减少模型的复杂度,同时由于这些滤波器幅度较小,对模型整体性能的影响有限。下一步,可以考虑剪枝后者。尽管这些滤波器较为重要,但因其信息已被其他滤波器涵盖,因此剪枝这些滤波器可以在保持模型性能的同时降低冗余。
为了量化上述剪枝顺序,引入了一个函数,用于评估每个滤波器的剪枝优先级。将公式(1)和公式(4)进行组合,并加入了一个缩放因子
,得到公式为:
(5)
其中
表示第i层滤波器的幅度;
表示第i层滤波器的相似度;
表示第i层滤波器的剪枝排序。实验表明,
取值范围是[0.2,0.8]。
和
均为归一化后的内容。每层滤波器的剪枝排序算法如表1所示。
Table 1. Pruning ordering algorithm for each filter layer
表1. 每层滤波器的剪枝排序算法
输入:初始化模型M,步剪枝率
输出:候选剪枝模型
|
1 for
do 2 calculate the priority
using Eq. (5) and sort them in ascending order; 3
←prune the filters ranked lower based on the pruning rate E; 4 end for 5 record candidate model information; |
3.2.2. 最小精度损失
通过使用一个小的随机抽样训练数据集进行损失估计,以最小化计算成本[13]。在给定约束条件P的情况下,网络剪枝问题可以表示为一个优化问题。即在满足某些约束条件的情况下,寻找最小化损失函数的模型参数。优化问题可以表示为以下公式:
(6)
其中
代表训练数据集,其中S是训练数据记录的总数。
是剪枝后网络在数据
集D上的损失函数,f()是网络函数,它根据输入
和参数
产生输出,R()是一个映射函数,在文章中表示网络的FLOPs,P是目标FLOPs剪枝率。被剪枝的网络
相对于原始网络W的剪枝速率
可以定义为:
(7)
此外,移除卷积层的滤波器会对网络产生深远影响,不仅会影响相邻的前后层,还可能影响到其它与该层存在连接的部分。为了最大化减少网络损失,采用分层探索步骤[13],通过迭代地为每一层分配适当的剪枝比例,从而保证每次迭代中FLOPs的减少保持近似恒定。通过采用这种方式,可以实现各层剪枝比例的平衡,从而有效控制剪枝过程中网络性能的下降。
假设
表示不包括第i层参数的网络权重。若将整个剪枝过程中每次搜索的FLOPs减少率设定为
,则第i层的探索步长
可以近似表示为:
(8)
首先,对原始网络进行指定次数的训练。随后,根据剪枝过程中每次搜索的网络FLOPs减少率
,为每层计算步剪枝率,每层的步剪枝率可表示为:
(9)
通过采用一个迭代剪枝方法[13],使用滤波器幅度或相似度方法来指导剪枝过程。每次迭代对每层进行临时剪枝,得到候选模型。此外,去除每层中低排序的滤波器以计算网络损失。通过比较每一层剪枝后的损失,找到最小精度损失的模型,并进行永久性的滤波器剪枝。MASFIP算法如表2所示。
Table 2. MASFIP pseudo-code
表2. MASFIP伪代码
输入:初始化模型M,训练数据D,缩放因子
,目标FLOPs减少率P,微调 FLOPs 减少间隔p,剪枝前的训练周期数量
输出:剪枝模型
|
1
;
;
; 2 randomly sample dataset
from D; 3 training initial model M for
epochs; 4 for
do 5 Calculate the pruning rate
; 6 end for 7 while
do 8 obtain
using algorithm on Table 1.; 9
; 10 calculate
using Eq. (7); 11 if
then 12 fine-tune pruned model
; 13
; 14 end if 15 end while 16 train pruned model
until convergence; |
4. 实验与结果分析
4.1. 实验环境
CIFAR-10由60,000张32 × 32像素的彩色图像组成,总共分为10个不同的类别,每个类别包含6000张图像。其中5000张图像用于训练,1000张用于测试。CIFAR-100则分为100个类别,每个类别包含600张图像。在训练VGGNet-16和ResNet时,分别应用了与PFEC [28]、FPSSI [29]和LAASP [13]中相同的训练设置。算法遵循一种边训练边剪枝[13]的方法,即对原始网络进行一定次数的初始训练,然后暂停训练过程执行剪枝操作。在每次剪枝迭代结束时,将被剪枝的滤波器永久移除。剪枝完成后,继续对剪枝后的网络进行与原网络相同的训练。在每次剪枝迭代中,每轮设定FLOPs减少率约为1%。在剪枝过程中,每次如果导致网络FLOPs减少率大于3% (
),则需要对剪枝后的网络进行1~3轮的微调训练,以恢复模型精度。
4.2. 实验分析
4.2.1. VGGNet在CIFAR-10上的实验结果
表3显示了在CIFAR-10数据集上修剪VGGNet-16的结果。原始网络进行30轮训练[13],随后进行剪枝。为了与其他具有可比剪枝率的方法进行比较,首先对网络进行迭代剪枝,使FLOPs减少34.3%。此外,使用所提出的剪枝技术,网络FLOPs可以减少60%以上,甚至在某些情况下达到比原始未修剪网络更高的精度。
Table 3. The pruning results of VGGNet-16 on CIFAR-10
表3. VGGNet-16对CIFAR-10的剪枝结果
剪枝算法 |
是否预训练 |
剪枝前准确率(%) |
剪枝后准确率(%) |
准确率减少比例(%) |
FLOPs减少比例(%) |
PFEC [28] |
是 |
93.58 ± 0.03 |
93.31 ± 0.02 |
0.27 |
34.2 |
MFP [27] |
否 |
93.58 ± 0.03 |
93.54 ± 0.03 |
0.04 |
34.2 |
FPGM [30] |
否 |
93.58 ± 0.03 |
93.54 ± 0.08 |
−0.04 |
34.2 |
LAASP [13] |
否 |
93.79 ± 0.23 |
93.90 ± 0.16 |
−0.11 |
34.6 |
MASFIP |
否 |
93.79 ± 0.23 |
94.21 ± 0.03 |
−0.42 |
34.3 |
Hrank [23] |
是 |
93.96 |
93.43 |
0.53 |
53.5 |
CPGCN [22] |
是 |
93.2 |
93.53 |
−0.51 |
57.3 |
LAASP [13] |
否 |
93.79 ± 0.23 |
93.79 ± 0.11 |
0 |
60.5 |
MASFIP |
否 |
93.79 ± 0.23 |
93.95 ± 0.02 |
−0.16 |
60.6 |
在表3中给出了预训练网络在剪枝前的基线精度。从表3中可以看出,在VGGNet-16上分别减少了34.3%和60.6%的FLOPs,剪枝后模型的top-1精度相比基线分别提高了0.42%和0.16%。当FLOPs减少率为34.3%时,本文方法的准确率达到了94.21%,明显优于其他方法。
Figure 2. Comparison of filters before and after pruning
图2. VGGNet-16模型修剪前后各层滤波器的对比
Figure 3. Comparison of filters before and after pruning
图3. VGGNet-16模型修剪前后各层滤波器的对比
图2和图3显示了在CIFAR-10数据集上,当FLOPs分别减少34.3%和60.6%时,VGGNet-16模型剪枝前后的滤波器数量。可以观察到:随着卷积层在整个网络结构中的层次逐渐加深,滤波器的剪枝比例显著增加,剪枝掉的滤波器数量多于靠近输入端的卷积层。这意味着在VGGNet-16模型的深层部分的特征冗余性较高,剪枝它们不会对模型的整体性能产生重大影响,因而具有更高可剪枝性。
4.2.2. ResNet在CIFAR-10上的实验结果
如表4所示,我们在ResNet-32、ResNet-56和ResNet-110模型上使用CIFAR-10数据集进行实验。结果显示,本文方法在实现相似FLOPs减少率时,取得了更高的top-1精度。此外,本文针对不同的FLOPs减少率进行了多次实验,以验证其有效性。SFP [12]、MPF [27]和FPGM [30]等方法采用软滤波剪枝技术,其特点是在每个训练周期结束时进行剪枝,并在下一个训练周期中更新剪枝后的滤波器,从而保持网络结构的一致性。相比之下,采用硬滤波器剪枝[13]在每次剪枝迭代中永久移除被剪枝的滤波器,并重新组织网络连接,以提升计算效率。硬剪枝的优点是剪枝完成后,精简后的模型可以继续训练直至收敛,从而进一步减少计算负担。由于本文重点关注无需预训练的剪枝方法结果,为了展示该方法的竞争力,我们还列出了一些其它常用方法,如Rethink [19]、GFI-AP [24]、NPPM [21]、Hrank [23]和MSVFP [25]。
如表4所示,在ResNet-56模型上尽管已经使用了硬滤波剪枝,FLOPs的减少率仍然达到了52.9%。然而,本文所提出的剪枝方法比基线模型的精度提高了0.14%。在CIFAR-10上,MASFIP从ResNet-32和ResNet-110模型中分别删除了53.2%和52.1%的FLOPs操作,但是精度仅比基线降低了0.19%和0.15%。
Table 4. The pruning results of ResNet on CIFAR-10
表4. ResNet对CIFAR-10的剪枝结果
ResNet模型 |
剪枝算法 |
是否预训练 |
剪枝前准确率(%) |
剪枝后准确率(%) |
准确率减少比例(%) |
FLOPs减少比例(%) |
32 |
SFP [12] |
否 |
92.63 ± 0.70 |
92.08 ± 0.08 |
0.55 |
41.5 |
|
GFI-AP [24] |
是 |
92.54 |
92.09 ± 0.15 |
0.45 |
42.5 |
|
FPGM [30] |
否 |
92.63 ± 0.70 |
91.93 ± 0.03 |
0.7 |
53.2 |
|
MFP [27] |
否 |
92.63 ± 0.70 |
91.85 ± 0.09 |
0.78 |
53.2 |
|
LAASP [13] |
否 |
93.12 ± 0.04 |
92.64 ± 0.09 |
0.48 |
53.3 |
|
MASFIP |
否 |
93.12 ± 0.04 |
92.93 ± 0.05 |
0.19 |
53.2 |
续表
56 |
HRank [23] |
是 |
93.26 |
93.17 |
0.09 |
50 |
|
NPPM [21] |
是 |
93.04 |
93.4 |
−0.36 |
50 |
|
SFP [12] |
否 |
93.59 ± 0.58 |
92.26 ± 0.31 |
1.33 |
52.6 |
|
FPGM [30] |
否 |
93.59 ± 0.58 |
92.93 ± 0.49 |
0.66 |
52.6 |
|
MFP [27] |
否 |
93.59 ± 0.58 |
92.76 ± 0.03 |
0.83 |
52.6 |
|
DepGraph [17] |
是 |
93.53 |
93.46 |
0.07 |
52.6 |
|
LAASP [13] |
否 |
93.61 ± 0.11 |
93.49 ± 0.00 |
0.12 |
52.6 |
|
MASFIP |
否 |
93.61 ± 0.11 |
93.75 ± 0.05 |
−0.14 |
52.9 |
110 |
PFEC [28] |
是 |
93.53 |
93.3 |
0.23 |
38.6 |
|
SFP [12] |
否 |
93.68 ± 0.32 |
93.38 ± 0.30 |
0.3 |
40.8 |
|
Rethink [19] |
是 |
93.77 ± 0.23 |
93.70 ± 0.16 |
0.07 |
40.8 |
|
FPGM [30] |
否 |
93.68 ± 0.32 |
93.73 ± 0.23 |
−0.05 |
52.3 |
|
MFP [27] |
否 |
93.68 ± 0.32 |
93.69 ± 0.31 |
−0.01 |
52.3 |
|
MSVFP [25] |
是 |
93.69 ± 0.22 |
93.92 ± 0.52 |
−0.23 |
52.4 |
|
LAASP [13] |
否 |
94.41 ± 0.07 |
94.17 ± 0.16 |
0.24 |
52.5 |
|
MASFIP |
否 |
94.41 ± 0.07 |
94.26 ± 0.10 |
0.15 |
52.1 |
4.2.3. 在CIFAR-100上的实验结果
实验使用CIFAR-100数据集,在VGGNet-16、ResNet-56和ResNet-110模型上测试剪枝方法。实验使用CIFAR-100数据集,在VGGNet-16、ResNet-56和ResNet-110模型上测试剪枝方法。如表5所示,在相似剪枝率的条件下,本文方法在所有列出的方法中均表现出更优的性能。例如,当FLOPs减少率达到37.5%时,本文方法在VGGNet-16模型上实现了比基线模型更高的精度,提升了0.02%。此外,在ResNet-56模型上,当FLOPs减少率达到39.1%时,精度仅下降了0.05%。
Table 5. The pruning results of VGGNet and ResNet on CIFAR-100
表5. VGGNet和ResNet对CIFAR-100的剪枝结果
模型 |
剪枝算法 |
是否预训练 |
剪枝前准确率(%) |
剪枝后准确率(%) |
准确率减少比例(%) |
FLOPs减少比例(%) |
VGG-16 |
PFEC [28] |
是 |
73.01 |
71.11 |
1.90 |
34.2 |
|
CPGMI [31] |
是 |
73.26 |
73.53 |
−0.27 |
37.1 |
|
NS [32] |
否 |
73.26 |
73.48 |
−0.22 |
37.1 |
|
MASFIP |
否 |
73.71 |
73.73 |
−0.02 |
37.5 |
ResNet-32 |
PFEC [28] |
是 |
70.38 |
70.42 |
−0.04 |
10.4 |
|
MASFIP |
否 |
71.94 |
72.11 |
−0.17 |
12.8 |
|
PFEC [28] |
是 |
70.38 |
69.95 |
0.43 |
27.6 |
|
MIL [33] |
是 |
71.33 |
68.37 |
2.96 |
39.3 |
|
SDN [34] |
否 |
70.01 |
69.78 |
0.23 |
38.3 |
|
MASFIP |
否 |
71.94 |
71.89 |
0.05 |
39.1 |
ResNet-110 |
PFEC [28] |
是 |
72.92 |
70.88 |
1.41 |
27.6 |
|
MIL [33] |
是 |
72.79 |
70.78 |
2.01 |
31.3 |
|
MASFIP |
否 |
73.71 |
73.13 |
0.58 |
34.6 |
Figure 4. Effect of different
on model accuracy
图4. 不同
对模型精度的影响
Figure 5. Effect of different
on model accuracy
图5. 不同
对模型精度的影响
如图4和图5所示,为了验证公式(5)中缩放因子
对模型剪枝的影响。本文在CIFAR-10和CIFAR-100数据集上,针对VGGNet-16和ResNet模型,选择了多个不同的
值进行剪枝实验。起始时,
设为0.2,并以0.1的增量逐步增加。实验结果表明,对于ResNet-56模型,
值在0.3左右时即可获得较好的精度,表明网络中可能存在较多的低幅度滤波器。相比之下,ResNet-110模型在
值为0.7左右时表现最佳,表明相似度在滤波器选择中的作用增大,这也暗示该模型中存在较多冗余的滤波器,因此需要更高的
值以增强相似度的影响,进而更有效地去除冗余的滤波器。因此,在进行剪枝时,通过选择选择
值,可以显著提升模型精度。
在CIFAR-10和CIFAR-100数据集上,MASFIP剪枝效果差异较大。CIFAR-100由于包含更多类别,模型需要学习并区分更多的特征,在剪枝过程中移除滤波器对模型性能的影响更为显著。而相较之下,CIFAR-10数据集的类别较少,剪枝对精度的影响较小。因此,CIFAR-100数据集上的剪枝精度变化更大,剪枝率也相对较低。
5. 结束语
本文提出了一种新的滤波器剪枝方法,用于加速卷积神经网络的推理过程。通过平衡滤波器的幅度和相似度,首先筛选出候选滤波器集。在此基础上,记录剪枝后的精度损失,选择在精度损失最小的卷积层中进行永久性滤波器剪枝,并通过多次迭代剪枝,直至达到预定剪枝率。剪枝完成后,对模型进行训练,直到收敛。大量实验结果表明,MASFIP在不同数据集及主流网络模型上,剪枝效果显著优于现有方法,例如,在CIFAR-10上,从VGGNet-16中删除了60.6%FLOPs,精度提高了0.16%。
未来的工作将致力于评估MASFIP方法在更复杂的神经网络架构和应用场景(如目标检测、图像分割等)中的有效性。除此之外,我们还计划将本文方法与其他模型压缩方法(参数量化[8]、权重剪枝[15]等)结合,进一步提高压缩效率。