Rethinking Bottleneck Structure for Efficient Mobile Network Design


前言

倒置残差块inverted residual block主导了移动网络的结构设计,通过引入了两个设计原则改变了经典的residual bottleneck,一个是学习inverted residual和使用线性bottlenecks。重新思考这种设计更改的必要性,发现它可能会带来信息丢失和梯度混淆的风险。提出新颖的bottleneck设计,称为sandglass block。在更高维度进行恒等映射和空间转换,有效缓解信息丢失和梯度混淆,非常有效。


1. Introduction

Inverted residual bottleneck 与经典的residual bottleneck相比,将恒等映射从高维表示转移到低维表示,但是在更薄的bottleneck之间连接恒等映射将不可避免地导致信息丢失(因为残差连接这两个块维度(通道数)少,表示被压缩)。因为特征尺寸变窄引起的梯度混淆,将降低梯度跨层传播的能力,影响训练收敛和模型性能。讲了讲Inverted residual bottleneck的缺点。
In this paper,重新思考了从经典的bottleneck结构转移到受欢迎的inverted residual blcok的合理性。我们考虑了以下三个问题:

  1. 如果我们想经典的瓶颈结构中那样将恒等映射定位在高维表示上会有什么影响?
  2. 线性激活可以减少信息损失,但是否仅仅适用于瓶颈
  3. 经典的瓶颈结构的计算复杂度很高,这些cost可以通过使用深度卷积替换密集空间卷积来减少,关于瓶颈结构是否应该想常规一样在低维瓶颈中加入深度卷积。
    受上述问题的启发,我们提出并评估一个新的瓶颈设计,我们的sandglass block在线性高维表示之间建立残差连接。与反向残差块相比,保留了更多块之间传递的信息,并且由于残差的高维性,向后传播更多的梯度以更好地优化网络训练。并且能够学习到更丰富的空间表示,而不是将空间卷积置于压缩通道的瓶颈中,我们提出在扩展的高维特征空间中使用。我们保留通道缩减和采用逐点卷积的扩展过程以降低计算成本。
    在这里插入图片描述
    (a) 经典的具有瓶颈结构的残差块 (b) 倒置的残差块©提出的sandglass block沙漏块 每个块的厚度来表示相应的通道的相对数量。与倒置的残差块相比,所提出的残差块扭转了在瓶颈之间构建捷径的想法,并在残差路径的两端添加了深度卷积,这两者对性能改进至关重要。
    贡献:
    a. 希望重新思考移动网络瓶颈结构设计的有效性。倒推残差似乎并不像通常认为的那样对瓶颈结构有利。
    b. 沿着高维特征空间建立捷径连接可以提升模型性能。深度卷积应该在高维空间进行,以学习更有表现力的特征,学习线性残差对于瓶颈结构也至关重要。
    c. 提出的结构更适合移动应用,在准确性和效率两方面,可以作为架构搜索算法中的"超级"算子,以更好地生成架构。

2. Related Work

现在深度神经网络大多都是通过堆叠构建块来建立的,我们相关工作介绍分为两部分一部分是使用经典瓶颈结构的一部分是使用倒置的瓶颈结构的。

2.1 Classicresidual bottleneck blocks

经典架构包含2个卷积层:一个1x1卷积用于通道缩减,3x3卷积用于空间特征提取,1x1卷积用于通道扩展。残差网络经常用这样的块,最近改进是在每个卷积层中加宽通道,在中间的瓶颈卷积层使用组卷积group convolution来聚合更加丰富的特征表示。或者引入基于注意力的模块来显式建模通道间的相互依赖关系。也有结合residual block和dense block的。尽管在重量级网络设计方面取得了成功,但由于模型的复杂性,它很少用于轻量级网络。我们证明了通过合理地调整残差块,这种经典的瓶颈结构同样适用于轻量级网络,并且能够产生最先进的结果。

2.2 Inverted residual blocks

