基于稀疏约束滤波器剪枝策略的模型压缩方法

2022-10-01 02:41刘小辉汤水利刘洲峰李春雷
计算机工程与设计 2022年9期
关键词:剪枝滤波器卷积

董 燕,刘小辉,汤水利,刘洲峰,李春雷+

(1.中原工学院 电子信息学院,河南 郑州 450007;2.恒天重工股份有限公司 技术开发中心,河南 郑州 450000)

0 引 言

近年来,卷积神经网络(convolutional neural network,CNN)在计算机视觉领域表现出了显著的优势,如分类[1-5]、检测[6]及分割[7]等。在卷积神经网络性能提高的同时,高存储与高功耗使其难于部署在资源受限的边缘设备上。因此,构建轻量级的卷积神经网络,提高模型的推理速度,具有重要的理论及应用研究价值。

参数剪枝受哺乳动物大脑发育过程的启发[8],通过修剪不重要的网络连接来生成最优的子网络,具有较高的模型性能及自适应性。滤波器剪枝不仅能实现精细化的修剪[9],而且可以运行在通用硬件平台或BLAS库上,因此成为当前参数剪枝的重要研究方向。

然而,现有滤波器剪枝算法通常是逐层固定比率的修剪,不易寻找到最优子网络。因此,本文提出了一种基于稀疏约束的滤波器剪枝方法。首先从训练样本中自动学习BN层比例因子[10],将其作为特征图及滤波器的重要性权重,并通过反向传播进行动态更新。然后对其进行稀疏正则化训练,经排序计算出全局最优阈值,从而修剪出最优子网络。为了解决因修剪率较大而导致断层的问题,提出了全局-局部阈值策略。最后利用过参数化的卷积替换传统卷积方法,在不增加模型尺寸的前提下,提升剪枝模型性能。

1 卷积神经网络

为了更好地描述滤波器剪枝过程,本文首先介绍卷积神经网络及其卷积方式。卷积神经网络由多个卷积层与全连接层组成,如图1所示。其中卷积层通过卷积计算、正则化、非线性变换及池化操作实现对输入图像的特征抽取,全连接层通过矩阵运算及非线性变换生成类别得分。卷积神经网络这种分层处理结构,通过对低层、中层及高层特征的提取,显著提升了对图像的特征表示能力。

图1 卷积神经网络

卷积运算的输入由多个被称为通道的2D特征图组成,与3D卷积核进行卷积计算后,生成下一层的特征图。其中,第l层卷积计算可以表述如下

(1)

对滤波器剪枝来讲,卷积核Kl被分为重要的与非重要的两类。滤波器剪枝通过移除非重要的卷积核,实现对模型的压缩。而卷积核粒度上的修剪,与特征图通道剪枝本质上是一致的,即当移除某个卷积核时,对应的特征图被删除。同样,如果某个特征图被移除,那么相对应的滤波器也会被修剪。因此,本文从特征图的重要性评估出发,实现卷积神经网络的滤波器剪枝。

2 提出方法

针对现有逐层固定比率的滤波器剪枝算法不易寻找到最优子网络的问题,本文提出了一种基于稀疏约束的滤波器剪枝方法。该方法通过搜索网络模型中最优的特征图通道配置,实现网络模型中冗余参数修剪,具体包括稀疏正则化训练、全局-局部阈值策略及过参数化卷积,整体流程如图2所示。

图2 稀疏约束滤波器剪枝框架流程

2.1 基于稀疏正则化训练的滤波器剪枝

滤波器剪枝算法通过移除不重要的特征通道进行模型压缩。其中,特征通道重要性的评估对模型剪枝至关重要。BN层广泛存在于卷积神经网络中,因此选取对应通道激活程度的BN层比例因子,作为特征图的重要性衡量标准,可增加提出剪枝方法的普适性。然而该比例因子通过反向传播动态更新生成,层与层之间的尺度不一致。本文引入稀疏正则化训练,迫使不重要特征图的比例因子趋近于0,从而移除对应的特征图,进行安全的修剪,剪枝过程如图3所示。

图3 剪枝

首先利用式(2)对BN层进行归一化处理,但是该变换操作丢失了从底层网络学习到的参数信息。因此,本文通过引入了两个可学习(learnable)的参数γ和β, 利用式(3)对规范化后的数据进行线性变换,恢复数据本身的表达能力

(2)

(3)

其中,zin、zout为BN层的输入与输出特征图,B为最小的批图像数据,μB和σB是B特征图的平均值和标准偏差,γ为比例因子,β是偏置项。

