基于跨通道交叉融合和跨模块连接的轻量级卷积神经网络
2020-12-31丁世飞于文家
陈 力,丁世飞,于文家
(中国矿业大学计算机科学与技术学院,江苏徐州221116)
(∗通信作者电子邮箱dingsf@cumt.edu.cn)
0 引言
2006 年,多伦多大学的Hinton 教授等[1]在Science杂志上发表了文章,标志着人工智能的复兴。计算机视觉技术也随之取得巨大进步。卷积神经网络(Convolutional Neural Network,CNN)[2]作为计算机视觉领域的基础模型之一,是当前许多研究和应用的基础。自从AlexNet[3]在ILSVRC(ImageNet Large Scale Visual Recognition Challenge)[4]中取得了巨大成功,目前已经提出了许多高性能的CNN 模型,例如VGGNet[5]、ZFNet[6]、GoogLeNet[7]、ResNet[8]、DenseNet[9],SENet[10]等。但是,准确率的提高并不一定会使网络在模型尺寸和速度方面更有优势。目前移动设备和嵌入式设备被广泛使用,这些设备的计算资源和存储资源非常有限,不利于大规模网络的部署。
2017 年之后,ImageNet 竞赛不再举办,对CNN 的研究也从仅追求高精度的大规模网络逐渐过渡到研究更适合实际应用的轻量级架构。精度高、规模小、速度快的轻量级架构成为当前CNN 研究的主流。近年来,压缩卷积神经网络以实现准确率与模型尺寸之间的权衡已成为一种热门的研究方向。一方面,可以对现有的卷积神经网络模型进行压缩,使网络具有较少的参数和较低的计算复杂度。这些压缩方法[11]可以分为四类:参数剪枝和共享[12]、低秩分解[13]、迁移/紧凑卷积滤波器[14]和知识蒸馏[15]。基于参数剪枝和共享的方法主要是探索模型参数的冗余部分,并删除对网络影响不大的参数以实现网络压缩。基于低秩分解的技术主要分解卷积核以减少冗余,关键是如何设置卷积核的参数以及对哪个维度加以约束。基于迁移/压缩卷积滤波器的方法设计具有特殊结构的卷积内核,以降低存储消耗和计算复杂度。知识蒸馏的方法创建了一个与教师网络的特征分布相适应的学生网络,以便小型网络可以学习大型网络的知识。通常,学生网络是一个轻量级网络,而教师网络是一个较大的网络。另一方面,除了压缩现有的网络模型,还可以使用一些高效的方法来设计新的网络结构,即轻量级卷积神经网络模型设计。轻量级的CNN 可以使更多的计算机视觉研究成果应用到工业产品和服务中。
针对一些常用的轻量级模型设计方法存在的明显不足,本文在提出相应的解决方法的同时提出了一种轻量级卷积神经网络模型C-Net,旨在保证在高准确率水平的前提下减少模型参数量和降低计算复杂度。本文主要工作如下:
1)针对分组卷积各分组之间缺少信息交流的问题,提出了一种跨通道交叉融合的方法,在增加深度和减少参数的同时实现了不同分组跨通道信息交流。
2)针对特征提取不充分和特征图利用不充分的问题,提出了一种跨模块连接方法,在同一阶段内部实现特征重用和更好的上下文建模来增强特征的显著性。
3)基于提出的两种方法设计了一种新型的轻量级卷积神经网络C-Net。
1 相关工作
1.1 分组卷积
对于传统卷积[16]来说,每个输出通道都与每个输入通道互相连接,即通道之间是密集连接。例如,如果输入特征映射的尺寸为C×H×W,其中:C表示输入特征映射的通道数,H表示输入特征映射的高,W表示输入特征映射的宽,如果卷积核个数为N,则输出特征映射的数量与卷积核的个数相同,每个卷积核的尺寸为C×K×K,总参数量为N×C×K×K。
对于分组卷积,输入通道和输出通道分成g组。每组的输出通道仅连接到相应组的输入通道,而与其他通道无关。具体为首先对输入特征映射进行分组,然后将每组分别卷积。
假设输入特征映射的尺寸为C×H×W,输出特征映射的尺寸为N×H×W,其中,H和W为特征映射的长度和高度,C和N分别为通道数。如果将其分为G组,则每组中的输入特征图的数量为,每组中的输出特征图的数量为。卷积核的尺寸为。卷积核的个数仍为N。每组卷积核的个数为,卷积核仅与同组的输入特征映射进行卷积,总参数量为×K×K,可见总参数量减少到原来的。
显然,尽管分组卷积可以显著减少参数量,但是存在不同分组之间缺乏信息交流的问题,这将很大程度上影响模型的性能。本文提出了一种称为跨通道交叉融合的方法来实现不同分组之间信息交流。
1.2 深度可分离卷积
标准卷积运算实现了空间和通道维度上特征的联合映射,但是计算复杂性高,内存占用大,并且权重参数过多。深度可分离卷积的基本假设[17]是输入的特征映射可以解耦。因此,卷积过程可分成两个部分:首先使用给定大小的卷积核分别对每个通道进行卷积并组合结果,该部分称为深度卷积。然后使用1×1卷积核[18]进行标准卷积并输出特征映射,这部分称为逐点卷积。
深度可分离卷积的作用是将图像的空间信息和通道信息解耦,主要目的是将空间互相关信息与通道互相关信息分离,通过使用一个一维卷积核和一个二维位置卷积核,分别学习图像中的通道信息和位置信息。即通过3×3 卷积对每个独立通道的空间区域提取特征,然后使用1×1卷积融合从不同通道中提取到的特征。标准卷积和深度可分离卷积的区别如图1所示。
图1 卷积方式Fig.1 Convolution methods
假设输入特征映射的尺寸为C×H×W,输出特征映射的尺寸为N×H×W,其中H和W为特征映射的长度和高度,C和N分别为通道数。标准卷积层使用大小为C×K×K的卷积核,计算复杂度为CK2HWN,参数量为CK2N。深度可分离卷积包括一组K×K×1×C的卷积核和一组1×1×C×N的卷积核。深度可分离卷积的计算复杂度为CK2HW+CHWN,这只是标准卷积的。考虑输入和输出通道数量上的差异,深度可分离卷积的权重约为标准卷积权重的10%~25%[17]。通过使用深度可分离卷积代替传统卷积可以减少模型参数,实现模型的轻量化。
1.3 快捷连接
神经网络的深度在图像分类中起着至关重要的作用。随着网络层数的增加,从理论上,网络可以学习更多的特征,拟合更复杂的函数,从而提高识别的准确率。但是,由于使用基于梯度的BP(Back Propagation)算法[19]优化时,层数很深的网络在反向传播过程中容易出现梯度消失[20]或梯度爆炸[21],造成模型训练过程中难以收敛。
ResNet[8]是计算机视觉领域一项突破性工作。ResNet 通过添加快捷连接以引入残差学习来解决深层网络的退化问题,从而可以训练出层数更深的网络。ResNet 的核心思想是从输入中学习残差函数而不是原始函数。快捷连接默认为恒等映射,即直接添加原始输入而不进行任何改变直接与输出做加和作为下一层的输入。通过添加快捷连接,使得深层网络更容易优化,并得到更好的性能。包含一个快捷连接的多层网络称为一个残差块,如图2所示。
图2 快捷连接Fig.2 Shortcut connection
将输入表示为X,底层映射表示为H(X),残差映射定义为:
其中:X代表残差块的输入;H(X)代表残差块的输出;F(X)代表残差映射。进一步的:
即变成使用神经网络来拟合输入和输出之间的残差F(X)映射。
残差映射比原始映射更易于优化。在极端情况下,如果恒等映射是最佳输出,则残差为0,相较把恒等映射用一系列非线性层的堆叠去拟合更简单,而且通过快捷连接实现恒等映射,不会增加额外的参数和计算量。
ResNet和快捷连接的提出解决了加深网络层数不能提高性能的问题。快捷连接在先进的轻量级CNN 中均有应用。本文借鉴了残差学习的思想并加以改进,使网络能够在同一阶段内部更好地进行局部残差学习,该方法称为跨模块连接。
2 一种新型的轻量级卷积神经网络C-Net
2.1 跨通道交叉融合
分组卷积是轻量级卷积神经网络设计中的一种常用方法。分组卷积可以用较少的参数量和较低的计算复杂度生成大量的特征映射,而更多的特征映射意味着可以编码更多的信息以获得更丰富的特征。分组卷积也有明显的缺点:将输入特征映射分组导致输入信息不完整,输出特征图不能包含输入特征图的所有信息。在ShuffleNet[22]中,使用通道重排来解决这个问题。
表1 不同分组数在Cifar_10的准确率对比Tab.1 Accuracy comparison of different grouping numbers on Cifar_10
通过对k的不同取值发现,当k=2时,即当将输入分为两组时效果最好。k=2实现了全通道的信息交流。同时,如文献[23]所建议,过多的分组会增加MAC(Media Access Control address),使用两个组也是合理的。因此,应用于C-Net 中设置k=2,即将输入通道数分为两组,并使用1×1 卷积实现两阶段的降维操作。当然,也可以用其他大小的卷积核替换它。两阶段降维方法加深网络深度的同时减少了参数量,提高了模型的非线性建模能力。首先,将输入特征图分为通道数相同的两组G1和G2。两组中的通道数均为输入的一半,对两组使用1×1 卷积得到和,通道数减少了一半。显然,和包含了所在分组中所有通道的信息。然后再次卷积得到和,尺寸保持不变。最后使用跨通道交叉融合,将和添加到和的相邻组中合并在一起,结果用作下一层的输入。因此,输入特征图的维数减少是通过两阶段的分组卷积和跨通道交叉融合实现的。C-Net 中用于分组卷积的跨通道融合如图3所示。假设输入特征映射的尺寸为C×H×W,直接使用标准1×1 卷积来减小尺寸实现降维,则参数量为,使用本文的方法则参数量为,因此参数数量减少了。通道数C通常比较大,因此,实现用于分组卷积的跨通道交叉融合以提高模型的泛化能力的同时减少到原始参数量的75%。
图3 C-Net中的跨通道交叉融合Fig.3 Cross-channel fusion in C-Net
2.2 跨模块连接
如文献[24]中建议的那样,为了提高网络的准确性,增加基数比增加网络的深度和宽度更有效,其中基数是指并行堆叠的某些模块的数量。目前最先进的轻量级CNN 架构[22-23,25-27]有一个共同的特征,即网络结构由基本构建块堆叠而成。把具有相同输入输出分辨率的几个基本构建块的堆叠称为一个阶段,相邻阶段通过池化[28-29]或步长为2卷积运算实现下采样。同一阶段内通常由许多具有相同结构的基本构建块组成。通常,快捷连接通常是在单个基本构建块内部实现的,一般是在某个基本构建块的输入和输出之间添加了快捷连接。快捷连接破坏了网络的对称性并改善了网络的表征能力。通过增加快捷连接,参数量保持不变,分类精度得到进一步提高,网络的可控制性和可扩展性也得到改善。传统架构中的快捷连接如图4所示。
考虑到同一阶段内的基本构建块的输入输出具有相同的结构,为了进一步提高模型的特征提取和泛化能力,提出了一种称为跨模块连接的方法。在同一阶段内相邻的基本构建块之间,上一个基本构建块的通过两阶段降维后的特征映射和下一个基本构建块的降维后的特征映射之间添加快捷连接,然后将融合后的结果用作深度可分卷积的输入。这有助于增强模型的特征提取能力,实现上下文更好的建模。跨模块连如图5所示。
图4 传统架构中的快捷连接Fig.4 Shortcut connections in traditional architecture
图5 跨模块连接Fig.5 Cross-module connections
2.3 C-Net基本构建块
利用提出的两种方法,设计了一个轻量级的特征提取单元作为C-Net 基本构建块。这是从残差块启发而来,采用先压缩和后扩张策略[30]。它分为两部分:降维层和特征提取层。降维层使用两阶段跨通道交叉融合,通过卷积进行输入特征映射的降维处理,降维为原始输入维的一半。特征提取层使用深度可分离卷积。首先,使用深度卷积进行特征提取,然后使用逐点卷积增加输出通道的维度。基本构建模块如图6所示。
图6 某一阶段内部的基本构建块Fig.6 Basic building blocks in a certain stage
通常,卷积操作后会添加非线性。最常用的激活函数是ReLU。ReLU的计算式(图7)表示如下:
如图7 所示,如果对ReLU 的激活范围没有限制,则输出范围为0 到正无穷大;如果激活值很大并且分布在很大的范围内,则低精度时无法很好地精确描述造成精度损失。考虑到这些因素,使用ReLU6[26]作为C-Net中的激活函数。ReLU6是普通的ReLU,但将最大输出值限制为6。移动终端设备float16 的精度较低,ReLU6 可以提供良好的数值分辨率。将最大值限制为6 也有助于使网络为定点推理做好准备。ReLU6的计算式(图8)表示如下:
Xception[17]中实验结果表明深度卷积后增加非线性会降低性能。一种猜测是深度卷积输出通道的数量太少,非线性的应用会造成信息丢失。因此在C-Net 基本构建块的设计中,去除了深度卷积后的激活函数,输出为线性。
图7 激活函数ReLUFig.7 Activation function ReLU
图8 激活函数ReLU6Fig.8 Activation function ReLU6
2.4 网络架构
C-Net架构主要由C-Net基本构建块堆叠组成。网络结构如表2 所示,其中k为类别数。除了最后的全局平均池化[31],整个网络再不使用池化,但每个阶段的第一个基本构建块都使用步长为2 的卷积进行下采样。全局平均池化用于防止过拟合并实现轻量级。此外,Dropout[32]和BatchNormalization[33]用于训练。
表2 C-Net网络架构Tab.2 Network architecture of C-Net
3 实验与结果分析
3.1 实验设置
实验环境:整个实验在Ubuntu16.04 LTS 和Python 3.6、Pytorch 1.2.0[34]和Opencv 3.1 的软件环境下进行。CPU 是具有8 核3.7 GHz 的Intel Xeon E5-1620,内存为32 GB。使用的GPU 是具有CUDA 10.0 和cuDNN 7.6 的NVIDIA-RTX2080ti。相关数据集如下:
1)Cifar_10 数据集由10 个类别的60 000 张彩色图像组成,每个类别有6 000 张图像。其中有50 000 张训练图像和10 000张测试图像。
2)Food_101 数据集包含101 种食物的101 000 张图像,每种包含1 000张图像。每个类别有250张测试图像和750张训练图像,因此共有75 750张训练图像和25 250张测试图像。
3)Caltech_256 数据集共包含257 个类别的30 607 张图像,每个类别中最少80 张图像,最多827 张图像,其中一个是背景的类别。在本实验中,将背景类删除,训练集和测试集以4∶1的比例随机分离。
在当前的图像识别研究中,这些公开数据集被广泛使用。其中,Cifar_10数据集主要用于消融实验。
数据预处理:在训练之前对所有数据集进行预处理。所有数据集均使用数据增强增加训练样本。对于Cifar_10,所有图像使用像素0 填充图像的边缘,然后将图像随机裁剪为32×32。对于Food_101和Caltech_256,首先将所有图像缩放到256×256,然后随机裁剪为224×224。在训练过程中,按50%的概率水平翻转和垂直翻转。最后对所有图像进行归一化处理。
超参数设置:在使用Food_101和Caltech_256数据集进行的实验中,数据处理、初始化、批处理大小和训练迭代次数等实验设置保持不变。在训练期间,批处理大小为128,每个epoch 后进行一次测试迭代。所有层使用相同的学习率并将初始学习率设置为0.1。训练过程采取学习率衰减的策略,γ为0.1。学习率衰减3次后停止训练。使用交叉熵损失函数,优化器为随机梯度下降(Stochastic Gradient Descent,SGD),动量为0.9,权重衰减参数为0.000 5。Food_101在180 000次迭代后结束训练,而Caltech_256 在90 000 次迭代后结束训练。
3.2 结果分析
为了评估C-Net 的性能,在Food_101 数据集和Caltech_256 数据集进行了实验。实验评估了Food_101 数据集和Caltech_256 数据集上具有代表性的不同类型的典型CNN 模型的性能。AlexNet[3]和ResNet[8]是传统CNN 架构的代表,其中AlexNet 没有快捷连接,ResNet 包含快捷连接;SqueezeNet[25]、MobileNetV2[27]和ShuffleNetV2[23]是目前最先进的轻量级CNN 的代表,其中,SqueezeNet 通过提出FireModule模块,先利用1×1 卷积进行降维,再利用1×1 卷积+3×3 卷积组合升维,实现了参数优化;MobileNetV2 通过使用深度可分离卷积和Inverted Residual Block,可以用较少的运算量得到较高的精度,适用于移动端的需求;ShuffleNetV2 通过使用channel split和channel shuffle等方法,在速度和准确度之间做了很好的平衡。实验结果如表3和表4所示。
从表3 和表4 可以看出,C-Net 在Food_101 数据集和Caltech_256 数据集上的准确率相较AlexNet 分别提高了8.67个百分点和8.91 个百分点,但参数仅为AlexNet 的4%和4.2%,计算复杂度仅为AlexNet 的47.69%和47.67%。这充分说明传统的CNN 架构具有很大的冗余和缺陷,可以通过使用更有效的卷积方法和设计高质量的网络架构来实现CNN性能的提高,而不仅是单纯依靠网络规模的增加。此外,C-Net 的准确率相较ResNet-18 低1.34 个百分点和1.61 个百分点,但参数数量和计算复杂度远小于ResNet-18,大约仅为ResNet-18 的20%和25%,更加适合在存储和计算资源有限的设备上运行。
表3 不同模型在Food_101上的分类性能对比Tab.3 Comparison of different models for classification performance on Food_101
表4 不同模型在Caltech_256上的分类性能对比Tab.4 Comparison of different models for classification performance on Caltech_256
另外,与SqueezeNet、MobileNetV2、ShuffleNetV2 这三个最先进的轻量级模型的对比实验结果表明,C-Net不仅比传统的CNN模型更有优势,而且与其他最先进的轻量级架构相比也具有很强的竞争力。与SqueezeNet 相比,C-Net的准确率分别高出6.97个百分点和8.60个百分点,尽管参数量增加,但计算复杂度大幅降低,这主要得益于深度可分离卷积和快捷连接带来的特征提取能力的增强。C-Net在两个数据集的准确率表现均介于1.0MobileNetV2 和ShuffleNetV2 1.5x 之间,参数量与1.0MobileNetV2和ShuffleNetV2 1.5x处于同一级别,但均比它们小,显示出C-Net 在移动端部署的可行性。C-Net 的计算复杂度略高于1.0MobileNetV2,但仅为ShuffleNetV2 1.5x的大约68.05%,这也解释了C-Net在准确度上与MobileNetV2基本持平却低于ShuffleNetV2,主要是复杂度相较ShuffleNetV2 极大降低,这也充分说明模型复杂度在特征提取和建模过程中的重要性。这些轻量级架构是为资源有限的设备设计的,与某些基准模型相比具有竞争优势。不同模型在Food_101 和Caltech_256训练过程中的准确率如图9和图10所示。
图9 不同模型在Food_101上的准确率Fig.9 Accuracies of different models on Food_101
图10 不同模型在Caltech_256上的准确率Fig.10 Accuracies of different models on Caltech_256
总的来说,C-Net 不仅在参数量方面相较传统的CNN 架构占用更少的硬件资源,而且在不牺牲模型性能的情况下比其他几种先进的轻量级架构更轻巧。实验结果表明,C-Net通过使用跨通道交叉融合进行分组卷积以减少参数数量,并在同一阶段内部实现跨模块连接以增强特征表达,与其他网络架构相比,C-Net 是一种高效且轻量的网络模型,具有更少的参数和更高的识别精度。C-Net 更加便于硬件应用,性能更优。
3.3 消融实验
为了对提出的两种方法进行评估,使用Cifar_10 数据集进行消融实验。为了适应数据集的变化,对网络输入输出进行相应修改。输入大小改为32×32,最后一个全连接层的输出更改为10。此外,由于输入分辨率的宽度和高度变小,将阶段2 的步幅为2 的卷积更改为步幅为1,不进行下采样,然后全局平均池化从7×7变为4×4。其他参数保持不变。
3.3.1 跨通道交叉融合的分组卷积vs.普通分组卷积
为了评估分组卷积中各分组间跨通道交叉融合对于分组卷积的重要性,比较了是否包含跨通道融合的两组模型。由于没有引入额外参数,因此两组模型的参数量和计算复杂度相同,其准确率曲线如图11所示。
图11 跨通道交叉融合的分组卷积vs.普通分组卷积Fig.11 Cross-channel fusion for grouped convolution vs.traditional grouped convolution
从图11 可以看出,使用跨通道交叉融合进行分组卷积的模型(C-Net)与使用普通分组卷积的模型在收敛方面没有太大差异,但是最终精度比使用普通分组卷积的模型高1%~2%。这表明跨通道交叉融合在实现了跨通道信息交流的同时,提高了模型的特征提取能力和模型泛化性能。这表明了跨通道信息通信对提高分组卷积性能的重要性。
3.3.2 跨模块连接vs.无连接
为了评估跨模块连接的重要性,比较了是否包含跨模块连接的两组模型。由于跨模块连接也没有引入额外参数,因此,这两组模型的参数量和计算复杂度相同,其准确率曲线如图12所示。
如图12 所示,使用跨模块连接的模型(C-Net)的收敛比不使用跨模块连接的模型快得多,并且其最终的分类精度明显高于不使用跨模块连接的模型,表明了跨模块连接更好地实现了特征重用和梯度反向传播,而特征提取能力的增强和反向传播的优化也带来了更好的模型泛化性能。这也显示了快捷连接对于在深层网络中梯度传播的重要性。
图12 跨模块连接vs.无连接Fig.12 Cross-module connection vs.no connection
4 结语
本文提出了一种新型的轻量级卷积神经网络架构C-Net。首先,提出了跨通道交叉融合的方法,在一定程度上解决了分组卷积中不同分组间缺乏信息交流的问题;然后,提出了跨模块连接的方法,更好地实现同一阶段内部的特征提取和特征复用;最后,基于上述两种方法设计出轻量级网络模型C-Net。C-Net 在Food_101 数据集上的准确率为69.41%,在Caltech_256 数据集上的准确率为63.93%,表明C-Net 是一种高效的轻量级神经网络结构。同时,在Cifar_10 数据集上的消融实验验证了所提出的两种方法都可以提高CNN 的分类准确率。由于时间和实验条件的限制,C-Net的性能仅在图像分类任务上得到了验证。下一步工作是探索如何进一步提高C-Net 的性能,并将C-Net 应用于其他复杂任务,例如场景分割[35]和目标检测[36]。