一种基于通道域自注意力的特征图剪枝方法
2022-03-22胡建强周小报梁铭枫
胡建强,刘 洋,周小报,梁铭枫
(厦门理工学院计算机与信息工程学院,福建 厦门 361024)
随着深度神经网络在图像识别、语音识别[1]、自然语言处理等领域的深入应用,大型深度神经网络参数规模和计算量呈现急速增长。大型深度神经网络的训练和应用严重依赖高性能处理器图像处理单元和并行处理技术,限制了嵌入式设备端的推广和应用,例如自动高速驾驶[2]对网络推理速度有较高要求,直接采用原始网络模型难以达到所需效果。通过网络压缩降低网络参数量,可在相同硬件环境下提高推理速度,使神经网络可在资源有限环境部署应用[3]。
网络剪枝[4]是网络压缩的常用方法之一,可大量减少神经网络冗余参数。通过修剪无效滤波器,使模型具有尽可能高的压缩比的同时能保持较高的准确率。目前,基于剪枝的网络压缩方法中应用较为广泛的有2类:第1类为非结构化剪枝方法,此类剪枝方法在滤波器粒度进行核内剪枝,可移除滤波器内无效权值,但面临稀疏矩阵的问题,不仅增大计算难度,且需要特殊计算硬件支持;第2类为结构化剪枝方法,将神经网络中冗余滤波器进行整体剪枝,此类方法在不改变原网络计算方式的同时,可大幅降低神经网络参数量和计算量,备受关注。
基于滤波器自身属性剪枝和基于特征图的滤波器剪枝[5]是结构化剪枝[6]的2种常用方法。针对滤波器的自身属性,文献[7]提出一种基于L1正则化缩放因子的极化正则化方法,将缩放因子趋于0的滤波器剪除,但由于数据噪声的影响,剪枝阈值存在较大波动,剪枝后网络准确率难以保证。文献[8]通过学习不同层滤波器的全局排序信息,利用滤波器的参数仿射变换代替正则化范数信息进行重要性评估,然而计算滤波器的全局排序需要耗费大量计算时间,且由于输入数据的分布变化,滤波器的参数仿射变换范围波动较大。由于神经网络下层滤波器和上层滤波器呈相关性,文献[9]采用贪心策略对滤波器不同组合的网络准确率进行滤波器评估,此种方法需大量计算时间,且易陷入局部最优解。为避免滤波器层间关系影响,文献[10]采用数据流的方式评估滤波器,将没有数据流过的滤波器视为无效滤波器进行移除,但忽略噪声信息的影响,将无效数据流过的滤波器误保留,增加无效计算开销。而文献[11]通过滤波器骨架(filter skeleton)将滤波器的形状和权值分开评估,对滤波器进行逐条剪枝,但该方法对滤波器的评估依赖于网络训练过程中的数据信息,难以避免噪声信息干扰引起的误剪枝。上述基于滤波器自身属性的剪枝方法需要重复进行网络重训,评估滤波器对神经网络的贡献度,并且上下层滤波器间存在极强的相关性,不同层间滤波器也存在特征相关性,难以找到全局最优解。不同于滤波器属性的剪枝方式,基于特征图剪枝的方法使用数据经过滤波器生成的特征图对滤波器的网络贡献程度进行评估,从而决定是否剪除生成该特征图的滤波器。文献[12-13]利用特征图的秩信息评估滤波器的贡献度,但是由于存在数据噪声信息干扰,特征图的秩并不只包含数据有效信息,因此难以准确评估滤波器贡献度。
上述特征图的剪枝方法计算繁杂,存在背景或噪声数据干扰,难以保证模型的准确率和稳定性,因此,本文提出一种阶段式特征图剪枝方法,先通过主成分分析(principle component analysis,PCA)去噪算法对数据进行预处理,弱化数据空间特征中的噪声影响,然后引入通道注意力机制为各通道分配权重并进行评估排序,移除低权重通道的滤波器,从而降低模型的参数量,在保证剪枝后神经网络的准确率,同时提高推理速度。
1 方法设计
1.1 总体流程
针对数据集噪声信息分布杂乱、缺乏固定特征的问题,可通过特征分析的方法将噪声信息与数据信息进行区分。首先,使用PCA算法对数据进行去噪处理,降低神经网络提取特征时的噪声特征干扰。然后,针对神经网络的冗余滤波器,引入通道域自注意力机制为各通道分配权重并进行排序,根据设定的剪枝率将生成低权重的通道特征图的滤波器移除。最后,对剪枝后的网络进行重训练、精调,恢复精度。总体流程如图1所示。
图1 基于通道域自注意力的特征图剪枝方法的总体流程Fig.1 General flow of the feature map pruning based on channel domain self-attention mechanism
1.2 基于PCA的主动降噪干扰
原始数据集中混杂大量噪声信息,为准确评估特征图对神经网络的贡献度,需要降低噪声影响,尽可能保留有效目标信息。PCA算法作为机器学习中的经典非监督算法,可保留数据主要特征。将数据进行PCA处理可降低噪声信息干扰,更准确地评估滤波器的贡献度,同时可降低网络计算复杂度,且可提升网络准确率。
PCA算法的核心思想是通过线性变换将数据投影到方差最大的坐标轴上,使数据中各主成分之间得以区分。将各主成分进行排序,保留需要的主成分,再还原到原始空间。设原始数据为X={x1,x2,x3,…,xm},xi∈Rd,具体过程如下。
1)样本特征减去特征均值。计算数据样本特征均值μ,再将样本特征减去该特征均值。公式为:
(1)
(2)
数据集特征均值μ=(μ1,μ2,…,μk),μ∈Rd。
2)计算数据样本的协方差矩阵G=XXT。
3)对G矩阵进行特征值分解,计算特征向量和特征值。将生成的特征值从大到小排序,保留所需的特征值和特征向量,再将得到的特征向量组合成特征矩阵U=(u1,u2,…,uk),u∈Rd。将得到的特征矩阵U和原始数据进行计算,得到降维后的近似数据Z=(z1,z2,…,zm),计算过程为:zi=UTxi,i∈(1,2,…,m)。
数据中的噪声信息对应的特征值通常较小,因此,丢弃低于指定阈值的特征值可将噪声信息从数据中去除。此外,将数据从高维空间降到低维空间后,消除重复线性信息,降低不必要的计算开销。经过PCA去噪算法处理的数据,消除了空间特征信息噪声的干扰,避免噪声信息进入神经网络计算过程,使滤波器提取特征信息更准确。
1.3 基于通道注意力的特征图剪枝
1.3.1 通道域注意力信息
数据空间维度噪声经PCA去噪算法进行消除,神经网络设计过程引入的冗余滤波器,计算时生成无效特征图可视为通道维度的噪声信息。本文将改进的 Leaky-Squeeze-and-Excitation block加入神经网络结构中进行通道重要性评判,移除冗余滤波器。Leaky-SE block结构如图2所示。
图2 SE block模块结构Fig.2 SE block module structure
图2中:X表示原始特征图;α表示经过注意力机制加权的特征图与原始特征图融合得到的复合特征图。H×W×C表示特征图H行W列,特征图有C个通道。Leaky-SE block模块通过注意力机制为不同通道特征图分配大小不同权重,具体有如下2个主要步骤。
1)挤压特征图。对X特征图先进行全局平均池化,将二维特征压缩为一维实数,使该实数具有全局感受野,经过挤压操作,特征图形状由H×W×C变形为1×1×C,扩大了感受区域。经挤压操作后生成融合特征图δ,即有
(3)
式(3)中:Xc表示特征图X的第c个通道的像素累加值。特征图各通道由于滤波器提取的信息重合存在相互依赖,为降低通道间的依赖关系,获取全局性的感受野,特征图经过全局平均池化,将单个通道二维特征图压缩为一个实数,弱化空间尺度上的特征信息影响。
2)特征图激励。得到经过挤压操作后的融合特征图δ后,依次通过2层全连接层,得到1×1×C的α特征图,即有
α=Fex(z,W)=σ(g(z,W))=σ(W2ϑ(W1δ))。
(4)
(5)
经2层全连接得到的α实质为一组可学习的参数w。α特征图和原始特征图X相乘的结果Z作为下一层的输入。网络训练完成后,参数w学习到的一组范围在0~1之间的权重值就是特征图各通道经注意力机制计算出的重要度,权值越大,说明该通道提取的特征信息越多。神经网络添加Leaky-SE block模块后不改变结构,通过通道注意力机制在通道层面进行无效通道抑制。Leaky-SE block模块对特征图的全局平均池化操作可融合空间特征,同时消除空间维度信息对通道维度的干扰。将注意力机制引入网络训练过程,提高网络精度,同时,以注意力机制为各通道分配的权重值大小作为评判标准评估通道贡献度。
1.3.2 基于通道注意力的特征图剪枝算法
得到SE block模块生成的α特征图后,根据α特征图的各通道权值进行重要性排序,αc表示α特征图的第c个通道,αc值较小,表示提取到的特征信息少,对应的滤波器难以提取有效特征,可将其移除。剪枝率为Pi,表示从C个通道中移除权值最小的Pi×c个通道对应的滤波器。
(6)
1)通过PCA去噪算法弱化数据空间维度特征的噪声影响。
2)通过Leaky-SE block模块生成的通道注意力权重值对特征图进行排序,删除激活能量较低的Ni+1×Pi个特征图通道,并剪枝移除对应的滤波器。
算法1基于通道域注意力的特征图剪枝算法
输入:数据样本X,降噪率s,剪枝率Pi,网络模型M输出,剪枝后模型M
1.∥PCA降噪算法预处理数据样本
2.计算数据样本X特征均值μ
3.数据样本X减去特征均值μ
4.计算数据样本的协方差矩阵G
5.对G矩阵进行特征值分解
6.特征值从大到小排序,依据设定降噪率s,保留前s特征值及对应特征向量
7.将保留数据样本的特征值和特征向量还原到高维空间
8.∥通过通道域注意力剪枝
9.网络中加入Leaky-SE block模块进行训练
10.∥神经网络模型卷积层数为K, 特征图记为F,H、W为特征图高和宽
11.H×W×C的Fi经过Global Average Pooling生成1×1×C特征图δ
12.特征图δ经过全连接操作后通过ReLU函数激活,得到1×1×C特征图ϑ
13.特征图ϑ经过全连接操作后使用Sigmoid函数激活,得到1×1×C特征图α
14.一维特征图α按照权值进行从大到小排序
15.权值最小的Pi×C个通道的权值置零
16.移除权值为零的通道对应的特征图
17.网络重训练,恢复精度
3)网络进行重训练、微调,恢复精度。
算法1中第1~3步将全部数据样本进行PCA去噪处理,首先使用全部数据计算出数据样本特征均值,再将全部数据样本减去该均值;第4~5步计算数据样本的协方差矩阵并进行特征值分解,分解协方差矩阵得到的系列特征值进行从大到小排序;第6~8步保留设定的部分特征值及对应特征向量,之后将剩余的特征值和特征向量还原到原特征空间;第10~15步对所有待剪枝卷积层逐层进行处理,每层卷积层的全部通道的特征图先进行全局平均池化,然后层内各通道特征图经激励操作得到初始值为0的可学习权重参数,在网络训练过程中学习得到权重值,将权值小的通道权值置零;第16步将权值为零的特征图通道对应的滤波器进行剪枝移除;第17步对网络进行重训练、微调,恢复精度。
2 实验结果与分析
实验选取基于滤波器权值的剪枝方法(文献[7]中的L1、文献[14]中的FPGM)、基于特征图的HRank[12]1 529方法和本文提出的压缩方法进行比对,对相同卷积神经网络进行压缩训练。文献[7]基于特征图的L1缩放因子进行剪枝。文献[14]通过计算滤波器的几何中值来评估滤波器可替代性。为评估算法性能,采用通用压缩评估指标Top-5准确率(Top-5 accuracy)、参数量和浮点运算量(float points operations, FLOPS)[15],并和现有的压缩方法进行比对。
2.1 数据集及实验环境
为验证本文算法的通用性,选用Cifar10数据集和CCTSDB数据集分别作为训练集。Cifar10数据集图像分辨率为32 px×32 px,感兴趣区域占整张图像比重较大。CCTSDB数据集中图像分辨率为1 024 px×768 px,图像内大部分为噪声或背景信息,通过在Cifar10数据集和CCTSDB数据集上的压缩效果对比,可直观展现本文算法的优越性。Cifar10数据集和CCTSDB数据集的部分样本如图3所示。
图3 Cifar10数据集和CCTSDB数据集部分样本Fig.3 Part of the data in the Cifar10 Dataset and CCTSDB Dataset
Cifar10数据集分为10类,每类含有6 000张图片,共有50 000张训练图片和10 000张测试图片。CCTSDB中国交通数据集由长沙理工大学综合交通运输大数据智能处理湖南省重点实验室整理创建,由指示标志、禁止标志、警告标志3类标志组成,共计15 734张交通标志图片。
为验证剪枝算法的有效性和通用性,选用单分支结构的VGG-16网络模型和多分支结构的ResNet-56网络模型剪枝。VGG-16网络作为16层的深度网络,证实了增加网络深度可得到更高准确率,然而却带来参数量剧增的问题。VGG-16网络计算主要集中在卷积层,通过剪枝压缩去除冗余的滤波器,可有效降低计算量。ResNet网络通过加入残差模块,实现卷积层间的恒等映射,在增加网络深度的同时,避免梯度爆炸的问题。为保证残差模块的输入和输出通道相同,仅对除残差模块内的3层卷积层中的前2层卷积层进行剪枝。
实验基于Pytorch框架,使用12 GB显存的NVDIA GeForce RTX2080Ti显卡进行推理训练,整个实验平台基于python3.7版本。在CCTSDB数据集上,Batch size设为128,训练300个epoch,初始学习率设为0.1,每100个epoch降为之前10%;在Cifar10数据集上,Batch size设为256,训练150个epoch,初始学习率设为0.1,每50个epoch降为之前10%。PCA去噪算法中特征值保留90%。
2.2 实验结果
在Cifar10数据集上的剪枝效果如表1所示。
表1 Cifar10数据集剪枝效果Table 1 Pruning effect of Cifar10 dataset
为验证基于通道注意力的特征图剪枝算法有效性,引入基于权值的特征图剪枝方法作为比较。由表1可见,L1[7]9 865和FPGM[14]4 340基于权值的剪枝算法,单纯地基于模型内部属性权值绝对值大小进行重要性排序,忽略了网络内部层间错综复杂的耦合关系,FLOPs下降34.3%时,Top-5准确率下降了0.30%~0.44%,参数量也仅减少9.58 Mb。HRank[12]1 529算法利用特征图的秩进行排序,当数据背景噪声占据主导地位时,大量无效特征图被保留,对网络准确率造成影响,网络Top-5准确率下降0.41%,FLOPs仅压缩了54%。
基于通道注意力的特征图剪枝算法可有效保留含目标信息的特征图,能保持较高准确率。本文提出的剪枝方法融合了网络模型的先验知识,使用通道的自注意力信息对特征图进行剪枝,可有效避免误剪枝。对VGG网络剪枝,当准确率仅损失0.2%时,FLOPs可降低约66.3%,参数量降低至原网络的16.7%,说明本文方法在降低参数量和计算量的同时,仍能保持模型较高精度。用在ResNet网络剪枝时,FLOPs降低38%,精度反而上升0.53%。说明在多分枝网络结构上,本文算法不仅不改变网络结构,没有额外增加计算量,反而使得神经网络模型经过剪枝压缩后保持较高准确率。
在CCTSDB数据集上的剪枝效果如表2所示。由表2可见,VGG网络模型较基线模型FLOPOs降低了48.3%,参数量降低了16.42 Mb,而精度只下降了约0.9%。相较于文献[7]中的方法,FLOPs下降了14.2%,Top-5准确率高出0.57%。ResNet网络模型采用本文剪枝方法,在精度损失1.08%的情况下,FLOPs降低了45.5%,参数量降低了0.2 Mb。由于残差模块的部分卷积层没有进行剪枝,因此相较VGG等单支路卷积神经网络,ResNet网络剪枝率略低。
表2 CCTSDB数据集剪枝效果Table 2 Pruning effect of CCTSDB dataset
为了解本文算法中剪枝率和网络模型精度的具体相关性,在CCTSDB数据集上以VGG神经网络为例进行不同剪枝率训练。剪枝率区间为10%~90%,每次增加10%,结果如图4所示。
图4 在CCTSDB数据集上不同剪枝率的VGG模型Top-5准确率Fig.4 Top-5 accuracy of VGG models withdifferent pruning rates on the CCTSDB dataset
由图4可以看出,L1[7]9 865和FPGM[11]17 629等基于权值的剪枝算法,在剪枝率30%以下时,精度有不同程度的较小下降,当剪枝率大于30%时,准确率下降较快。本文剪枝方法在VGG模型上的剪枝率在60%以上时,可稳定保持89.23%以上的准确率,剪枝率增加到80%时,仍能保持73%左右的准确率。由此可以看出,本文方法可在保证模型准确率下降较少的情况下,大幅度压缩网络。
3 结论
本文提出基于通道域注意力的特征图剪枝算法,对数据进行去噪处理,使用通道域注意力信息对特征图进行重要性评估排序,然后对相应的滤波器进行通道剪枝。实验表明,该方法可利用数据的先验分布信息,避免噪声信息干扰,在相同剪枝率下,准确率下降更少,可更好地移除无效滤波器,避免了在噪声和背景区域浪费过多算力,并在不同场景下都证明了有效性和优越性。下一步将尝试加入空间域自注意力信息,使滤波器聚焦有效特征(形状、纹理、色彩)空间域位置,将提取无效特征空间位置的滤波器进行修剪,通过通道域注意力结合空间域注意力的方式进一步提高剪枝率。