资讯专栏INFORMATION COLUMN

[ResNet系] 008 ShuffleNet

CNZPH / 451人阅读

摘要:和分别引进了深度分离卷积和分组卷积来权衡模型表示能力与计算量。在通道数量上使用缩放因子来调节网络复杂度,文中以表示。的基础是逐点分组卷积和通道重排,分别考察这两者的作用。

ShuffleNet

ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices
Xiangyu Zhang, Xinyu Zhou, Mengxiao Lin, Jian Sun

摘要

本文提出一种计算效率极高的CNN架构——ShuffleNet,主要应用于计算能力有限(例如10-150 MFLOPs)的移动设备中。ShuffleNet架构中利用了两个新的操作,逐点分组卷积(pointwise group convolution)和通道重排(channel shuffle),在保持准确率的前提下极大地减少计算量。在ImageNet分类和MS COCO检测任务上的实验表明,ShuffleNet的性能比其他结构(例如MobileNet)更优越。ShuffleNet在基于ARM的移动设备中的实际运行速度要比AlexNet快约13倍,且准确率基本保持不变。

1. Introduction

本文主要聚焦于设计一种计算开支很小但准确率高的网络,主要应用于移动平台如无人机、机器人、手机等。之前的一些工作主要是对“基础”网络架构进行修剪(pruning)、压缩(compressing)、低精度表示(low-bit representing)等处理来达到降低计算量的目的,而本文是要探索一种高效计算的基础网络。
当前最先进的基础网络架构如Xception、ResNeXt在极小的网络中计算效率变低,主要耗费在密集的1x1卷积计算上。本文提出使用逐点分组卷积(pointwise group convolution)替代1x1卷积来减小计算复杂度,另为了消除其带来的副作用,使用通道重排(channel shuffle)来改进特征通道中的信息流动,基于这两个操作构建了高效计算的ShuffleNet。在同样的计算开支下,ShuffleNet比其他流行的机构有更多的特征图通道数量,可以编码更多的信息,这对于很小的网络的性能是尤为重要的。

2. Related Work

Efficient Model Designs
在嵌入式设备上运行高质量深度神经网络的需求促进了对高效模型设计的研究。GoogLeNet在增加网络深度时随之增加的复杂度比简单堆叠卷积层的方式要低得多。SqueezeNet可以在保持准确率的前提下大幅降低参数量和计算量。ResNet中使用bottleneck结构来提高计算效率。AlexNet中提出分组卷积是为了将模型分配到两个GPU中,在ResNeXt中被发现可以用于提高网络性能。Xception中提出的深度分离卷积(depthwise separable convolution,逐通道卷积+全通道1x1卷积)是对Inception系列中分离卷积思想的推广。MobileNet使用深度分离卷积构建轻量级模型获得当前最先进的结果。本文将分组卷积和深度分离卷积推广到一种新的形式。
Model Acceleration
这个方向主要是在保持预训练模型准确率的前提下对预测过程进行加速。有的方法是通过修剪网络连接或通道来减少预训练模型中的冗余连接。量化(quantization)和因式分解(factorization)也可以减少冗余。还有一些方法并不是改变参数,而是用FFT或其他方法来优化卷积算法的实现以达到加速的目的。蒸馏(distilling)将大模型中的知识迁移到小模型中,使小模型更易于训练。与上述方法相比,本文主要聚焦于设计更好的模型来提高性能,而不是加速或迁移已有的模型。

3. Approach 3.1 Channel Shuffle for Group Convolutions

Xception和ResNeXt分别引进了深度分离卷积(depthwise separable convolution)和分组卷积(group convolution)来权衡模型表示能力与计算量。但是这些设计都没有考虑其中的1x1卷积(也被称为逐点卷积(pointwise convolutions)),这部分也是需要很大的计算量的。举例来说,ResNeXt中只有3x3卷积采用分组卷积,那么每个残差block中93.4%的乘加计算来自于逐点卷积,在极小的网络中逐点卷积会限制通道的数量,进而影响到模型性能。
为了解决这个问题,一个简单的解决方法就是在通道维度上应用稀疏连接,比如在1x1卷积上也采用分组卷积的方式。但是这样做会带来副作用:输出中的每个通道数据只是由输入中同组的通道数据推导得到的(如图1(a)所示),这会阻碍信息在不同分组的通道间的流动,减弱网络的表示能力。