BN层比例因子γ分布均衡,难以直接用于特征图重要性判定指标。因此,本文提出稀疏正则化训练方法,通过对损失函数中的比例因子施加l1正则项,使不重要特征图对应的比例因子趋近或者等于0。其中,基于稀疏正则化训练的损失函数为

L′=L+λRs(γ)

(4)

L是损失函数,γ∈n表示BN层的比例因子,λ为惩罚因子,Rs(·) 表示在BN层比例因子上施加的稀疏正则化函数。

通过式(4)对比例因子进行稀疏正则化训练,使得不重要特征图对应的比例因子趋近或者等于0。因此,可对特征图重要性指标γ∈n排序,根据预设的剪枝率,删除较小的比例因子对应的特征图。其中剪枝阈值θ表示如下

θ=Sortp(γ)

(5)

式中:Sort(·) 表示对稀疏正则化训练后的比例因子排序操作,p表示预设的特征图及滤波器的剪枝率。

由于对所有比例因子进行统一排序,在删除低于剪枝阈值θ对应的特征图过程中,会出现由于某一层全部被修剪而引起的断层现象。为此,本文提出了全局-局部阈值的防断层机制,当某一层的所有尺度因子均低于设定的全局阈值时,对该层所有尺度因子进行排序,选取最大和次大因子的平均值作为该层的局部阈值,保留比例因子大于该阈值所对应的特征图,从而可以防止断层现象。

2.2 过参数化卷积

剪枝操作通过删除非重要的特征图实现对模型的压缩,由于损失部分特征信息,可能会导致模型精度下降。因此,本文采用过参数化卷积去替换网络模型中的普通卷积,在保持模型大小的前提下,加速模型训练并提升被修剪模型的性能。该计算方式由普通卷积和深度卷积组成[11]。

普通卷积操作基于一组卷积核对输入特征图进行滑动窗口处理。假设第i层的滑动窗口表示为张量Pi∈(ki×ki)×ni-1, 其中ki是核大小,ni-1是第i-1层中特征图的通道数。则卷积操作可表示为特征图张量P与权值W的乘积,计算公式如下

(6)

式中:t表示特征图滑动窗口号。对于ki、ni-1和ni分别取2、3和2时,一个普通卷积的运算如图4所示。

图4 普通卷积计算

深度卷积将上一层的多通道特征图拆分为单个通道的特征图,分别对它们进行单通道卷积并重新堆叠在一块。其中拆分操作只是对上一层的特征图做了尺寸的调整,而通道数没有发生变化,因此降低了参数量。深度卷积核表示为3D张量Wi∈Dmul×(ki×ki)×ni-1, 其中i为卷积层数,ki是核大小,ni-1是第i-1层中特征图的通道数,Dmul被称为深度乘子。则深度卷积算子‘∘’可以描述为卷积核Wi与特征图张量Pi的乘积,输出为Dmul×ni-1维特征图计算公式如下

(7)

式中:t表示特征图滑动窗口号。对于ki、Dmul和ni分别取2、2和3时,一个深度卷积的运算如图5所示。

图5 深度卷积计算

过参数化卷积由带有可训练核Di∈Dmul×(ki×ki)×ni-1的深度卷积和带有可训练核Wi∈ni×Dmul×ni-1的普通卷积组成,其中Dmul≥(ki×ki)。 与普通卷积相同,过参数化的卷积输出也是一个ni维特征图过参数化卷积表示为卷积核 (Di,Wi) 与特征图张量P的乘积。该过程可通过两种等价方式实现,特征图组合(a)和卷积核组合(b),具体计算公式如下

(8)

对于ki、Dmul、ni-1和ni分别取2、4、3和2时,一个过参数化卷积的运算如图6所示。

图6 过参数化卷积计算

3 实验结果与分析

为了验证所提方法的有效性,本文基于PyTorc[12]框架,选用VGG、ResNet[13]及DenseNet在不同的基准图像数据集上进行实验。实验环境为Intel(R)Xeon(R)CPU E5-2650 v4@2.20 GHz,两块NVIDIA Quadro M5000 GPUs、32 GB RAM、64位Windows 10版本。

3.1 数据集

