CIRBlock:融合低代价卷积的轻量反向残差模块

2023-10-30 08:57余海坤吕志刚李晓艳王洪喜李亮亮
计算机工程与应用 2023年20期
关键词:代价复杂度残差

余海坤,吕志刚,,王 鹏,李晓艳,王洪喜,李亮亮

1.西安工业大学 电子信息工程学院,西安 710021

2.西安工业大学 机电工程学院,西安 710021

3.西安工业大学 发展规划处,西安 710021

近年,基于视觉的卷积神经网络(convolutional neural network,CNN)已经被广泛应用在目标分类、目标检测等视觉任务中,并且已经取得较好的效果。现有的卷积神经网络模型在准确率和泛化能力表现较好,但往往性能的提升,伴随着网络深度和宽度的升高、参数量变大、模型复杂度快速升高,最终导致模型难以在低算力设备部署。由于卷积神经网络本身就具有较高的计算和参数冗余性,设计较低复杂度并能保证特征提取能力的轻量级卷积神经网络成为近年来主流研究方向[1-3]。

目前人工设计的轻量级卷积神经网络已经取得了令人瞩目的成绩,其主要目的在于设计更高效的网络计算方式,包括对卷积操作和网络架构进行改进[4],以此构建轻量级卷积模块和网络架构。Simonyan 等[5]在VGG中,将单层的大尺寸卷积替换为多层小卷积,在大幅减少网络参数的同时仍能获得相同的感受野,为网络结构的轻量化指明了方向;Chollet[6]提出的Xception及Howard等[7]提出的MobileNet 利用深度可分离卷积降低标准卷积模块的复杂度;Ma等[8]提出ShuffleNetV2利用逐点分组卷积降低了逐点卷积的计算量,并利用通道混洗加强特征图组间信息交流。上述工作极大地促进了轻量级神经网络的发展。Sandler 等[9]提出MobileNetV2 和Howard等[10]提出的MobileNetV3受到广泛应用,二者均采用了反向残差结构和深度可分离卷积,采用点卷积形成的特征冗余结构和深度卷积代替标准卷积,在保证网络性能基础上,大幅降低了运算量和参数量,但较多的点卷积运算仍然具有较大计算复杂度。而IGCNets[11]、IGCV2[12]、EspNetV2[13]、ANTNet[14]等提出采用分组点卷积来进一步减少点卷积计算量,但分组卷积会破坏点卷积融合所有通道信息的能力,削减了点卷积原有的作用。而Han 等[15]提出的GhostNet 利用计算代价小的低代价操作从原始卷积的特征中挖掘特征,并将低代价操作引入到反向残差结构的所有点卷积中,降低了点卷积的计算量。但GhostNet 引入的低代价操作采用大尺寸深度卷积,并对每个点卷积都增加了深度,仍可进一步优化计算量。

为了在保证神经网络基础模块特征提取能力的同时,最大程度降低模块复杂度,本文采用反向残差结构设计了一种新的轻量级卷积神经网络模块(cheap inverted residuals block,CIRBlock),主要包括以下工作:(1)针对反向残差的冗余计算进行轻量设计,通过低代价操作和旁路信息特征复用降低模块计算复杂度;(2)对轻量化后的结构进行特征通道信息增强设计,引入通道混洗、通道注意力和跨分支信息融合,设计出两种步长的轻量级模块CIRBlock;(3)利用CIRBlock人工搭建了具有不同复杂度等级的分类模型CIRNet。在VGG16[5]架构上的分类实验表明,本文提出的CIRBlock能够在更低的参数量和计算量下,达到和现有轻量级模块相当的分类精度;基于CIRBlock 模块搭建的CIRNet在多个分类数据集上获得了比其他轻量级神经网络更优的分类性能。

1 反向残差结构及已有改进

MobileNetV2 中构建了具有线性瓶颈的反向残差块(inverted residuals block,IRB)进行特征提取,能够在较低计算复杂度下进行有效的特征提取,其结构如图1 所示。反向残差结构中主要采用了深度可分离卷积,而深度可分离卷积利用深度卷积(depthwise convolution,DW Conv)和点卷积(pointwise convolution,PW Conv)分别进行单个通道内的特征提取和所有通道的特征整合。

图1 MobileNetV2的反向残差结构Fig.1 Inverted residuals block of MobileNetV2

标准的反向残差结构可以表示为:

则反向残差结构的三个变换中的卷积操作的参数量和计算量的比值为:

其中,t为第一个点卷积进行升维的通道倍率,在原始的反向残差结构中一般取6,k为深度卷积的尺寸。由公式(6)(7)可见在网络的大部分层,两个点卷积比深度卷积具有更高的时间和空间复杂度,同时三个卷积的复杂度同升维的倍率t及输入通道数呈正相关。如果通过降低t来降低计算量,会改变高维特征通道数,对特征多样性会造成较大影响。MobileNetV3 中采用神经网络架构搜索针对每一层升维的倍率t进行超参优化,需要较为复杂的搜索过程来达到精度和复杂度平衡,没有从本质上对反向残差结构进行优化。同时反向残差结构的点卷积虽然结构简单,但计算量相对较大,具有较大的压缩空间。

现有许多工作利用分组卷积降低反向残差结构的点卷积的复杂度,但分组卷积阻隔了通道间信息交流,产生的特征图不能表征所有输入通道,影响网络性能,且最终获得的压缩效益不高。而GhostNet 针对标准卷积特征映射的冗余性,基于部分原始标准卷积产生的特征映射,采用一系列低成本操作来替换原始的部分计算。具体地,GhostNet在其构建的基础模块Ghost Block中将反向残差结构的两个点卷积都替换为计算量更低的Ghost Module,保留了部分标准点卷积,并将剩余的计算以较低的计算代价完成。其中的低代价操作为3×3和5×5 深度卷积。虽然GhostNet 降低了点卷积的冗余计算,但其对升维点卷积和降维点卷积运算都以相同比例替换为低成本模块,并采用较大尺寸深度卷积作为低代价操作,仍有提升精度和降低计算量的空间。

2 轻量化卷积神经网络模块设计

2.1 反向残差结构轻量设计

本文考虑到用于升维的点卷积具有较多冗余度,以及GhostNet设计的低代价操作的有效性,采用低代价升维变换C(J(·))取代升维变换G(·) 。其中J(·) 为融合变换,利用点卷积进行所有输入通道的融合;C(·) 为低代价扩展变换,采用低代价操作进行通道的扩展。

其中,s为低代价升维变换的扩展比,ϕ为低代价操作,本文选择的低代价操作是1×1深度卷积,即分组数等于输入通道数的1×1分组卷积。对于降维变换I(·),考虑到其将高维特征映射到低维空间,变换本身就需要有较大程度的信息损失,故不进行修改。在输出通道相同时,原始升维变换G(·) 和低代价升维变换C(J(·))中卷积的参数量和计算量之比为:

可见当低代价升维变换的扩展比越高,用于升维的计算量越低,但低代价产生特征的多样性也越低,会造成较大程度的精度损失,所以需要针对计算量和精度进行相应权衡。

本文按照当输入输出通道大小相等时具有最小化内存访问量的设计策略,将原始标准卷积产生的特征通道数设定为和输入通道数相同,原始的点卷积操作将所有通道信息重新整合,生成的新特征图和输入具有相同的通道数,即,再利用低代价扩展变换C(·) 对x′进行通道的扩展。此时低代价升维变换的扩展比s和点卷积升维的倍率t相等,即s=t。若输入通道数远大于6时,由公式(9)(10)可知,此时在相同的输入通道数下,升维的倍率t即为采用低代价变换所取得的压缩比。在GhostNet 中的研究表明低代价变换引入的比例过大会导致网络性能的显著下降,所以为了保证低代价升维变换的有效性,s和t的取值不能过大,因此在反向残差结构中会导致后续的降维阶段的输入输出通道之比降低,影响反向残差结构的有效性。

为了解决降维前后的通道之比降低的问题,同时进一步对模块进行轻量化设计,本文引入旁路分支并进行特征重用。即利用点卷积的部分输出信息直接作为模块输出的一部分,来降低特征提取阶段的深度卷积和降维阶段的点卷积的输出通道数,以保证降维操作前后的通道比值较大,保证反向残差结构的有效性。

具体地,首先本文复用的特征为仅经过融合变换J(·) 的特征x′,为利用点卷积进行通道信息融合的特征,从中选择部分特征作为旁路,直接和反向残差结构的输出在通道维度上拼接。则此时的轻量反向残差结构为:

旁路分支的引入减少了反向残差结构的输出通道,则降低升维的倍率不会影响降维前后的通道之比,避免了低代价操作引入带来的精度损失,保证反向残差结构的有效性。通过特征复用方便了梯度的反向传播,使得网络更容易训练。由公式(6)(7)可知,降低升维倍率、减少反向残差结构输出通道均能够较大程度降低模块的参数量和计算量。本文提出的经过轻量设计的反向残差结构如图2所示。