如果让每个组的卷积可以获得其他组的输入数据(如图1(b)所示),那么输入/输出的各通道就是完全相关的。为了达到这个目的,可以将每组卷积的输出再细分,然后将细分的子组分别传输到下一层的不同组中。这个操作可以由通道重排(channel shuffle)来实现:假设分为g个组进行卷积,每组输出n个通道,那么输出的总通道数就是gxn,先将输出的维度变成(g,n),然后转置,最后还原为nxg的数据即可,结果如图1(c)所示。将通道重排后的数据作为下一层分组卷积的输入即可,这样的操作不要求两个分组卷积层有相同的分组数量。
channel shuffle流程见下图:

3.2 ShuffleNet Unit

之前的网络(ResNeXt、Xception)只对3x3卷积进行分组/逐通道卷积,现在在1x1卷积(也称为pointwise convolution)上也应用分组卷积,称为逐点分组卷积(1x1卷积+分组卷积),然后再加上通道重排操作,就可以在ResNet的基础上构建ShuffleNet,其单元结构见图2。

在ResNet的基础上,首先将残差block中的3x3卷积层替换为逐通道卷积(depthwise convolution)(如图2(a)所示)。然后将第一个1x1卷积层替换为逐点分组卷积加上通道重排的操作,这样就构成了ShuffleNet单元(如图(b)所示)。第二个逐点分组卷积是为了恢复原来的通道维度,为了简单起见并没有在它后面添加通道重排的操作,这和添加时得到的结果基本相同。BN和非线性激活的使用和ResNet/ResNeXt中类似,另外在逐层卷积后不使用ReLU也遵循了Xception。当空间维度减半时,在快捷连接(shortcut path)上添加尺寸3x3步幅2的平均池化层,逐通道卷积步幅为2,最后将两者相加的操作替换为拼接,这样输出通道数自然就加倍了,所做修改如图2(c)所示。
相比同样配置的ResNet和ResNeXt,ShuffleNet的计算量要低得多。假设输入数据大小为c*h*w,bottleneck层(1x1+3x3+1x1)通道数为m,那么ResNet单元需要hw(2cm+9m*m) FLOPs,ResNeXt需要hw(2cm+9m*m/g) FLOPs,而ShuffleNet只需要hw(2cm/g+9m) FLOPs,其中g为分组数量。也就是说在给定计算开支的情况下ShuffleNet可以包含更多特征映射,这对于小网络来说非常重要,因为很小的网络一般没有足够的通道数量来进行信息传输。
逐通道卷积理论上有很低的计算量,但在低功率移动设备上很难有效实现,与密集运算相比计算/内存访问率要差,Xception论文中也提到了这个问题。在ShuffleNet中故意只在bottleneck层(3x3卷积)上使用逐通道卷积以避免这种开支。

3.3 Network Architecture

ShuffleNet网络的配置见表1。

需要注意的几点:第一个逐点卷积(1x1卷积)不做分组处理,以为输入通道数量相对较小;每阶段(stage)中的第一个block做空间维度减半;每个block中的bottleneck层(3x3卷积层)的通道数是block输出通道数的1/4。
在ShuffleNet单元中分组数量g控制着1x1卷积连接的稀疏程度。从表1中可以看出,在保持计算量基本不变的前提下,分组越多就可以使用越多的通道,这有助于网络编码更多信息,虽然卷积核可能会因为有限的输入通道数发生退化现象。
在通道数量上使用缩放因子s来调节网络复杂度,文中以sx表示。通道数乘s,模型的复杂度大约变为s平方倍。

4 Experiments 4.1 Ablation Study

ShuffleNet的基础是逐点分组卷积和通道重排,分别考察这两者的作用。

4.1.1 On the Importance of Pointwise Group Convolutions

不同分组数量的性能见表2。

从表2中可以看出,分组卷积可以提升网络性能,并且网络越小越可以从分组数量的增加中获益,而规模较大的则会趋于饱和。arch2减少stage3中的block数量但增加每个block中的特征图数量,整体的复杂度基本保持不变,性能比之前有一定提升,这说明更宽(wider)的特征图对于较小的模型更为重要。