卷积神经网络模型轻量化领域最常用的数据集有MNIST、CIFAR-10/100、ImageNet。MNIST数据集过小,ImageNet对于机器硬件要求极高,CIFAR有两种不同规模的数据集,可适用于不同的应用场景,因此本文采用CIFAR数据集用于评测算法有效性。该数据集图像分辨率为32×32的彩色图像,CIFAR-10由10个不同类别的6万张图像数据构成,其中训练图像5万张(每类5千张),测试图像1万张(每类1千张)。而CIFAR-100由100个不同类别的图像数据构成,其中训练图像5万张(每类500张),测试图像1万张(每类100张)。

3.2 网络模型训练细节

本文采用随机梯度下降法进行网络权重参数的寻优,其中Batch大小设为64,总周期(epoch)为160,初始学习率设为0.1,在训练总周期数的50%和75%处调整学习率为原来的十分之一。另外,采用文献[14]的权值初始化方式,权重衰减为10-4,动量为0.9,通道缩放因子初始化为0.5。当对施加通道稀疏正则化的网络模型进行训练时,不同的网络模型采用不同的权衡因子λ。 选用的VGG、ResNet与DenseNet的λ取值分别设为10-4、10-5和10-5。

3.3 实验结果及分析

3.3.1 CIFAR-10实验结果与分析

