APP下载

一种混合阈值剪枝的稀疏化训练图像识别算法

2021-02-23宋叶帆王国书盛步云

科学技术与工程 2021年2期
关键词:剪枝精简阈值

宋叶帆,王国书,盛步云*

(1.武汉理工大学机电工程学院,武汉 430070;2.海军工程大学动力工程学院,武汉 430070)

近年来,深度学习不断发展,尤其是深度学习的神经网络在计算机视觉、图像识别及目标检测中占有重要地位,引起学者们的广泛关注,并取得了许多研究成果[1-6]。

神经网络的结构在训练之后会有冗余的存在,自VGG(visual geometry group)网络出现后,深度学习的神经网络的计算量越来越大[7]。文献[8-10]提出一种无数据剪枝方法,并采用该方法对神经元之间的冗余问题进行了研究;Li等[11]选择对卷积核上的权重进行求和,以评价卷积核重要性及程度;Hu等[12]使用了APoZ(average percentage of zeros)确定核中激活函数(activation function)值是0的数目,以上两个方法和损失函数没有关联。周安众等[13]提出了一种训练时对节点引入稀疏性限制,使网络删去激活值低的节点。Mao等[14]通过粗、细粒度卷积神经网络(convolutional neural network,CNN)剪枝方式的实验得出了粗粒度的剪枝方式在这个方面表现较好。但是如果使模型向粗粒度压缩的方向演进容易导致过拟合[15-18]。但是上述文献对神经网络模型压缩的研究还不够充分。

针对以上问题,提出一种混合多阈值的稀疏化训练剪枝算法,通过对神经网络层的每个通道引入缩放因子并添加L1正则化方法,对神经网络层中通道的重要性进行评估,引入损失函数,再设置合理的阈值,删去重要性低的卷积核的同时防止过度剪枝导致过拟合,最后对精简的模型再次训练来微调参数。将简化后的网络模型在DOTA(a large-scale dataset for object detection in aerial images)数据集上进行测试,以验证其检测识别效果。

1 模型压缩方法原理分析

1.1 卷积核剪枝的原理

1.1.1 卷积层的结构化计算

假定第i层卷积层输入通道的数量为ni,wi、hi分别为输入特征图xi的宽和高,如图1所示,K表示单个二维卷积核,该层所有的二维卷积核可表示为卷积核矩阵Fi。输入通道ni和输出通道ni+1分别构成了卷积核矩阵的宽和高,每列的卷积核K组成一个三维卷积核Fi,j,Fi,j中的每个二维卷积核分别同对应输入通道的特征图做线性变换,从而提取输入的一类特征,共提取出ni+1类特征并形成ni+1张特征图,经过激活函数处理之后输送至下一卷积层。因此,卷积层中以卷积核为计算单位,在特征提取时以三维卷积核Fi,j为单位。

1.1.2 卷积核剪枝对计算次数的影响

假定图1中第i层卷积核的大小均为k×k,其中k为卷积核的边长,该卷积层中的计算量为hiwinini+1k2,假定图1中的三维卷积核Fi,j被剪除,从而减少nihiwik2次计算,即其对应的特征图xi+1,j也会被移除,则第i+1层卷积层的减少一个输入通道,该层的计算次数相应减少了ni+2hiwik2次,从而达到精简卷积神经网络结构,降低计算量的要求。

1.1.3 单卷积层剪枝策略

卷积核的精简表明其产生的特征图被丢弃,该操作实际上是保留作用较大的卷积核,丢弃作用较小的卷积核。卷积核剪枝方法使用L1范数‖Fi,j‖l,即Fi,j内所有参数的权值的绝对值之和∑|Fi,j|衡量每个三维卷积滤波器重要性。对于第i层卷积层中的三维卷积滤波器Fi,j,各通道的输入值是共享的。因此,∑|Fi,j|在一定程度上代表对应输出特征图的重要程度。权值较小的卷积核对输入特征的响应程度较低,起到的作用更小。对于卷积神经网络模型,具体剪枝步骤如下。

(1)对卷积层中的每一个三维卷积滤波器Fi,j,计算其L1范数。

(2)根据L1范数大小对Fi,j进行排序并丢弃值较小的m个三维卷积滤波器。

(3)将前向计算中对应的后一层中的一行卷积核丢弃。

(4)根据剪枝结果生成新的卷积核矩阵,保留下来的卷积核权值直接继承。用于提取特征的卷积神经网络Darknet中的层数较多,不便于对每个层独立地设置剪除三维卷积滤波器的个数,同时也为了避免引入卷积层级别的独立参数,在实际编程中对每个层设定相同的剪枝比例来决定剪枝规模的大小。

对某一特定卷积层的剪枝会对后面的卷积层产生连锁反应,因此理论上需要按照卷积层的堆叠顺序进行剪枝操作,这样的逐层卷积核剪枝方法制约了计算速度,造成计算资源的浪费,因此可以考虑将不同层的卷积核作为卷积计算通道进行剪枝,如图2所示。

