GMSDenseNet:基于组多结构卷积的轻量级DenseNet
2020-02-15于长永马海涛
于长永, 何 鑫, 祁 欣, 马海涛
(东北大学秦皇岛分校 计算机与通信工程学院, 河北 秦皇岛 066004)
卷积神经网络广泛应用在计算机视觉领域中,并在多种任务场景中取得了优异的结果,如图像识别[1]、目标检测[2]、场景分割[3]等.在视觉识别任务中,自从AlexNet[4]在ImageNet挑战赛中取得了惊人的成绩后,卷积神经网络模型在取得越来越好性能的同时,模型的复杂度也越来越高,大多数取得好的准确率的卷积神经网络模型都需要庞大的参数和计算花费,如ImageNet和COCO挑战赛的优胜者在设计模型时多数忽略了模型使用的计算资源的限制.举个例子,在ImageNet12挑战赛中获得冠军的VGG16[5]模型,其分类一张图片需要高达1.28亿参数以及153亿浮点运算数(floating point operations,FLOPs)的计算资源花费,这在许多需要实时但计算资源有限的应用中,如自动驾驶、移动电话、嵌入式设备等,是很难部署的.
近年来,越来越多的工作关注到这个问题上,解决方案总的来说分为三种策略,分别是修剪掉模型结构中冗余的参数、使用低秩或更具质量的过滤器、设计更有效的模型结构.对于第一种策略,现有的工作展示了在卷积神经网络模型结构中存在许多冗余参数,这种策略通常是加载预训练模型,通过某种规则或者约束来对模型结构进行剪枝,丢弃掉不满足规则或者约束的连接,之后对剪枝后的模型进行微调.剪枝中常用的规则或约束包括连接中权重低于某一阈值、神经元传播重要分数等.剪枝策略在逐层连接模型结构上展现出好的性能,但文献[6]指出在诸如Resnet[7]和DenseNet[8]网络结构上剪枝的效果不如从头开始训练原始网络的小版本好.第二种策略大多数是基于传统的压缩技术,如量化和二进制化、哈夫曼编码等.这些在数据科学中有良好表现的技术成功应用在卷积神经网络中,并取得了不错的性能.然而文献[9]认为这类策略可能存在过度损失精度或者在运算速度上无明显压缩.第三种策略通常使用更加紧凑的过滤器以及更加有效的拓扑结构来组建轻量级的卷积神经网络以降低计算成本和模型参数,使用的技术包括将大的过滤器尺寸变为小的过滤器尺寸(11×11或7×7的卷积核由3×3或1×1卷积核代替)、卷积结构使用深度可分离卷积替换正常卷积、拓扑结构由逐层连接发展为跳跃连接等.
DenseNet所采用的为第三种策略来构建拓扑结构,提出了一种有效的密集连接拓扑结构.虽然该模型使用的FLOPs和模型参数已经较其他模型有了很大程度的降低,但是仍有降低参数冗余以及减少FLOPs的可能性.为了优化这些问题,本文采用第三种策略提出了一个简单且有效的轻量级卷积神经网络模型,命名为GMSDenseNet,该拓扑结构将输入的特征图基于通道层面随机分割为成比例的两部分,这两部分分别做深度可分离卷积和组卷积,形成组多结构卷积单元,并采用密集连接将所有的组多结构卷积单元连接起来,构成卷积神经网络.该网络可以有效地在GPUs上训练并使用较少的计算资源,实验结果表明,GMSDenseNet模型在使用了DenseNet-40模型约18.8%的FLOPs以及28.4%的模型参数的情况下,准确率仅下降≤0.4%.
1 GMSDenseNet
DenseNet虽然在图像识别任务中有着良好的性能,但是该网络拓扑结构使用高额的FLOPs以及庞大的参数,其原始结构的各构成组件如图1中A部分所示.本文将其DenseBlock中的正常卷积用由深度可分离卷积和组卷积构成的组多结构卷积单元替代,以降低其计算资源.
1.1 组多结构卷积单元
深度可分离卷积和组卷积在许多深度卷积神经网络中有着很好的适应性.这两种卷积均可以有效地降低计算花销.本文采用将这两种卷积以一定比例组成多结构卷积单元来替换正常卷积,同时对输入的特征图在进入到组多结构卷积单元前进行通道混洗[10](channel shuffle),该操作采用的是将权重矩阵转置后做平滑处理,再重构为与原权重矩阵维度相同的重排权重矩阵,这一操作是可微的并且没有引入任何参数,所带来的FLOPs与卷积操作庞大的FLOPs相比是微不足道的;随后将混洗后的特征图按比例分成两部分,分别做深度可分离卷积以及组卷积,其中,深度卷积使用的过滤器尺寸大小为3×3,组卷积采用1×1瓶颈层与3×3组卷积的组合.将两部分得到的输出特征图进行通道层面的合并操作,这构成了一个组多结构卷积单元.组多结构卷积单元首先要进行通道混洗,因为若没有这一操作,随后的组多结构卷积单元总会有一部分过滤器是在学习相同的特征,并有可能放大组卷积间无共享信息的不足,这会极大地影响特征的表征.将输入的特征图混洗,会很大程度上避免这一问题.组多结构卷积单元的拓扑结构如图2所示.
1.2 网络拓扑结构
除了1.1节中所提到的组多结构卷积单元,GMSDenseNet还包括转换层以及混合链路连接.转换层的本质是为了改变特征图的尺寸,所采用的技术为下采样,同时也将网络的拓扑结构划分为不同的GMSDenseNet Block.该层中的操作包括一个1×1的组卷积层以及一个2×2的平均池化层,这一设计也促使了在进入到组多结构卷积单元的特征图需要进行混洗.混合链路连接类似于文献[11]中所提出的连接方式,但不同的是本文所使用的混合链路连接是由不同卷积在各自卷积输出的特征进行的元素层面加操作,之后再进行通道层面合并操作,这样可以在增加特征图所表征的同时激励图像信息的重用,GMSDenseNet结构的各构成组件如图1中B部分所示.
1.3 复杂度分析
为了直观地阐述GMSDenseNet模型较DenseNet模型使用更少的参数和FLOPs,假设卷积操作的输入为M张大小为H×W的特征图,经过kH×kW大小的过滤器逐像素计算,得到N张具有适当填充的与输入特征图尺寸相同的输出特征图.因此,DenseNet的一个卷积层所使用的参数数量为kH×kW×M×N,所使用的FLOPs为kH×kW×M×N×H×W.而GMSDenseNet模型的组多结构卷积单元是采用组卷积与深度可分离卷积相结合来构成的“卷积层”,采用能被输入特征图张数M整除的m和n作为比例配置来分配M张输入特征图分别进入到组卷积和深度可分离卷积,则深度可分离卷积所使用的参数数量为
所使用的FLOPs为
组多结构卷积单元中的深度可分离卷积在深度卷积之后之所以不适用逐点卷积,是由于网络拓扑结构采用的是密集连接,这使得网络中的深层会出现M是N的几十倍,逐点卷积本质是通道的线性组合变化,这将会放大有限的通道间的约束,而采用小尺寸的过滤器,将使通道间的组合变化更多元化,降低约束以使得通道所表征的特征信息更丰富.
而组卷积中每一个分组的正常卷积之前均有一个1×1卷积的瓶颈层,其目的是为了降低维度,其输出的特征图的张数固定为组卷积输出特征图张数的K倍(本文采用与文献[12]的bottleneck相同的数值,K=4).那么在瓶颈层之前的分组数取为g1,之后的分组数取为g2,因此组卷积使用的参数数量为
因此组多结构卷积单元的复杂度为两者之和.根据DenseNet-40的配置,取其dense block1首层卷积及dense block3末层卷积的输入输出特征图数量,两种结构/单元所使用的具体参数数量和FLOPs如表1所示.
表1 卷积层/单元参数及FLOPs
其中首层的配置为{M=36,N=12,H=32,W=32,kH=3,kW=3},末层的配置为{M=456,N=12,H=8,W=8,kH=3,kW=3},对于GMSDenseNet模型,具体配置为{m=1,n=2,g1=2,g2=3}.由表1的结果可以看出,随着网络的加深,多结构卷积单元所使用的参数数量及FLOPs由首层卷积操作的66.2%降低到末层卷积操作的36.8%,呈下降趋势.
2 实验结果与分析
2.1 实验环境及数据集
在Cifar-10数据集上的图像分类任务中评估本文提出的GMSDenseNet模型结构.所有的实验均在具有160 GB RAM的Intel XeonE5-2640服务器的单CPU核心(2.40 GHz)上实现,操作系统为CentOS 7.4.1708.两块NVIDIA K40 GPU用于CNN计算.
Cifar-10数据集[13]是由10种尺寸大小为32像素×32像素的彩色自然图片组成的,该数据集的训练子集以及测试子集分别由50 000张图片和10 000张图片构成.本文采用标准数据增强方案(镜像/位移)来对这两种数据集进行预处理,同时使用图像通道层面的均值和方差对数据进行标准化.
2.2 实验结果与分析
2.2.1 模型配置
GMSDsenetNet每层增加的特征图数量与DenseNet所使用的增长率k=12是一致的,将进入到组多结构卷积单元的输入特征图以不同的比例配置分配给组卷积和深度可分离卷积.发现组多结构卷积单元中组卷积的比例高于深度可分离卷积单元,如图3中比例配置为2∶1的情况下,模型不但使用较少的参数数量并且有较高的准确率.
而且由图4所得到的结果表明,当模型使用的组卷积比例高于深度可分离卷积时,模型在每次训练的迭代过程中以及测试过程中所花费的时间也相应降低,这是由于深度可分离卷积中深度卷积部分的计算较为零散,现有的计算硬件对其计算效率不高.因此在设计模型结构时采用的组卷积比例高于深度可分离卷积.
对于组卷积部分,为了增加所学习到的特征中包含的图像信息,使用两个组卷积来进行特征学习,每个组卷积使用3个分组.对于组多结构卷积单元,除了瓶颈层使用BN-ReLU转换和1×1卷积尺寸,其余层均使用BN-ReLU转换和3×3卷积尺寸.GMSDenseNet共有3个Block,每个Block中有16个组多结构卷积单元,转换层所使用的组卷积分组个数为增长率因数子集中的中位数,即Gt=4.同时为了避免转换层的输出特征图通道数量在进入到下一个Block中的组多结构卷积单元不匹配问题,本文对转换层的输出通道数量作出如下约束:当输入通道数量的一半仍可以被分配比例配置整除时,输出通道数量就为输入通道数量的一半,当不能被整除时,输出通道数量为输入通道数量的一半与余数的差.组卷积的引入会大量减少模型参数的使用并显著降低通道间的计算约束,但文献[14]指出由于特征分组会产生大量的组卷积堆叠,这会导致特征信息丢失,且通道间的特征信息交互流动也将受阻,严重影响特征表征能力.本文将文献[10]中提出的通道混洗策略引入到所提出的模型中,对比了未加入混洗操作的相同模型,表2的实验结果说明了模型加入混洗操作未产生额外的花销,并且对于组卷积所得到的特征信息进行交互有着积极的作用.
表2 有无混洗对模型的影响
2.2.2 训练细节
使用带有Nesterov动量的随机梯度下降来训练所提出的模型,动量值设置为0.9并且没有阻尼,权重衰减设置为0.000 1.采用64大小的批次数量来训练300轮,学习率采用从0.1开始以类似余弦波逐渐减少到0的策略.
根据表3实验结果可以得出,所提出的GMSDenseNet模型与其他最新的CNN模型相比,如ResNet-110等,使用了20%甚至更少的模型参数,达到了相近的准确率.GMSDenseNet模型使用了DenseNet-40模型约18.8%的FLOPs以及28.4%的模型参数,准确率下降≤0.4%.该模型与在DenseNet模型上应用先进有效的剪枝技术的模型相比,如DenseNet-40-P,使用了其44.0%的参数和26.2%的FLOPs,准确率下降≤0.4%.
表3 分类准确率比较
3 结 语
本文提出一种高效简单的轻量级卷积神经网络GMSDenseNet,该网络使用组多结构卷积单元来代替正常卷积,使得该网络能在使用DenseNet-40模型约18.8%的FLOPs以及28.4%的模型参数的情况下,准确率仅下降≤0.4%.是否能够在训练阶段自动地进行输入特征图分组组数,以及如何保持或进一步提高分类图像准确率,是未来工作方向之一.