图2 反向残差结构轻量设计Fig.2 Lightweight inverted residuals block

图2 中,input 和output 分别为模块的输入和输出,Act代表激活函数,利用低代价升维变换C(J(·))来简化原始升维变换G(·) 的计算,并复用其中的融合变换J(·)中标准点卷积产生的特征图作为输出的一部分,减少原始反向残差结构的输出通道,极大程度减少反向残差结构的计算代价,但存在通道信息交流不足的问题,对精度产生影响。本文通过对特征通道信息进行增强设计来弥补上述轻量设计带来的精度损失[16]。

2.2 特征通道信息增强

本文基于对反向残差结构的轻量化设计,进一步对特征通道信息进行增强,加强通道间有效信息交流,以较低的计算代价获得精度的提高。

SENet 中的实验表明在网络的特定位置通过插入通道注意力模块能够对通道信息进行增强,同时增加的额外计算代价较小[17]。本文考虑到SE通道注意力模块会对特征进行重标定,无法在通道压缩后进行,故将通道注意力模块插入到降维变换I(·) 前,把经过特征提取后的特征作为SE 模块的输入,对通道的相关性进行评估。定义通道评估函数M(·),其输出为长度等于输入通道数的一维向量。然后利用输出的一维向量对SE模块的输入特征进行归一化操作Fscale(·,·),挑选重要的特征通道进行增强,使得有效特征通道信息进一步增强,增强通道信息的有效性。

在不进行下采样和通道扩展时模块的输入和输出尺寸完全一致,可以将输入直接和输出进行残差连接,防止发生网络退化。最终本文设计的步长为1 的轻量级模块CIRBlock的结构如图3(a)所示。

图3 不同步长的CIRBlock结构图Fig.3 CIRBlock structure diagram with different stride

对于需要进行下采样的模块,会在特征提取深度卷积时进行特征图尺寸的改变,使得特征图信息受到不可逆的损失,故本文针对下采样模块进行了额外的增强设计。在下采样模块设计中,本文使得主分支和旁路分支具有相同的输入特征,即旁路分支的信息不经过通道选取,为x′的等价特征。每个分支都采用步长为2的3×3深度卷积进行下采样特征提取。定义下采样时的特征提取函数为H′(·),在主分支中表示为,在旁路分支中表示为,则此时下采样的本文设计的反向残差结构可以表示为:

旁路分支进行下采样操作后,还可以通过低代价扩展变换C(·),并和主分支信息进行通道信息融合,进一步加强主分支通道信息多样性。则此时的中间特征x′′变为:

本文所设计的步长为2 的CIRBlock 结构如图3(b)所示。具体地,如图4为步长为2时,模块的特征图变换过程。从公式(16)可知,新增加的部分能够充分利用主分支和旁路分支的特征提取结果,几乎不引入额外的操作即可以利用两个通道的信息来增强主分支的特征多样性,以减少下采样带来的信息损失。本文设计的轻量反向残差结构通过对特征通道进行信息增强,保证了轻量模块的精度和泛化能力,从而实现速度和精度平衡。

图4 步长为2时的CIRBlock的特征图变换Fig.4 Feature map transformation of CIRBlock with stride 2

本文和现有的设计方法不同,虽然采用1×1深度卷积引入了分组点卷积但是仍然利用融合变换J(·) 保留了点卷积融合所有通道信息的优点,并且较大程度减少了参数量和计算量。相较于将所有的点卷积利用低代价操作替换,本文仅利用低代价操作进行通道的扩张,将冗余度较低的压缩点卷积操作保留,保证高维到低维映射的有效性。此外旁路分支的引入能够直接减少输出通道数,并针对不同步长的模块进行特征复用设计,进一步增强通道的多样性。

2.3 基于CIRBlock模块的分类网络CIRNet构建

利用本文设计的CIRBlock通过堆叠进行层和基础骨干网络的设计,不经过复杂的参数调整和网络架构搜索,来进一步验证CIRBlock 的有效性。本文所设计的CIR Layer 结构如图5 所示,其中第一个CIRBlock 的步长由当前层是否进行下采样决定,若进行下采样操作则步长为2,采用如图3(b)所示。

图5 CIR Layer结构图Fig.5 Structure diagram of CIR Layer

CIR Layer 中的CIRBlock 的个数由参数n(n∈N*)决定。通过对CIR Layer的堆叠,本文所设计的分类网络CIRNet的结构如表1所示。