本文基于小规模的CIFAR-10数据集,在VGG、ResNet和DenseNet这3种典型的神经网络架构上评估了所提出方法的有效性。为了与现有SOTA方法Liu et al[9]对比,本文实验采用VGG的改进版本(https://github.com/szagoruyko/cifar.torch),ResNet采用了164层预激活瓶颈结构的ResNet(ResNet-164),DenseNet使用生长率(growth rate)为12的40层网络(DenseNet-40)。3种网络架构的参数量,FLOPs及其分类精度所对应数值作为衡量剪枝后模型性能的基准,实验结果见表1。

表1 基准网络模型在CIFAR-10上的参数数量、FLOPs与分类准确率(Top-1)

首先给出了VGG-16在CIFAR-10上的实验结果对比,如表2所示。当70%的通道被修剪时,参数量减少了79.43%,FLOPs为基准值的40.24%,此时被剪枝模型精度与原始模型精度相当。当80%通道被修剪时,参数量与FLOPs分别减少了80.83%与55.55%,在保持模型识别精度相似的前提下,本文提出方法的FLOPs减少量明显优于Liu et al[9]。因此,所提方法在普通的神经网络压缩中表现出了优越的性能,实现了较大的压缩和加速比。

表2 CIFAR-10上VGG-16的剪枝效果

在ResNet-164上的实验结果见表3。当40%的通道被修剪时,相对基准网络模型,参数量下降19.41%,FLOPs降低了17.85%。与Liu et al[9]相比,参数量与FLOPs有明显的降低,且模型性能提升0.54%。当60%的通道被修剪时,模型参数量及FLOPs分别降低了35.88%与33.93%,与Liu et al[11]相比,参数量与FLOPs有明显的降低,且模型精度提升0.36%。同具有大量冗余权重参数的VGG网络相比,由于瓶颈结构(bottleneck)的存在,ResNet-164参数与FLOPs下降不明显,但仍取得了令人满意的效果。

表3 CIFAR-10上ResNet-164的剪枝效果

由于DenseNet层与层之间的复杂连接,本文引入通道选择层使得卷积与恒等连接的通道数保持一致,剪枝效果见表4。当40%的通道剪枝时,模型参数与FLOPs分别下降35.23%、19.04%,与Liu et al[9]相比,本文所提方法参数量与FLOPs有明显降低,且识别精度相当。当60%的通道被修剪时,模型参数量与FLOPs分别有86.67%和79.74%的下降,与Liu et al[9]相比,本文提出算法压缩与加速优势明显,同时相对原始的基线模型,仍有0.28%的精度提升。因此,本文所提方法对于具有密集连接的网络同样十分有效。

表4 CIFAR-10上DenseNet-40的剪枝效果

3.3.2 CIFAR-100实验结果与分析

为进一步验证提出方法的有效性,本文选用3种典型网络VGG-16、ResNet-164与DenseNet-40在较大数据集CIFAR-100上进行了实验。其中3种基准网络模型的参数量,FLOPs及其分类精度见表5。

表5 基准网络模型在CIFAR-100上的参数量、FLOPs与分类准确率(Top-1)

由于CIFAR-100数据集较大,需要较多的参数量用于模型的表征,区别于CIFAR-10,在CIFAR-100上,VGGNet的修剪比例不易过大,调整为50%、60%,实验结果见表6。当50%的通道被剪枝时,所提方法模型参数下降54.23%,FLOPs下降29.56%,与Liu et al[9]相比,所提算法的精度提升0.39%。当剪枝率增至60%时,所提方法的参数量与FLOPs分别下降65.64%和40.50%,此时所提算法仍具有较高的分类精度。由于FLOPs主要由卷积层决定,所提方法主要针对卷积层进行的修剪,因此导致VGG-16在较大数据集CIFAR-100上的剪枝效果出现参数量与FLOPs下降不一致的现象,但所提方法在较大数据集上对于普通卷积仍表现出了优越性。

表6 CIFAR-100上VGG-16的剪枝效果

对于带有残差块的ResNet-164,本文所提方法在CIFAR-100上分别进行了40%与60%粒度的通道修剪,其剪枝结果见表7。当40%的通道被修剪时,模型参数量下降了13.95%,FLOPs下降了26.94%,与Liu et al[9]相比,所提方法具有更好的识别精度。当60%的通道被修剪时,参数量与FLOPs分别下降了26.74%和46.42%,与Liu et al[9]相比,本文所提算法的下降精度更小。因此在较大的数据集CIFAR-100上,本文所提剪枝方法对于带有残差块的网络也有良好的性能。

表7 CIFAR-100上ResNet-164的剪枝效果

最后,本文在较大数据集CIFAR-100上,对有密集连接块的DenseNet-40进行了剪枝操作,实验结果见表8。当40%的通道被修剪时,模型参数量与FLOPs分别下降37.27%和26.89%,与Liu et al[9]相比,所提算法的精度提升了0.25%。在60%的通道被修剪时,参数量与FLOPs下降55.45%和42.61%,Liu et al[9]识别精度下降了0.36%,但本文所提方法反而有0.03%的精度提升。实验结果表明,在较大的数据集CIFAR-100上,本文所提方法对带有密集连接块网络仍具有较好的剪枝性能。

表8 CIFAR-100上DenseNet-40的剪枝效果

3.4 消融实验

卷积神经网络的性能会受很多因素的影响。为了验证过参数化卷积对改善被修剪模型性能的有效性,本文选用VGG-16、ResNet-164与DenseNet-40在小图像数据集CIFAR-10上进行了系列实验,只用过参数化卷积代替传统卷积层,而不改变其它设置。这保证了观察到的性能变化是由于过参数化卷积的应用,而不是其它因素造成的。此外,这也意味着没有超参数调优以有利于使用过参数化卷积的模型,实验结果如图7所示。可以看到,无论任意组合的FLOPs剪枝率与网络模型,加入过参数化卷积的网络在精度上始终优于传统的卷积方式。另外,由于ResNet-164网络模型的紧致性,使得其剪枝率不宜过大,否则易导致精度下降明显,但是其剪枝网络模型与在性能上始终优于VGG-16与DenseNet-40。此外,虽然VGG-16与DenseNet-40具有相似的性能,但由于密集连接的存在,DenseNet-40网络的参数量与FLOPs下降最多。同时,VGG-16模型的FLOPs下降不是最多,但经过修剪后模型的精度反超DenseNet-40,这也间接表明,VGG-16内存存在大量的冗余,通过本文提出方法能够找到更好的子网络。

图7 普通卷积与过参数化卷积的性能对比

4 结束语

本文提出了一种基于稀疏约束的滤波器剪枝算法,通过对批处理归一化层比例因子引入稀疏正则化,在全局-局部阈值策略的约束下,使得网络模型可以自动识别与修剪不重要的特征图通道。此外,在保持网络模型大小的前提下,采用过参数卷积改善被剪枝网络模型的性能。在CIFAR-10和CIFAR-100上,我们选用VGG-16、ResNet164与DenseNet40这3种典型的网络进行了剪枝实验。实验结果表明,在较大的压缩比下,相比SOTA方法,本文提出方法的参数量与FLOPs下降明显,且保持了较高的识别精度。同时,提出方法训练成本小且模型较易部署。

猜你喜欢
剪枝滤波器卷积
人到晚年宜“剪枝”
基于3D-Winograd的快速卷积算法设计及FPGA实现
基于YOLOv4-Tiny模型剪枝算法
基于激活-熵的分层迭代剪枝策略的CNN模型压缩
卷积神经网络的分析与设计
从滤波器理解卷积
开关电源EMI滤波器的应用方法探讨
基于傅里叶域卷积表示的目标跟踪算法
一种微带交指滤波器的仿真
剪枝