图2 网络混合剪枝的框架图

1.2 通道剪枝

通道剪枝能够把网络中各层的特征图(feature map)的数目降低,而CNN的内存在feature map中存放的比较多。因此该剪枝方法不仅可以将网络中被占用的存储空间进行裁剪,还可以同时对运行内存进行优化。

由于通道剪枝后的CNN结构不产生稀疏矩阵,对特制硬件和运算库没有要求,所以也方便进行加速。原网络在经过通道剪枝之后将会变窄,因此能够与权值张量分解、权值共享等技术结合使用,达到网络冗余减少。

2 基于通道剪枝的分类模型压缩

2.1 分类模型压缩总体方案

对VGG16算法中的卷积层,采用通道剪枝方法精简特征提取网络的结构。在VGG16中,参数和推理计算主要集中于特征提取网络部分。用于提取特征的卷积神经网络Darknet是一个基于C与CUDA(compute unified device architecture)的深度学习框架。这意味着Darknet中包含着大量的冗余部分,对这部分的网络结构进行分类精简,从而降低参数量和计算量,为模型在嵌入式设备上的使用创造条件。

将通道剪枝的方法应用到遥感分类模型的特征提取网络Darknet,总体方案是将图1所示的卷积层中每列二维卷积核视为一个特征提取通道,首先通过稀疏化训练对Darknet卷积神经网络结构的每个神经网络层(主要是卷积层)中的通道重要性进行评估,设置合理的阈值,将重要性低于该阈值的通道上的卷积核删去,同时根据前一卷积层的通道建制结果,删去对应行数的所有二维卷积核,既能使各卷积层同时剪枝,由兼顾了各层建剪枝结果的耦合关系,简化卷积神经网络的结构;将精简之后的分类模型再次训练微调参数,补偿因精简网络结构带来的检测分类效果下降。该方法实施的主要步骤如图3所示,主要分为如下步骤。

图3 分类模型压缩总体方案

(1)稀疏化训练,评估相邻各层通道的重要性。

(2)对重要性低于阈值的通道进行剪枝操作。

(3)对剪枝得到的精简模型再次训练,微调其参数。

(4)测试微调后的精简模型性能。

(5)重复步骤(1)~(4)。

2.2 稀疏化训练方案设计

在模型在压缩中,稀疏化训练的作用是评定各通道的重要程度。在稀疏化训练方法中,为Darknet的每个神经网络层的每个通道都引入缩放因子(γ),使其与该通道的输入相乘,使得每层的各通道提取的特征发挥不同比重的作用。在训练过程中,对γ添加L1正则化方法,更新神经网络中的权值和γ,L1正则化可以起到通道选择的作用,使得重要性降低的通道γ尽可能接近零,即对缩放因子γ进行稀疏化。相应地,根据神经网络中参数的变化,引入与γ相关的惩罚项,则训练过程中的损失函数调整为

(1)

式(1)中:Lprun表示VGG16分类模型中的分类损失;lVGG16表示VGG16的损失函数;g(γ)=|γ|,表示L1正则化;λ为超参数,作用是平衡分类损失和通道缩放因子惩罚项损失的比重;Γ表示缩放因子(γ)的取值集合。

由于有对VGG16的损失函数进行了自适应均衡化改进,而式中尚不包含对惩罚项的自适应均衡因子,因此整个损失函数需要采用优化方形式,添加了惩罚项的损失函数应当表示为

(2)

式(2)中:(1-pi)表示损失函数的优化系数。

Darknet中的每个卷积层后面都添加了批量正则化层减轻输入数据的变化造成的模型权值震荡,从而促进模型收敛,其对输出数据的处理过程可以表示为

(3)

(1)不使用BN层,仅添加通道缩放因子。该情况下相当于经过了卷积核和缩放因子的两次线性变换,总体效果相当于一次线性变换,因此不可行。

(2)在BN层前和卷积层后添加通道缩放因子。该情况下通道缩放因子的作用会被BN层中的非线性转换过程抵消,因此不可行。

(3)在BN层后添加通道缩放因子。该情况下同一个卷积层收到两个独立的缩放因子同时影响,造成模型训练的不稳定。

实际上,BN层中的缩放因子γ实际上就是对该层中各个通道的输出的初步正则化结果进行的线性转换,其取值本身就决定了该通道在特征选择中起到的作用大小。基于以上分析,稀疏化训练过程直接将BN层中的缩放因子(γ)作为通道缩放因子进行训练迭代。

2.3 通道剪枝方案设计

通道剪枝就是根据稀疏化训练的结果对网络的结构进行精简的过程。剪枝之后模型的性能,会有所下降,通过参数微调可补偿性能的下降部分。

2.3.1 全局剪枝阈值

图4 通道剪枝过程示意图