颠倒了经典瓶颈结构的思路,在线性瓶颈之间连接捷径。与传统的MobileNet相比,它大大提高了性能并优化了模型复杂性。与传统的MobileNet [17]相比,它大大提高了性能并优化了模型复杂性,后者由3×3个深度可分离卷积序列组成。由于效率高,倒置残差块在后来的移动网络架构中得到了广泛的采用。ShuffleNetV2 [27] 在倒置残差块之前插入一个通道拆分模块,并在它之后添加另一个通道随机模块。在HBONet,为了建模更加丰富的信息,下采样操作引入了转置残差块。MobileNetV3搜索每个阶段的最优激活函数和反向残差块的扩展速率。MixNet提出探索对于深度可分离卷积的最优核尺寸。EfficientNet同样是基于反向残差块,但不同的是它使用了缩放的方法来控制网络在输入分辨率、网络深度和网络宽度方面的权重。与他们不同的是我们提出了标准的瓶颈结构,并展示了我们的积木块在移动环境中相对于反向残差块的优越性。

2.3 Model compression and neural architecture search

模型压缩算法可去除神经网络的冗余,像是网络剪枝、分层、因子分解、知识蒸馏。尽管是efficient networks,它们压缩网络的性能和原始网络的性能相差不大。所以设计更加高效的网络哟架构是对产生有效模型来说是必须的。神经架构搜索通过自动搜索高效的网络架构来实现这一点。但是搜索网络需要人类的专业知识,所搜索网络的性能在很大程度上取决于所设计的搜索空间。我们提出的构建块是与现有的搜索空间是互补的,而且如果加入到现有的搜索网络中可以进一步提高搜索网络的性能。


3.Method

3.1 Preliminaries 预备知识

Residual block with bottleneck structure
包括2个conv1x1层进行通道衰减和通道扩展,它们之间有一个conv3x3的层进行空间信息编码。这种传统的瓶颈结构不适合构建轻量级神经网络,因为它在标准的3×3卷积层中参数量大,计算成本高。
Depthwise separable convolutions
为了降低计算成本并使网络更高效,深度可分离卷积提出替代标准的卷积。具有 k × k × M × N 权重张量的卷积,其中 k × k 是内核大小,M 和 N 分别是输入和输出通道的数量。可以分解成两种卷积,第一种是M-channel kxk的深度卷积学习空间信息,第二种是逐点卷积,学习线性组合通道以产生新特征。在基本构建块中使用深度可分离卷积可以显着降低参数和计算成本。
Inverted residual block
把输入压缩成低维张量,之后通过逐点卷积将其扩展到高维张量,他将深度卷积应用于空间上下文编码,在它后面连接另一个驻点卷积去省城一个低维的特征张量作为输出到下一个块。倒置残差模块呈现两种不同的架构设计,可在不遭受太多性能下降的情况下提高效率:如有必要,在低维瓶颈之间放置快捷方式连接;并采用线性瓶颈。
尽管有好的表现,但是在inverted residual blocks,被中间膨胀层编码的特征图,应该首先投影到低维,由于通道压缩可能无法保留足够的有用信息。最近的研究也证明更宽的架构有利于缓解梯度混乱。
在瓶颈之间进行短接可能避免由于相邻反向残差块之间的表示具有低维性,在模型训练过程中顶层的梯度被成功传播到底层的现象。

3.2 Sandglass Block

设计原则主要基于以下见解:

  1. 为了在过渡到顶层时保留更多来自底层的信息以及方便梯度在各层之间的传播,应该定位快捷方式来连接高维表示。(两边的通道数应该是大的。残差连接的两边通道数都要多)。
  2. 小核尺寸(例如, 3 × 3)的深度卷积是轻量级的,因此我们可以适当地将一对深度卷积应用到更高维的特征上,这样就可以编码更丰富的空间信息以生成更有表现力的表示。(小核尺寸的深度卷积的参数量小,可以应用在更多通道数的地方,不会对参数产生较大影响。)
    在这里插入图片描述
    图 不同类型的残差块。(a)有深度空间卷积的经典瓶颈结构(b)提出的有bottleneck结构的sandglass模块。为了编码更具表现力的空间信息,我们建议将它们移动到具有高维表示的残差路径的末端,而不是在瓶颈中添加深度卷积。