4.1.2 Channel Shuffle vs. No Shuffle

通道重排的作用是使得信息可以在多个分组的卷积层中跨组传播,表3展示了使用或不使用通道重排的性能比对。

从表3中可以看出,当分组数量g很大时,添加通道重排可以极大提升性能,这显示了跨通道信息交换的重要性。

4.2 Comparison with Other Structure Units

与最近几年先进网络架构的性能比对见表4。

4.3 Comparison with MobileNets and Other Frameworks

表5展示了ShuffleNet和MobileNet在复杂度、准确率等方面的比对。

表6比较了ShuffleNet与一些主流网络的复杂度。

4.4 Generalization Ability

为了评估ShuffleNet的泛化能力,使用Faster-RCNN框架和ShuffleNet在MS COCO检测数据集上进行测试,具体性能见表7。

4.5 Actual Speedup Evaluation

由于内存访问和其他开支的影响,理论上4倍的复杂度削减在实际实现中只能提速约2.6倍。具体比对见表8。

ShuffleNet 0.5x相比AlexNet理论上应提速18倍,实际测试提速13倍,相比于其他一些与AlexNet性能基本相同的网络或加速方法要快得多。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/19652.html

相关文章

  • 轻量化神经网络

    摘要:是第一个提出体积小,计算量少,适用于移动设备的卷积神经网络。图卷积运算汇总参考图与神经网络架构搜索卷积神经网络已被广泛用于图像分类人脸识别目标检测和其他领域。 1、基本卷积运算手工设计轻量化模型主要思想在于设计更高效的网络计算方式(主要针对卷积方式),从而使网络参数减少,并且不损失网络性能。本节概述了CNN模型(如MobileNet及其变体)中使用的基本卷积运算单元,并基于空间维度和通道维度...

    curried 评论0 收藏0
  • 纵览轻量化卷积神经网络:SqueezeNet、MobileNe

    摘要:目录一引言二轻量化模型三网络对比一引言自年以来,卷积神经网络简称在图像分类图像分割目标检测等领域获得广泛应用。创新点利用和这两个操作来设计卷积神经网络模型以减少模型使用的参数数量。 本文就近年提出的四个轻量化模型进行学习和对比,四个模型分别是:SqueezeNet、MobileNet、ShuffleNet、Xception。目录一、引言 二、轻量化模型     2.1 SqueezeNet ...

    yhaolpz 评论0 收藏0
  • 卷积神经网络中十大拍案叫绝的操作!

    摘要:分组卷积的思想影响比较深远,当前一些轻量级的网络,都用到了分组卷积的操作,以节省计算量。得到新的通道之后,这时再对这批新的通道进行标准的跨通道卷积操作。 CNN从2012年的AlexNet发展至今,科学家们发明出各种各样的CNN模型,一个比一个深,一个比一个准确,一个比一个轻量。作者对近几年一些具有变革性的工作进行简单盘点,从这些充满革新性的工作中探讨日后的CNN变革方向。本文只介绍其中具有...

    xavier 评论0 收藏0
  • 经典ResNet结果不能复现?何恺明回应:它经受住了时间的考验

    摘要:大神何恺明受到了质疑。今天,上一位用户对何恺明的提出质疑,他认为何恺明年的原始残差网络的结果没有被复现,甚至何恺明本人也没有。我认为,的可复现性经受住了时间的考验。 大神何恺明受到了质疑。今天,Reddit 上一位用户对何恺明的ResNet提出质疑,他认为:何恺明 2015 年的原始残差网络的结果没有被复现,甚至何恺明本人也没有。网友称,他没有发现任何一篇论文复现了原始 ResNet 网络的...

    Ilikewhite 评论0 收藏0
  • [ResNet] 006 DPN

    摘要:和是两个非常重要的网络,它们显示了深层卷积神经网络的能力,并且指出使用极小的卷积核可以提高神经网络的学习能力。也有工作考察与的关系,与其相似,本文考察了与的关系。与的网络架构配置以及复杂度见表。 DPN Dual Path NetworksYunpeng Chen, Jianan Li, Huaxin Xiao, Xiaojie Jin, Shuicheng Yan, Jiashi F...

    plus2047 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<