2.3.2 卷积层局部阈值

在图4(a)中,第i层卷积层中标红的通道2中缩放因子接近于零,意味着经过自学习的模型认为该通道所提取的特征对目标的识别和分类几乎没有意义,经过剪枝操作之后,该通道被删去,剪枝之后的卷积神经网络模型如图4(b)所示。该通道上的卷积核及其参数将不会被保存,达到压缩模型的效果。

2.3.3 对跳跃连接结构的处理

VGG16使用Darknet作为提取特征的基础卷积神经网络,Darknet具有类似残差网络的跳跃连接的结构,在剪枝过程中需要保证本体特征图和残差特征图融合通道的一致性。

在图5所示的残差结构中,作为跳跃连接的起点,卷积层i的输出通道数量不会直接影响残差模块的输出通道数,该层的剪枝操作不受约束;在残差结构中,1×1卷积核矩阵使本体特征图P(xi)与第i+1层的输出xi+2的通道数量保持一致。其行数与xi相同,列数与第i+2层的卷积核矩阵相同。两者的独立剪枝操作使得通道特征不再匹配,造成剪枝后的模型性能退化。因此,应当保证两者的剪枝结果相同。鉴于跳跃连接对深层网络中的性能的明显提升作用,将用于生成本体特征图的1×1卷积核矩阵的剪枝结果作为其与残差模块中第i+2层中共同的剪枝结果,将本体特征图P(xi)与残差特征图xi+2的特征进行对应通道相加匹配。

图5 残差结构剪枝

将压缩之后的模型命名为prun-VGG16,压缩之后的模型对典型遥感目标的识别和分类精度将会不可避免的有所下降,对剪枝之后的分类模型在此进行训练,即对参数进行微调,弥补剪枝造成的精度下降。

3 实验与分析

选择训练好的VGG16模型作为待压缩模型。首先在DOTA数据集上进行稀疏化训练,然后根据权值大小进行剪枝,最后对剪枝后得到的 prun-VGG16 模型再次在DOTA数据集上进行训练,以微调保留参数的值,将该过程循环4次,得到最终的prun-VGG16模型。

由表1可知,随着模型压缩率的增加,训练速度显著增加,代价是平均精确率(mean average precision,mAP)出现下降。压缩率越大,精确度下降的幅度越大,但是其下降幅度也是有限的,在压缩率为90%时,其平均精确率仍可以达到 82.9%,略低于原版 VGG16的平均精确率,而压缩率达到95%时,与压缩率为90%相比,其精度发生了大幅度的下降,在此过程中,可能会有一部分比较重要的卷积核结构被去除了,因此可以确定模型的极限压缩率为90%。

表1 Prun-VGG16在不同压缩率下的训练数据

表2为优化过的prun-VGG16和CNN、ResNet(residual network)及原版VGG16对图像数据集训练的对比,表2中经过剪枝的VGG16版本相对于VGG16在时间上减少了53%。优化后的VGG16相比于CNN、ResNet平均精确率分别高出5%、18%,时间减少70%、25%。综合上述,经剪枝优化后的VGG16在遥感图像数据集的训练上与其他网络算法对比,减少了计算量,保证了训练精度,可以取得较好效果。

表2 不同算法的训练数据

最后在DOTA数据集上对3类目标测试。表3展示了模型对各类目标检测识别的效果。首先对飞机一类目标的检测识别效果,每个目标都在识别结果里,对小目标的检测效果较好。桥梁一类目标的检测中,模型检测识别效果是对的。车辆一类的目标在目标密集情况下,较大目标的识别效果略有降低。新的网络模型对比之前模型的识别效果,仅降低了对目标识别精度的微小幅度,图片中数量较多但是较小的目标,一般可以被正确地定位并分类。所提方法已经具有一定的实际应用意义。

表3 模型对各类目标检测识别的效果

4 结论

提出了一种混合阈值剪枝的稀疏化训练图像识别算法。实验结果表明,通过稀疏化训练和混合不同阈值剪枝后的改进VGG16模型能够去除90%的模型大小,并且加快53%的计算速度,实现了以极小幅度图像识别精度降低为代价,大幅减少模型大小,极大提高了计算速度。但针对如何解决模型优化后在精度上微小下降的问题,还有待进一步研究。

猜你喜欢

剪枝精简阈值
人到晚年宜“剪枝”
土石坝坝体失稳破坏降水阈值的确定方法
基于区域分割的多视角点云精简算法
基于YOLOv4-Tiny模型剪枝算法
很美,很暖,很享受 Unison Research(优力声) MAX Mini书架音箱 Simply Italy精简意大利真空管合并放大器
采用红细胞沉降率和C-反应蛋白作为假体周围感染的阈值
基于激活-熵的分层迭代剪枝策略的CNN模型压缩
一种面向应用的流量监测精简架构设计
剪枝
辽宁强对流天气物理量阈值探索统计分析