表1 CIRNet backbone结构Table 1 Structure of CIRNet backbone

若输入图像尺寸较小,如32×32 像素的图像数据,则骨干网络第一个CIR Layer的步长设置为1。本文的分类器利用全局平均池化层和一个全连接层替代多个全连接层,最后一个全连接层的输出通道数为需要分类的种类数。

3 实验数据与结果分析

本文通过CIFAR[18]和Mini-ImageNet[19]分类数据集来验证所提方法在不同分辨率的自然场景下对常见物体分类实验的有效性,如表2所示为数据集简介。CIFAR为小尺寸自然场景标准彩色图像分类数据集,本文采用CIFAR-10[18]和CIFAR-100[18]进行输入尺寸为32×32下不同分类数量的实验。Mini-ImageNet为大规模自然场景分类数据集ImageNet[20]的子集,常见物体类别多并比CIFAR数据集具有更大的输入尺寸,更具工程应用价值。本文在保证样本分类均衡前提下,将原Mini-ImageNet的训练集和测试集重新按照8∶2进行随机划分。

表2 本文采用的分类数据集Table 2 Classification dataset used in this paper

本文利用Pytorch(CUDA 11.2)和MMCV深度学习库[21],在配备Intel®CoreTMi7-9700 CPU和单张NVIDIA RTX 2080 super显卡的主机上进行各模型实验。在相同的数据集上均采用相同的预处理和训练策略进行实验。采用SGD优化器,动量0.9,权重衰减1E-4,初始学习率0.1,consine 学习率策略,初始5 个轮次进行warm up。在CIFAR-10 和CIFAR-100 数据集的batch size 为128,训练300个轮次后进行测试,Mini-ImageNet数据集的batch size为32,训练100个轮次后测试。

在测试数据集对训练好的分类网络进行实验,分类精度为被正确分类的样本数与总样本数之比。分类网络的理论复杂度指标采用FLOPs和参数量,实际测试速度指标采用在推理测试集时的平均帧率(frame per second,FPS)。

3.1 相同网络架构的轻量级模块对比实验

本文所设计的轻量化卷积模块CIRBlock可以方便地替换或插入到现有的网络架构上,以此轻量化现有网络架构。在CIFAR-10和CIFAR-100数据集上利用VGG16网络架构,将本文设计的CIRBlock 模块和目前具有代表性的轻量级模块进行目标分类对比实验,实验结果如表3所示。

表3 VGG16使用不同卷积模块在CIFAR实验结果对比Table 3 Comparison of experimental results of different module with VGG16 architectures in CIFAR

其中VGG16-normal为原始的VGG16网络,VGG16-IRB为采用MobileNetV2的反向残差块替换原始的3×3标准卷积,VGG16-Ghost为采用GhostNet的Ghost Module替换标准卷积,VGG16-CIR 为利用本文所提的CIRBlock 替换标准卷积所得。通过实验可知,超参数s低代价升维变换的扩展比对模块的精度和复杂度影响较大,当s=3 时能够使得网络的精度和复杂度达到更好的平衡,故本文设计的CIRBlock的s=3,此时CIRBlock在CIFAR数据集上,CIRBlock相比于反向残差块FLOPs减少58.1%,参数量减少55.5%,精度损失小于0.4%。本文所设计出的轻量级模块CIRBlock无论是参数量还是计算量,均大幅低于MobileNet 系列的反向残差结构和GhostNet 所提的Ghost 轻量化卷积模块,并且在精度上可以达到近似或超越的程度。

3.2 不同网络架构的轻量级分类网络对比实验

将构建的轻量级分类网络CIRNet和现有的轻量级网络结构进行目标分类对比实验,包括MobileNet系列、ShuffleNet 系列。表4 为不同网络架构在CIFAR-10 和CIFAR-100目标分类数据集实验的结果。

表4 不同网络架构在CIFAR的实验结果对比Table 4 Comparison of experimental results of different network architectures in CIFAR

其中对MobileNetV3和ShuffleNetV2进行不同宽度和深度的调整。从表4 可以看出本文设计的CIRNet 在两个数据集上获得最高的分类精度,参数量最低,计算量低于其他网络取得最高分类精度的模型,体现本文设计的CIRNet能够在精度和复杂度中达到较好的平衡。