Rethinking the positions of expansion and reduction layers
提出要翻转这两个逐点卷积的顺序。这样,我们可以将瓶颈保持在剩余路径的中间,以节省参数和计算成本。更重要的是,这允许我们使用快捷连接来连接具有大量通道的表示,而不是瓶颈通道
High-dimensional shortcuts
没有在瓶颈处使用残差连接,而是在高维表达之间使用残差连接。与倒置残差块相比,“更宽”的快捷方式从输入 F 传递到输出 G 的更多信息,并允许更多的梯度在多层上传播。
Learning expressive spatial features
倒置的残差块在逐点卷积之间加入深度卷积去学习富有表现力的空间上下文信息。但是,在我们的例子中,两个逐点卷积之间的位置是瓶颈。如图3(a)所示,直接在瓶颈中添加深度卷积,使它们具有更少的过滤器,因此可以编码的空间信息更少。我们实验发现,与MobileNetV2相比,这种结构在很大程度上降低了1%以上的性能。
我们建议在残差路径的末端添加深度卷积,这样,由于两个深度卷积都是在高维空间中进行的,因此与倒置残差块相比,可以提取更丰富的特征表示。我们将对这种设计的优点进行更多解释。
Activation layers
有研究证明,用线性bottleneck可以帮助避免特征值归零,从而减少信息丢失。所以我们不加任何的激活块在第一个逐点卷积层之后。还应该注意的是,尽管我们的构建块的输出是高维的,但我们根据经验发现,在最后一次卷积之后添加激活层会对分类性能产生负面影响。只在第一层DW和最后一层pointconv使用激活层。发现在最后输出使用激活层性能下降。
Block structure
请注意,当输入和输出具有不同的通道号时,我们不会添加短接。如有必要,我们还在训练期间利用批量归一化和 ReLU6 激活。
Relation to the inverted and classic residual blocks
据我们所知,这是第一个试图研究经典瓶颈结构相对于倒置残差块的优势的工作,以实现高效的网络设计。我们还试图证明,在我们的结构中残差路径的末端添加深度卷积可以鼓励网络学习更具表现力的空间信息,从而产生更好的性能。

3.3 MobileNeXt Archtecture

基于我们的sandglass block,我们开发了一个模块化架构MobileNeXt。在我们网络的开头,有一个具有 32 个输出通道的卷积层。之后,我们的sandglass block堆叠在一起。有关网络架构的详细信息,请参见表 2。我们网络中使用的扩展比率默认设置为 6。最后一个构建块的输出后跟全局平均池化层,用于将 2D 特征映射转换为 1D 特征向量。最后添加一个全连接层来预测每个类别的最终分数。

Table2 拟议的MobileNeXt的架构细节。每行表示一系列构建块,重复“b”次。每个构建块中使用的减速比用“t”表示。每个阶段中第一个构建基块的步幅设置为 2,所有其他构建基块的步幅设置为 1。每个卷积层后跟一个批量归一化层,所有空间卷积的核大小设置为 3 × 3。我们不会为具有不同输入和输出通道的块添加标识映射。我们假设有完全 k 个类别。在这里插入图片描述
Identity tensormultiplier
在我们实验过程中发现没有必要保留整个恒等张量与残差路径结合。(残差连接中没有必要完整保留原来输入,可以减去部分通道)为了使我们的网络对移动设备更友好,我们引入了一个新的超参数——恒等张量乘数,用α ∈ [0, 1] 表示,它控制恒等张量中通道的哪一部分被保留。
好处:
首先,在减少乘数后,可以减少每个构建块中的逐元素添加数量。(减少通道数)因为逐元素添加非常耗时。用户可以选择较低的恒等张量乘法器,以产生更小的延迟,而性能几乎没有下降。影响模型延迟的主要因素之一是内存访问成本。由于快捷恒等张量来自最后一个构建块的输出,因此其循环特性暗示了将其缓存在芯片上的机会,以避免过多的片外存储器访问。恒等张量的通道维度可以有效地鼓励处理器将其存储在缓存或处理器附近的其他更快的内存中,从而改善延迟。

4. Experiments

学习线性残差(即在残差路径顶部不添加非线性激活层)对于具有连接扩展层或缩减层的快捷方式的轻量级网络至关重要。

总结

我们建议扭转在低维表示之间添加快捷方式连接的想法,并提出一种称为沙漏块的新颖构建块,它连接高维表示。分类、对象检测和神经架构搜索的实验证明了所提出的沙漏块的有效性及其在更多环境中使用的潜力。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值