SENet
这篇文章“Squeeze-and-Excitation Networks”是CVPR2018的一篇论文,因为最近看的MnasNet的论文里面提到了SENet里面提出的一个很有用的block,所以又翻出来看了下这篇文章,原论文见 Squeeze-and-Excitation Networks。
下面是对论文的一个简单翻译:
摘要
卷积神经网络(CNN)的核心组成部分是卷积算子,它通过在每一层的局部感受野内融合空间和通道信息,使网络能够构建信息特征。有很多以前的研究已经调查了这一关系的空间组成部分,寻求通过提高整个特征层次的空间编码质量来加强CNN的表征能力。在这项工作中,我们将重点放在通道关系上,并提出了一个新的架构单元,我们称之为“挤压和激励”(SE)块,它通过明确建模通道之间的相互依赖性来自适应地重新校准通道特征响应。我们表明,这些块可以堆叠在一起,形成SENET架构,可以跨不同数据集非常有效地进行泛化。我们进一步证明,SE块为现有最先进的CNN带来了显著的性能改进,而只需稍微增加计算成本。SENet是我们ILVRC 2017分类比赛提交的基础网络,它赢得了第一位,并将top-5错误率降低到了2.251%,超过了2016的获胜网络,相对提高了25%。模型和代码可从https://github.com/hujie-frank/senet获得。
1. 介绍
卷积神经网络(CNN)已经被证明是解决各种视觉任务的有用模型。在网络的每个卷积层上,一组滤波器沿着输入通道表达邻域空间连接模式——在局部感受野内融合空间信息和通道信息。通过将一系列卷积层与非线性激活函数和下采样算子交叉,CNN能够生成图像表征,捕捉层次模式并获得全局理论感受野。计算机视觉研究的一个中心主题是寻找更强大的表示方法,只捕捉图像中对给定任务最显著的属性,从而提高性能。作为一种广泛应用于视觉任务的模型家族,新的神经网络体系结构设计的发展代表了这一研究的一个关键前沿。最近的研究表明,通过将学习机制集成到网络中,帮助捕获特征之间的空间相关性,可以增强CNNs产生的表征。其中一种方法是由Inception系列架构流行起来的,它将多尺度的过程合并到网络模块中,以提高性能。进一步的工作是寻求更好地对空间依赖关系进行建模,并将空间注意力纳入网络结构中。
在本文中,我们研究了网络设计的另一个方面——通道之间的关系。我们引入了一个新的体系结构单元,我们称之为挤压-激励(SE)块,其目标是通过显式地建模卷积特征的通道之间相互依赖关系来提高网络产生的表征质量。为此,我们提出一种机制,允许网络执行特征重校准,通过该机制,它可以学习使用全局信息,选择性地强调信息特征,并抑制不太有用的特征。
SE构建块的结构如图1所示。对于任意给定的变换 F t r F_{tr} Ftr(例如卷积)将输入 X X X映射到特征图 U U U,其中 U ∈ R H × W × C U\in \mathbb{R}^{H\times W\times C} U∈RH×W×C,我们可以构造一个对应的SE块来进行特征重校准。特征 U U U首先通过挤压(Squeeze)操作传递,该操作通过在空间维度( H × W H\times W H×W)上聚合特征图来生成通道描述符。该描述符的功能是生成一个嵌入通道特征响应的全局分布,允许来自网络的全局感受野的信息被它的所有层使用。挤压之后是激励(excitation)操作,该操作采用简单的自选门机制的形式,以嵌入作为输入,并产生每个通道调制权值的集合。这些权值被应用到特征图 U U U中,生成SE块的输出,可以直接输入到网络的后续层中。
![](https://i-blog.csdnimg.cn/blog_migrate/218958beecc76428450a3627acf89228.png)
设计和开发新的CNN架构是一项困难的工程任务,通常需要选择许多新的超参数和层配置。相反,SE块的结构很简单,可以直接在现有的最先进的体系结构中使用,用SE组件替换组件,从而有效地提高性能。SE块在计算上也是轻量级的,只会稍微增加模型的复杂性和计算负担。
为了给这些主张提供证据,我们开发了几个SENets,并在ImageNet数据集上进行了广泛的评估。我们还提供了ImageNet之外的结果,这些结果表明我们的方法的好处并不局限于特定的数据集或任务。利用SENets,我们在ILSVRC 2017年分类竞赛中排名第一。我们的最佳模型集成在测试集上获得了2.251%的top-5误差。与前一年的最佳模型(top-5误差为2.991%)相比,这大约有25%的相对改进。
2. 相关工作
更深层次的体系结构。VGGNets和Inception模型表明,增加网络的深度可以显著提高它能够学习的表征质量。通过调节各层输入的分布,批归一化(BN)为深度网络的学习过程增加了稳定性,并产生了更平滑的优化曲面。在这些工作的基础上,ResNets证明,通过使用基于恒等映射的跳层连接,可以学习更深、更强大的网络。Highway Networks引入了一种门控机制以调节沿捷径连接的信息流。在这些工作之后,对网络层之间的连接进行了进一步的重新定义,这显示了对深层网络的学习和表征特性的有希望的改进。
另一种与此密切相关的研究方向是改进网络中包含的计算元素的功能形式的方法。 分组卷积已被证明是一种流行的方法,用于增加学习转换的基数。多分支卷积可以实现更灵活的算子组合,可以看作是分组算子的自然扩展。在以往的工作中,通常将跨通道相关性映射为特征的新组合,或者独立于空间结构,或者使用1×1卷积的标准卷积滤波器联合映射。这方面的研究主要集中在减少模型和计算复杂性的目标上,反映了一种假设,即可以将通道关系表示为具有局部感受野的实例不可知函数的组合。相反,我们提出,为单元提供使用全局信息显式地建模通道之间动态、非线性依赖关系的机制可以简化学习过程,并显著增强网络的表示能力。
算法架构搜索。除了上述工作,还有一个丰富的研究历史,旨在放弃手工架构设计,转而寻求自动学习网络的结构。该领域的早期工作大多是在神经进化社区中进行的,该社区建立了使用进化方法搜索网络拓扑的方法。进化搜索虽然常常需要大量计算,但已经取得了显著的成功,包括为序列模型找到良好的记忆单元,以及为大规模图像分类学习复杂的体系结构。为了减少这些方法的计算量,提出了基于Lamarckian继承和可微体系结构搜索的高效替代方法。
通过将架构搜索定义为超参数优化问题,随机搜索和其他更复杂的基于模型的优化技术也可以用来解决这个问题。拓扑选择作为可能的设计结构和直接体系结构预测的一条路径,已经被提出作为额外的可行的架构搜索工具。强化学习技术取得了特别显著的成果。SE块可以作为这些搜索算法的原子构建块,并在并行工作[MnasNet]中被证明是非常有效的。
注意力和门控机制。注意力可以解释为将可用的计算资源分配给信号中信息量最大的部分的一种方法。注意力机制已经在许多任务中证明了它们的效用,包括序列学习、图像中的定位和理解、图像字幕和唇读。在这些应用中,它可以作为一个操作符合并到一个或多个表示更高级别抽象的层下面,以适应各种模式。一些工作提供了有趣的研究,结合使用空间和通道注意力。Wang等人提出了一种强大的基于沙漏模块的trunk-and-mask注意机制,该机制插入到深度残差网络的中间阶段。相比之下,我们提出的SE块包含一个轻量级的门控机制,其通过以计算高效的方式建模通道关系来增强网络的表征能力。
3. SE块
SE块是一个计算单元,可以建立在将输入 X ∈ R H ′ × W ′ × C ′ X\in\mathbb{R}^{H'\times W'\times C'} X∈RH′×W′×C′映射到特征图 U ∈ R H × W × C U\in\mathbb{R}^{H\times W\times C} U∈RH×W×C的变换 F t r F_{tr} Ftr上。在接下来的符号中,我们把 F t r F_{tr} Ftr看作卷积运算符,并使用 V = [ v 1 , v 2 , … , v C ] V=[v_{1},v_{2},\ldots,v_{C}] V=[v1,v2,…,vC]表示所学习的滤波核集,其中 v c v_{c} vc表示第c个滤波器的参数。然后我们可以写出输出 U = [ u 1 , u 2 , … , u C ] U=[u_{1},u_{2},\ldots,u_{C}] U=[u1,u2,…,uC],其中
u c = V C ∗ X = ∑ s = 1 C ′ v c s ∗ x s u_{c}=V_{C}*X=\sum_{s=1}^{C'}v_{c}^{s}*x^{s} uc=VC∗X=s=1∑C′vcs∗xs
这里 ∗ * ∗代表卷积, v c = [ v c 1 , v c 2 , … , v c C ′ ] v_{c}=[v_{c}^{1},v_{c}^{2},\ldots,v_{c}^{C'}] vc=[vc1,vc2,…,vcC′], X = [ x 1 , x 2 , … , x C ′ ] X=[x^{1},x^{2},\ldots,x^{C'}] X=[x1,x2,…,xC′]且 u c ∈ R H × W u_{c}\in\mathbb{R}^{H}\times W uc∈RH×W。 v c s v_{c}^{s} vcs是一个二维空间核,表示 v c v_{c} vc的一个单通道,作用于 X X X对应的通道上。为了简化符号,省略了偏置项。由于输出是通过对所有通道的求和产生的,所以通道依赖关系隐式地嵌入到 v c v_{c} vc中,但是与过滤器捕获的局部空间相关性纠缠在一起。卷积建模的通道关系本质上是隐式的和局部的(除了最顶层的那些)。我们期望通过显式地对通道相互依赖关系建模来增强对卷积特性的学习,从而使网络能够提高其对信息特性的敏感性,这些信息特性可以通过后续的转换加以利用。因此,我们希望为它提供对全局信息的访问,并在它们被送入下一个转换之前分两步重新校准过滤器响应,即挤压和激励。图1为SE块结构示意图。
3.1 Squeeze:全局信息嵌入
为了解决利用通道依赖性的问题,我们首先在输出特性中考虑每个通道的信号。每个学习滤波器都只有一个局部感受野,因此转换输出 U U U的每个单元都不能利用该区域之外的上下文信息。
为了解决这个问题,我们建议将全局空间信息压缩到通道描述符中。这是通过使用全局平均池来生成通道级统计数据来实现的。形式上,统计量 z ∈ R C z\in\mathbb{R}^{C} z∈RC是由 U U U通过其空间维 H × W H\times W H×W进行收缩生成的,使得 z z z的第 c c c个元素由下式计算得到:
z c = F s q ( u c ) = 1 H × W ∑ i = 1 H ∑ j = 1 W u c ( i , j ) z_{c}=F_{sq}(u_{c})=\frac{1}{H\times W}\sum_{i=1}^{H}\sum_{j=1}^{W}u_{c}(i,j) zc=Fsq(uc)=H×W1i=1∑Hj=1∑Wuc(i,j)
讨论。转换的输出 U U U可以解释为局部描述符的集合,这些局部描述符的统计信息表示整个图像。利用这些信息在以往的特征工程工作中很普遍。我们选择了最简单的聚合技术,全局池化,注意到这里也可以使用更复杂的策略。
3.2 Excitation:自适应再校准
为了利用在挤压操作中聚合的信息,我们在此之后进行了第二个操作,其目的是完全捕获通道依赖关系。为了实现这一目标,函数必须满足两个标准:第一,它必须是灵活的(特别是它必须能够学习通道之间的非线性相互作用),第二,它必须学习一种非互斥关系,因为我们希望确保多个通道可以被强调(而不是强制只有一个激活(one-hot))。为了满足这些条件,我们选择使用一个简单的使用sigmoid激活函数的门控机制:
s = F e x ( z , W ) = σ ( g ( z , W ) ) = σ ( W 2 δ ( W 1 z ) ) s=F_{ex}(z,W)=\sigma(g(z,W))=\sigma(W_{2}\delta(W_{1}z)) s=Fex(z,W)=σ(g(z,W))=σ(W2δ(W1z))
其中 δ \delta δ是指ReLU函数, W 1 ∈ R C r × C W_{1}\in\mathbb{R}^{\frac{C}{r}\times C} W1∈RrC×C且 W 2 ∈ R C × C r W_{2}\in\mathbb{R}^{C\times\frac{C}{r}} W2∈RC×rC。为了限制模型的复杂性并有助于泛化,我们通过在非线性周围形成一个具有两个完全连接层的瓶颈来参数化门控机制,即具有缩减率 r r r的维度缩减层(该参数选择在第6.1节中讨论)、ReLU和一个维数增加层返回到变换输出 U U U的通道维数。块的最终输出是通过使用激活 s s s重新缩放 U U U获得的:
x ~ c = F s c a l e ( u c , s c ) = s c u c \tilde{\mathbf{x}}_{c}=\mathbf{F}_{scale}(\mathbf{u}_{c},s_{c})=s_{c}\mathbf{u}_{c} x~c=Fscale(uc,sc)=scuc
其中 X ~ = [ x ~ 1 , x ~ 2 , … , x ~ C ] \tilde{X}=[\tilde{x}_{1},\tilde{x}_{2},\ldots,\tilde{x}_{C}] X~=[x~1,x~2,…,x~C], F s c a l e ( u c , s c ) \mathbf{F}_{scale}(\mathbf{u}_{c}, s_{c}) Fscale(uc, sc)为标量 s c s_{c} sc与特征图 u c ∈ R H × W \mathbf{u}_{c}\in\mathbb{R}^{H\times W} uc∈RH×W之间的通道相乘。
讨论。激励算子将特定于输入的描述符 z z z映射到一组通道权值。在这一点上,SE块本质上引入了以输入为条件的动态,它可以被视为通道上的一个自注意函数,这些通道的关系不局限于卷积滤波器响应的局部感受野。
3.3 实例化
SE块可以通过每次卷积后的非线性插入,集成到VGGNet等标准架构中。此外,SE块的灵活性意味着它可以直接应用于标准卷积之外的转换。为了说明这一点,我们通过将SE块合并到几个更复杂的体系结构示例中来开发SENets,下面将对此进行描述。
我们首先考虑Inception网络[5]的SE块的构造。在这里,我们简单地将转换 F t r F_{tr} Ftr作为一个完整的Inception模块(参见图2),通过对体系结构中的每个这样的模块进行此更改,我们获得了一个SE-Inception网络。SE块也可以直接用于残差网络(图3描述了SE- resnet模块的架构)。这里,将SE块变换 F t r F_{tr} Ftr作为残差模块的非恒等分支。挤压和激励都在与恒等分支求和之前发生作用。进一步集成SE块与ResNeXt、Inception-ResNet、MobileNet和ShuffleNet的变体可以通过类似的方案构建。对于SENet体系结构的具体例子,表1给出了SE-ResNet-50和SE-ResNeXt-50的详细描述。
![](https://i-blog.csdnimg.cn/blog_migrate/a64d68f47368f2623578f1833e0c4bcc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/44e204985c88e8decdf874e0daa4f414.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f0d87d0e535a48f3ce6a886d2f6bc2d2.png)
SE块的灵活性的一个结果是,它可以通过几种可行的方式集成到这些体系结构中。因此,为了评估将SE块纳入网络架构的集成策略的敏感性,我们还在6.5节中提供了消融实验,探索不同的块包含设计。
4. 模型与计算复杂度
为了使提出的SE块设计具有实际用途,它必须在提高性能和增加模型复杂性之间提供良好的平衡。为了说明与模块相关的计算负担,我们以ResNet-50和SE-ResNet-50之间的比较为例。对于一个224×224像素的输入图像,ResNet-50在一次向前传递中需要约3.86 GFLOPs。每个SE块在挤压阶段使用一个全局平均池化操作,在激励阶段使用两个小的FC层,然后使用一个廉价的通道缩放操作。总的来说,当将缩减率 r r r(在第3.2节中介绍)设置为16时,SE-ResNet-50需要约3.87 GFLOPs,相对于原始的ResNet-50增加了0.26%。 作为对这一微小的额外计算负担的交换,SE-ResNet-50的精度超过了ResNet-50,实际上,接近于需要约7.58 GFLOPs的更深层次的ResNet-101网络的精度(表2)。
![](https://i-blog.csdnimg.cn/blog_migrate/2901b5a406eb477a6a4f5de4c5d66191.png)
在实际操作中,通过ResNet-50进行一次前向和后向的单次传播需要190ms,而使用256张图像的小型训练批处理SE-ResNet-50需要209 ms(这两种计时都是在一台使用8个 NVIDIA Titan X gpu 的服务器上执行的)。我们建议,这代表了一个合理的运行时开销,随着全局池化和小的內积操作在流行的GPU库中得到进一步优化,这可能会进一步减少。由于其对嵌入式设备应用的重要性,我们进一步对每个模型的CPU推理时间进行基准测试:对于224×224像素的输入图像,ResNet-50需要164ms,而SE-ResNet-50需要167ms。我们认为SE块带来的小的额外计算成本是合理的,因为它对模型性能的贡献。
接下来,我们将考虑提议的SE块引入的附加参数。这些附加参数仅来自门控机制的两个FC层,因此只占总网络容量的一小部分。具体而言,由各FC层的权值参数引入的总数为:
2 r ∑ s = 1 S N s ⋅ C s 2 \frac{2}{r}\sum_{s=1}^{S}N_{s}\cdot C_{s}^{2} r2s=1∑SNs⋅Cs2
r r r表示缩减率, S S S是指阶段数(阶段是指在一个共同空间维度的特征图上操作的块集合), C s C_{s} Cs表示输出通道的尺寸, N s N_{s} Ns表示在阶段 s s s重复的块的数量(当偏置项用于FC层,引入参数和计算成本通常可以忽略不计)。SE-ResNet-50引入约250万个附加参数,超出了Resnet-50要求的约2500万个参数,相应地增加了约10%。在实践中,这些参数中的大多数来自网络的最后阶段,在这个阶段,激励操作在最大数量的通道上进行。然而,我们发现这种相对昂贵的最后阶段的SE块可以以很小的性能代价(在ImageNet上<0.1%的top-5错误率)进行删除,减少约4%的相对参数增加,这可能在参数使用是关键考虑因素的情况下被证明是有用的(参见6.4节和7.2节的进一步讨论)。
5 实验
在本节中,我们将进行实验,研究SE块在一系列任务、数据集和模型体系结构中的有效性。
5.1 图像分类
为了评估SE块的影响,我们首先对ImageNet 2012数据集进行了实验,该数据集包括来自1000个不同类别的128万个训练图像和50K个验证图像。我们在训练集上训练网络,并在验证集上报告top-1和top-5个错误率。
每个基线网络体系结构及其对应的SE对等结构都使用相同的优化方案进行训练。我们遵循标准做法,使用scale和纵横比将图片随机裁剪为224×224像素的尺寸(或299×299,用于Inception-ResNet-v2和SE-Inception-ResNet-v2),并执行随机水平翻转,从而实现数据增强。每个输入图像通过平均RGB通道减法归一化。所有的模型都在我们的分布式学习系统ROCS上进行训练,该系统旨在处理大型网络的有效并行训练。优化是使用一个momentum为0.9、小批量大小为1024的同步SGD进行的。初始学习率设置为0.6,每30个epoch降低10倍。使用[Delving deep into rectifiers : Surpassing human-level performance on ImageNet classification]中描述的权重初始化策略,模型从零开始进行100个epoch的训练。缺省情况下,缩减率 r r r(在第3.2节中)设置为16(除非另有说明)。
在评估模型时,我们应用了中心裁剪,以便从每个图像中裁剪224×224个像素,在其较短的边缘先调整为256之后(从其较短的边缘先调整为352的图像中裁剪299×299,用于Inception-ResNet-v2和SE-Inception-ResNet-v2)。
网络深度。我们首先将SE-ResNet与不同深度的ResNet体系结构进行比较,并在表2中报告结果。我们观察到SE块在不同深度上持续地提高性能,而计算复杂度的增加非常小。值得注意的是,SE-ResNet-50实现了6.62%的single-crop top-5验证错误率,比ResNet-50(7.48%)高出0.86%,接近更深层的ResNet-101网络(6.52%的top-5错误率)所实现的性能,仅占总计算量的一半(3.87 GFLOPs vs 7.58 GFLOPs)。这种模式在更深的地方重复出现,SE-ResNet-101(top-5错误率6.07%)不仅匹配,而且比更深的ResNet-152网络(top-5错误率6.34%)的性能高出0.27%。虽然应该注意到SE块本身增加了深度,但是它们以一种非常高效的计算方式增加了深度,并且即使在扩展基础架构的深度达到收益递减的程度时,也会产生良好的收益。此外,我们还发现,在不同的网络深度范围内,这些增益是一致的,这表明SE块所带来的改进可能与仅仅通过增加基础架构的深度所获得的改进是互补的。
与新式模型的集成。接下来,我们将研究将SE块与另外两个最先进的架构Inception-ResNet-v2和ResNeXt(使用32×4d的设置)集成的效果,这两个架构都将额外的计算构建块引入到基本网络中。我们构建了这些网络的SENet等价物SE-Inception-ResNet-v2和SE-ResNeXt(SE-ResNeXt-50的配置如表1所示),并在表2中报告结果。与之前的实验一样,我们观察到在这两种体系结构中引入SE块所带来的显著性能改进。特别是,SE-ResNeXt-50的top-5错误率为5.49%,优于其直接对应的ResNeXt-50(5.90%的top-5错误率)和更深的ResNeXt-101(5.57%的top-5错误率,该模型的参数总数和计算开销几乎是前者的两倍)。我们注意到,在我们重新实现的Inception-ResNet-v2和在[Inception-v4]中报告的结果之间,性能略有不同。然而,我们在SE块的效果上观察到一个类似的趋势,发现SE对应物(4.79%的top-5错误率)比我们重新实现的Inception-ResNet-v2基线(5.21%的top-5错误)的性能好0.42%,同样比在[Inception-v4]中报告的结果好。我们还通过使用VGG-16和BN-Inception架构进行实验,评估了SE块在非残差网络上运行时的效果。为了便于VGG-16的从无到有的训练,我们在每次卷积后都添加了批归一化层。我们对VGG-16和SE-VGG-16使用相同的训练方案。比较结果如表2所示。与报告的残差基线体系结构的结果类似,我们观察到SE块在非残差设置上带来了性能上的改进。
为了深入了解SE块对这些模型优化的影响,图4中描述了基线体系结构及其相应SE块运行的示例训练曲线。我们观察到SE块在整个优化过程中产生了稳定的改善。此外,这种趋势在一系列被视为基线的网络体系结构中是相当一致的。
![](https://i-blog.csdnimg.cn/blog_migrate/399bed3142ba3aa2c5853f30a90a885e.png)
移动设置。最后,我们考虑了两种典型的移动优化网络架构,MobileNet和ShuffleNet。在这些实验中,我们使用了大小为256的小批数据,并使用了与[ShuffleNet]类似的稍微不那么积极的数据增强和正则化。我们使用SGD(momentum设置为0.9)在8个gpu上对模型进行训练,初始学习率为0.1,每次验证损失趋于稳定时,学习率降低10倍。整个培训过程需要约400个epoch(使我们能够重现[ShuffleNet]的基线性能)。表3中报告的结果表明,SE块以最小的计算成本提高了较大的精度。
![](https://i-blog.csdnimg.cn/blog_migrate/433cf576a98977252f2c71f5372912c4.png)
额外的数据集。接下来,我们将研究SE块的好处是否可以推广到ImageNet之外的数据集。我们在CIFAR-10和CIFAR-100数据集上使用几种流行的基线架构和技术(ResNet-110、ResNet-164、WideResNet-16-8、Shake-Shake和Cutout)进行实验。这些包括50k训练和10k测试32×32像素RGB图像的集合,分别标记为10个类和100个类。将SE块集成到这些网络中遵循与第3.3节中描述的相同的方法。每个基线及其SENet对应物都使用标准的数据增强策略进行训练。在训练过程中,随机水平翻转图像,每侧填充4个像素,然后随机进行32×32的裁剪。平均值和标准偏差归一化也被应用。训练超参数的设置(如:小批量大小、初始学习率、重量衰减)与原论文建议的匹配。我们在表4中报告了每个基线及其SENet配对物在CIFAR-10上的性能,在表5中报告了CIFAR-100的性能。我们观察到,在每次比较中,SENets都优于基线架构,这表明SE块的好处并不局限于ImageNet数据集。
![](https://i-blog.csdnimg.cn/blog_migrate/e9e45915e5a27dd2c91a30aac11090f2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8eca1622b49e26fef3e2be95e60fb0c3.png)
5.2 场景分类
我们还对Places365-Challenge数据集进行了场景分类实验。该数据集包含365个类别的800万张训练图像和36500张验证图像。相对于分类,场景理解的任务提供了另一种评估模型泛化和处理抽象能力的方法。这是因为它通常要求模型处理更复杂的数据关联,并对更大程度的外观变化保持健壮性。
我们选择使用ResNet-152作为强基线来评估SE块的有效性,并遵循[Places401 and places365 models]、[Relay backpropagation for effective learning of deep convolutional neural networks]中描述的训练和评估报告。在这些实验中,模型是从零开始训练的。我们在表6中报告了结果,并与之前的工作进行了比较。我们观察到SE-ResNet-152(top-5误差率11.01%)的验证误差低于ResNet-152(top-5误差率11.61%),提供证据表明SE块也可以改进场景分类。这款SENet超越了之前最先进的模型Places-365-CNN,其在这项任务上的top-5误差率为11.48%。
![](https://i-blog.csdnimg.cn/blog_migrate/b12dd694cc2fbc3193816efd616086c0.png)
5.3 COCO上的目标检测
我们使用COCO数据集进一步评估了SE块在目标检测任务上的泛化能力。与之前的工作[Aggregated residual transformations for deep neural networks]一样,我们使用minival协议,即,训练80k训练集与35k val子集的并集模型,并对剩余的5k val子集进行评估。权重由在ImageNet数据集上训练的模型参数初始化。我们使用Faster R-CNN检测框架作为评估模型的基础,并遵循[Detectron]中描述的超参数设置(即 ,采用“ 2 × 2\times 2×”学习计划进行端到端训练)。我们的目标是评估用SE-ResNet替换目标检测器中的主干体系结构(ResNet)的效果,这样性能的任何变化都可以归因于更好的表征能力。表7报告了使用ResNet-50、ResNet-101及其SE对等物作为主干架构的目标检测器的验证集性能。SE-ResNet-50比COCO的标准AP指标高出2.4%(相对提高6.3%),比AP@IoU=0.5高出3.1%。SE块还使更深层次的ResNet-101体系结构受益,在AP度量上实现了2.0%的改进(5.0%的相对改进)。总之,这组实验证明了SE块的通用性。这些改进可以通过广泛的体系结构、任务和数据集实现。
![](https://i-blog.csdnimg.cn/blog_migrate/1a4530ebf00b5cced88747ad4b9d6697.png)
5.4 ILSVRC 2017分类竞赛
SENets为我们参加ILSVRC竞赛奠定了基础,我们获得了第一名。我们的获奖作品包括一小部分SENets,采用标准的多尺度和multi-crop融合策略,在测试集上获得2.251%的top-5误差率。作为这个提交的一部分,我们构造了一个额外的模型SENet-154,通过整合SE块修改ResNeXt(附录提供了体系结构的细节)。在表8中,我们使用标准裁剪尺寸(224×224和320×320)将此模型在ImageNet验证集上与先前工作进行比较。我们观察到,采用224×224中心裁剪评价,SENet-154的top-1误差率为18.68%,top-5误差率为4.47%,这是目前报道的最有力的结果。
![](https://i-blog.csdnimg.cn/blog_migrate/87723fca81244e3512dde4f19aee4976.png)
在挑战之后,在ImageNet基准测试方面已经取得了很大的进展。为了进行比较,我们在表9中列出了目前已知的最强结果。仅使用ImgageNet数据的最佳性能最近由[Autoaugment: Learning augmentation policies from data]报道。该方法利用强化学习,在训练过程中开发新的数据增强策略,以提高[Regularized evolution for image classifier architecture search]搜索架构的性能。使用ResNeXt-101 32×48d体系结构的[Exploring the limits of weakly supervised pretraining]报告了最佳的总体性能。这是通过在大约10亿个弱标记图像上对他们的模型进行预训练和在ImageNet上进行微调实现的。更复杂的数据增强和广泛的预训练所带来的改进,可能与我们提议的对网络架构的更改相辅相成。
![](https://i-blog.csdnimg.cn/blog_migrate/b6d3b125c5288d162245cdca7855baa8.png)
6 消融实验
在本节中,我们进行消融实验,以更好地了解使用不同配置对SE块组件的影响。所有的消融实验都是在一台机器(8 gpu)上的ImageNet数据集上进行的。Resnet-50用作主干架构。我们从经验上发现,在ResNet架构中,消除激励操作中fc层的偏置有助于对通道依赖性进行建模,并在下面的实验中使用此配置。数据增强策略遵循第5.1节中描述的方法。为了使我们能够研究每个变量的性能上限,学习率初始化为0.1,训练将持续到验证损失稳定下来(约总共300个时期)。然后将学习率降低10倍,然后重复此过程(总共三次)。训练期间使用标签平滑规则化。
6.1 缩减比
缩减比 r r r是一个超参数,它允许我们改变网络中SE块的容量和计算成本。为了研究该超参数在性能和计算成本之间的权衡,我们对不同 r r r值范围内的SE-ResNet-50进行了实验。表10中的比较表明,性能对于一系列的缩减比是健壮的。复杂度的增加不会单调地提高性能,而较小的比例会显著地增加模型的参数大小。设置 r = 16 r=16 r=16可以很好地平衡精度和复杂性。在实践中,在整个网络中使用相同的比率可能不是最优的(由于不同层执行不同的角色),因此可以通过调整比率来满足给定基础体系结构的需求来实现进一步的改进。
![](https://i-blog.csdnimg.cn/blog_migrate/b3c537ec8b6dc7d11b4ccbbd5e2c4225.png)
6.2 Squeeze算子
我们研究了使用全局平均池化(而不是全局最大池化)作为挤压操作符的选择的重要性(因为这很有效,所以我们没有考虑更复杂的替代方法)。结果见表11。虽然最大和平均池化都是有效的,但是平均池化的性能稍微好一些,这说明选择它作为squeeze操作的基础是合理的。但是,我们注意到SE块的性能对于特定的聚合操作符的选择是相当健壮的。
![](https://i-blog.csdnimg.cn/blog_migrate/56de9210d42249a63b223698a28fec80.png)
6.3 激励算子
接下来,我们评估了激励机制的非线性选择。我们考虑了另外两种选择:ReLU和tanh,并尝试用这些替代性的非线性来替换sigmoid。结果见表12。我们看到,将sigmoid替换为tanh会稍微降低性能,而使用ReLU会显著降低性能,实际上会导致SE-ResNet-50的性能低于ResNet-50基线。这表明,为使SE块有效,激励算子的仔细构造是重要的。
![](https://i-blog.csdnimg.cn/blog_migrate/813d16dbaec6be5a1988889937d6f92f.png)
6.4 不同阶段
我们通过将SE块集成到ResNet-50中,一次一个阶段来探讨SE块在不同阶段的影响。具体来说,我们将SE块添加到中间阶段:阶段2、阶段3和阶段4,并在表13中报告结果。我们注意到,在体系结构的每个阶段引入SE块时,都会带来性能上的好处。此外,SE块在不同阶段所带来的增益是互补的,可以有效地组合起来,进一步提高网络性能。
![](https://i-blog.csdnimg.cn/blog_migrate/7877617d6f9ca03ac4f46b1c0a940f2b.png)
6.5 集成策略
最后,我们进行了消融研究,以评估将SE块集成到现有架构中时,其位置的影响。除了提出的SE设计,我们还考虑了三种变体:(1)SE-PRE块,其中SE块被移至残差单元之前;(2)SE-POST块,其中SE单元被移至恒等分支(ReLU之后)求和后,(3)SE-Identity块,其中SE单元被放置到与残差单元平行的恒等连接上。图5显示了这些变体,表14报告了每个变体的性能。我们观察到SE-PRE、SE-Identity和提议的SE块的性能相似,而使用SE-POST块会导致性能下降。这个实验表明,SE单元所产生的性能改进对于它们的位置是相当健壮的,前提是它们在分支聚合之前应用。
![](https://i-blog.csdnimg.cn/blog_migrate/cab24daf58d6f4efbc94e8929ddf9de4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/23aade0f631f9969977c3adbc8f6cf69.png)
在上面的实验中,每个SE块被放置在剩余单元的结构之外。我们还构造了一个设计的变体,将SE块移动到残差单元中,直接放置在3×3卷积层之后。由于3×3卷积层通道较少,相应的SE块引入的参数也较少。由表15的比较可知,SE 3×3变体在参数小于标准SE块的情况下,分类精度相当。虽然这超出了本工作的范围,但是我们预计通过为特定的体系结构定制SE块的使用,可以进一步提高效率。
![](https://i-blog.csdnimg.cn/blog_migrate/7962cf2bfd365a57047421708629e90c.png)
7 SE块的角色
虽然提出的SE块已被证明可以提高网络在多个视觉任务上的性能,但我们也想了解挤压操作的相对重要性,以及激励机制在实践中是如何工作的。对深度神经网络学习的表示形式进行严格的理论分析仍然具有挑战性,因此我们采用经验的方法来研究SE块所起的作用,目的是至少对SE块的实际功能有一个初步的了解。
7.1 Squeeze的作用
为了评估挤压操作产生的全局嵌入是否对性能有重要影响,我们使用SE块的一个变体进行了实验,该变体添加了相同数量的参数,但不执行全局平均池。具体来说,我们将池化操作移除,在激励算子中,我们将两个FC层替换为对应的通道维数相同的1×1卷积,即NoSqueeze,其中excitation保持输出空间维数同输入一致。与SE块相反,这些逐点卷积只能将通道重新映射为局部操作符输出的函数。事实上,深层网络的后面的层通常具有一个(理论上的)全局感受野,全局嵌入在NoSqueze变体中不再可以在整个网络中直接访问。在表16将两种模型的精度和计算复杂度与标准ResNet-50模型进行比较。我们观察到全局信息的使用对模型性能有显著的影响,强调了挤压操作的重要性。此外,与NoSqueeze设计相比,SE块允许以计算上的节约方式使用这些全局信息。
![](https://i-blog.csdnimg.cn/blog_migrate/f34dc581a8ede69d8400638e80908d5c.png)
7.2 Excitation的作用
为了更清楚地描述SE块中激励算子的功能,本节我们研究了SE-Resnet-50模型中的示例激活,并研究了它们在网络中不同深度的不同类别和不同输入图像的分布。特别地,我们想要了解激励是如何在不同类的图像之间变化的,以及在类内的图像之间变化的。
我们首先考虑不同类别的激励的分布。具体来说,我们从ImageNet数据集中抽取了四个类,它们显示了语义和外观的多样性,即金鱼、哈巴狗、平面和悬崖(来自这些类的示例图像见附录)。然后,我们从验证集中为每个类抽取50个样本,计算每个阶段最后一个SE块(下采样之前)中50个均匀采样通道的平均激活量,并绘制它们的分布图,如图6所示。为了便于参考,我们还绘制了所有1000个类的平均激活的分布。
![](https://i-blog.csdnimg.cn/blog_migrate/06e6eeccba9a605a489c9fba883cf0c2.png)
我们对激励算子的作用作了以下三个观察。首先,不同类之间的分布在网络的早期层非常相似,例如SE_2_3。这表明特性通道的重要性可能在早期由不同的类共享。第二个观察结果是,在更深的地方,每个通道的值变得更具类特异性,因为不同的类别对特征的区分值表现出不同的偏好,例如SE_4_6和SE_5_1。这些观察结果与先前工作中的发现一致,即早期的层特征通常更为通用(例如,在分类任务的上下文中类不可知),而后期层特征表现出更高的特异性水平。
接下来,我们在网络的最后阶段观察到一些不同的现象。SE_5_2表现出一种有趣的趋势,即饱和状态,其中大部分激活都接近于1。在所有激活取值1的点处,一个SE块退化为恒等算子。在SE_5_3网络的末端(紧接着是分类器之前的全局池),在不同的类上出现了类似的模式,规模变化不大(可以由分类器调整)。这表明SE_5_2和SE_5_3在为网络提供重校准方面不如以前的模块重要。一发现与第4节中的实证研究结果一致,该结果表明,通过去除最后阶段的SE块,只有极小的性能损失,可以显着减少额外的参数量。
最后,我们在图7中展示了两个样本类(金鱼和平面)在同一类中的图像实例的激活的平均值和标准偏差。我们观察到一个与类间可视化一致的趋势,这表明SE块的动态行为在类间和同一类内的实例上都不同。尤其是在网络的后几层,在一个类中有相当多的表征多样性,网络学会利用特征重校准来提高其识别性能。总之,SE块产生特定于实例的响应,尽管如此,这些响应仍然能够在体系结构的不同层支持模型越来越特定于类的需求。
![](https://i-blog.csdnimg.cn/blog_migrate/7d8d2a3525c2081344cbe66a05bb8f27.png)
8 总结
在本文中,我们提出了SE模块,这是一种架构单元,旨在通过使网络执行动态通道特征重校准来提高网络的表征能力。 大量实验证明了SENets的有效性,它在多个数据集和任务中实现了最先进的性能。 此外,SE模块揭示了以前的架构无法充分建模通道特征依赖性。我们希望这种见解可能对其他需要强识别性特征的任务有用。最后,SE块产生的特征重要性值可以用于其他任务,例如用于模型压缩的网络修剪。
附录 SENet-152的细节
SENet-154是通过将SE块合并到64×4d ResNeXt-152的修改版本中来构建的,该版本通过采用ResNet-152的块堆叠策略扩展了原来的ResNeXt-101。与该模型的设计和训练(不包括SE块的使用)的进一步区别如下:(a)将每个瓶颈构建块的前1×1卷积通道的数量减半,以降低模型的计算成本,同时性能只有很小的降低。(b)将第一个7×7卷积层替换为三个连续的3×3卷积层。(c)用3×3的步长为2的卷积代替1×1的步长为2的卷积下采样投影,以保存信息。(d)在分类层之前插入一个dropout层(dropout率为0.2),以减少过拟合。(e)训练期间使用标签平滑规则化(如[Rethinking the inception architecture for computer vision]所述)。(f)在最后几个训练阶段冻结所有BN层的参数,以确保训练和测试之间的一致性。(g)使用8台服务器(64 gpu)并行进行训练,以实现大批量(2048)。初始学习率设置为1.0。
![](https://i-blog.csdnimg.cn/blog_migrate/8dc49bb94712020236f11aa55daf7179.png)