考虑到CIFAR数据集的尺寸较小,其结果不能完全表征网络的拟合能力,故本文在图像尺寸为224×224的Mini-ImageNet上与现有轻量级卷积神经网络模型进行对比。同时为了保证对比的有效性,本文按照模型FLOPs划分四个复杂度级别:75 MFLOPs以下、75~150 MFLOPs、150~250 MFLOPs 和250 MFLOPs 以上,测试了不同宽度和深度的现有网络与本文所提的CIRNet在四个复杂度级别的分类精度和运行速度,从而验证CIRBlock 在不同复杂度模型的有效性和鲁棒性。在Mini-ImageNet数据集,不同网络架构的不同复杂度模型的实验对比结果如表5所示。

表5 不同网络架构在Mini-ImageNet的实验结果对比Table 5 Comparison of experimental results of different network architectures in Mini-ImageNet

表中加粗数据为所处计算复杂度等级中最优的分类精度和模型。其中CIRNet tiny、CIRNet small、CIRNetlarge为CIRNet通过仅调整网络深度和宽度所得。对于上述CIRNet 的深度除CIRNet tiny 的CIR Layer3 中n=2,其余均按照表1 设置;网络的不同宽度通过各层输出通道数进行改变设置,如表6所示。

表6 不同复杂度CIRNet的各层输出通道对比Table 6 Comparison of output channel number at each layer of CIRNet with different complexity

从表5可见,本文提出的轻量级卷积神经网络CIRNet通过简单的深度和宽度调整设计,能够在不同的复杂度级别取得最高的分类精度。特别的,本文构建的CIRNet small在精度和GhostNet 1.5×相当时,FLOPs仅为后者的33%。将各网络架构在不同计算量下获得的最佳精度进行对比,如图6 所示,用来表征网络架构在不同等级计算复杂度的分类精度表现,在相同的分类精度下,取得更小的复杂度和更快的推理速度代表轻量级目标分类模型的性能更优。

由图6可见,在Top-1精度取得76%左右时,本文的CIRNet的计算量仅为现有网络架构的20%~40%。实验表明,本文所设计的轻量级卷积模块通过简单堆叠所组成的目标分类网络模型,不经过复杂的参数调整和神经网络架构搜索,在Mini-ImageNet 数据集上就能够领先于现有的网络架构。

为了更好地说明CIRNet的优越性,在Mini-ImageNet数据集上,采用Grad CAM++和Guided Backpropagation方法可视化具有相同复杂度的不同网络结构的预测表现,最终可视化结果如图7所示。其中图7(a)和(l)分别为来自数据集的malamute 和carton 类的图片,图7(b)~(f)和(m)~(q)分别为MobileNetV2、MobileNetV3、ShuffleNetV2、GhostNet和CIRNet网络的Guided CAM++可视化结果,图7(g)~(k)和(r)~(v)为对应网络的Guided Backpropagation可视化结果。

图7 Mini-ImageNet上不同模型的可视化结果Fig.7 Visualizations of different models on Mini-ImageNet

可以看到,在相同复杂度级别下,CIRNet 的Grad CAM++热图中显示的区域相比于其他网络结构更为符合人对于该类别的主观感受。如图7(d)(e)(n)(o)均显示对应网络对类别主体关注较片面,图7(f)(p)(q)能够较好地将前后景分离,并对显著区域给予更多关注。其次在利用Guided Backpropagation 进行可视化的结果中,CIRNet 的细节比其他网络更清晰、粒度更细,可见CIRNet可以更好地关注与最后分类结果息息相关的区域。

4 结束语

本文首先分析了轻量级卷积神经网络常用的反向残差结构及其现有改进的不足,对反向残差结构进行轻量设计,得到复杂度更低的反向残差模块CIRBlock。其次为了恢复轻量设计带来的性能损失,对不同步长的模块进行通道信息增强设计,得到两种步长的CIRBlock。最后通过CIRBlock 人工堆叠构建轻量级目标分类网络CIRNet。实验表明,在相同的VGG16 架构上达到相当的分类精度时,使用CIRBlock 相比于其他轻量级模块具有更低的计算代价和参数量。构建出的不同计算复杂度等级的CIRNet,在图像分类数据集CIFAR和Mini-ImageNet 上,相比于同等级计算量的其他轻量级分类网络,均取得更高的分类准确度。

猜你喜欢
代价复杂度残差
基于双向GRU与残差拟合的车辆跟驰建模
基于残差学习的自适应无人机目标跟踪算法
基于递归残差网络的图像超分辨率重建
一种低复杂度的惯性/GNSS矢量深组合方法
爱的代价
求图上广探树的时间复杂度
代价
某雷达导51 头中心控制软件圈复杂度分析与改进
平稳自相关过程的残差累积和控制图
成熟的代价