SENet:Squeeze-and-Excitation Networks
卷积神经网络建立在卷积运算的基础上,通过在局部感受野内融合空间信息和通道信息来提取信息特征。为了提高网络的表现力,最近的几种方法显示了增强空间编码的好处。在这项工作中,我们将重点放在通道关系上,并提出了一种新的架构单元,我们称之为SE块。它通过显式建模通道之间的相互依赖关系,自适应地重新校准通道特性响应。我们证明,通过将这些块堆叠在一起,我们可以构建在具有挑战性的数据集上非常通用的SENet架构。至关重要的是,我们发现SE块以最小的额外计算成本为现有最先进的深层架构带来了显著的性能改进。SENets是我们2017年ILSVRC分类提交的基础,它获得了第一名,并将前5名的错误大大减少到2.251%,实现了与2016年获奖作品相比,相对提高了25%。
卷积滤波器有望通过在局部感受野内融合空间和通道信息而成为信息组合。通过叠加一系列与非线性交错的卷积层和下采样,CNN能够捕获具有全局感受野的分层模式,作为强大的图像描述。通过显式嵌入学习可以提高网络的性能,有助于在不需要额外监督的情况下捕获空间相关性的机制。Inception架构[16,43]推广了一种这样的方法,它表明网络可以通过在其模块中嵌入多尺度过程来实现竞争性精度。最近的工作试图更好地建模空间依赖[1,31],并纳入空间注意力[19]。
在本文中,我们通过引入一个新的结构单元SE块,来研究结构设计的不同方面—通道关系。我们的目标是通过显式建模其卷积特征的通道之间的相互依赖关系来提高网络的表示能力。为了实现这一点,我们提出了一种允许网络执行特征重新校准的机制,通过该机制,网络可以学习使用全局信息选择性地强调信息性特征,并抑制不太有用的特征。
SE构建块的基本结构如图所示,对于任何给定的转化:Ftr:X→U,
我们可以构造相应的SE块来执行特征重新校准。特征U首先通过S挤压操作,该操作将跨空间维度H×W聚合特征图,以生成通道描述符。嵌入了信道特性响应的全局分布,使网络的全局接受域中的信息能够被较低层利用。然后是E激发操作,在该操作中,由基于通道依赖性的自选通机制为每个通道学习的样本特定激活控制每个通道的激发。然后对特征图U进行重新加权,以生成SE块的输出,然后可以直接输入到后续层。
只需堆叠一组SE构建块,即可生成SE网络。SE块还可以在体系结构的任何深度作为原始块的直接替换。虽然构建块的模板是通用的,正如我们在第6.4节中所示,但它在不同深度所起的作用适应了网络的需要。在早期的层中,它学习以一种与类无关的方式激发信息特征,支持共享的低层表示的质量。在后面的层中,SE块变得越来越专业化,并以高度特定于类的方式响应不同的输入。因此,SE块进行的特征重新校准的好处可以在整个网络中累积。
新CNN架构的开发是一项具有挑战性的工程任务,通常涉及许多新超参数和层配置的选择。相比之下,SE模块的设计很简单,可以直接与现有的最先进的体系结构一起使用,这些体系结构的模块可以通过与SE对应产品的直接替换来加强。
此外,如第4节所示,SE块在计算上是轻量级的,只会略微增加模型复杂性和计算负担。为了支持计算轻量级说法,我们开发了几个SENet,并对ImageNet 2012数据集进行了广泛评估[34]。为了证明它们的普遍适用性,我们还展示了ImageNet之外的结果,表明所提出的方法并不局限于特定的数据集或任务。通过使用SENets,我们在2017年ILSVRC分类比赛中获得了第一名。我们表现最好的模型集合在测试集上获得2.251%的top-5 error,与前一年的获胜者相比,相对提高了25%。
深层结构:VGGNets[39]和Inception模型[43]证明了增加深度的好处。批量归一化(BN)[16]通过插入单元来调节层输入,稳定学习过程,从而改进了梯度传播。ResNets[10,11]显示了通过使用基于identity的跳过连接来学习更深层次网络的有效性。Highway Network采用门控机制来管理快捷连接。网络层之间连接的重组[5,14]已被证明可以进一步改善深层网络的学习和表征特性。
另一项研究探索了调整网络模块化组件功能形式的方法。分组卷积可用于增加基数(变换集的大小)[15,47]。多分支卷积可以被解释为这一概念的推广,使运算符的组合更加灵活[16,42,43,44]。最近,以自学习的论文[26、54、55]表现出了竞争力。跨通道相关性通常被映射为新的特征组合,要么独立于空间结构[6,20],要么通过使用标准卷积滤波器[24]与1×1卷积联合映射。这项工作的大部分集中在降低模型和计算复杂性的目标上,反映了一种假设,即通道关系可以表述为具有局部感受野的实例不可知函数的组合。相比之下,我们声称,为该单元提供一种机制,使用全局信息明确建模通道之间的动态、非线性依赖关系,可以简化学习过程,并显著增强网络的表征能力。
注意力和门控机制:注意力可以被视为一种工具,将可用处理资源的分配偏向于输入信号中信息最丰富的成分[17、18、22、29、32]。从图像的本地化和理解[3]到基于序列的模型[2,28]。它通常与选通功能(如softmax或sigmoid)和顺序技术结合使用[12,41]。最近的研究表明,它适用于图像字幕[4,48]和唇读[7]等任务。在这些应用程序中,它通常用在一个或多个层的顶部,这些层代表了更高层次的抽象,用于模式之间的适应。Wang等人[46]介绍了一种使用沙漏模块的trunk-and-mask注意力机制[31]。这个高容量单元被插入中间阶段之间的深层残余网络中。我们提出的SE块是一种轻量级选通机制,专门用于以计算效率的方式建模通道关系,并旨在增强整个网络中基本模块的表示能力。
SE块是一个计算单元,可以为任何给定的变换构造Ftr:X→U,
Ftr取为卷积算子。设V=[v1,v2,…,vC]表示学习的过滤器内核集,其中vC表示第c个过滤器的参数。然后我们可以将Ftr的输出写为U=[u1,u2,…,uC],*代表卷积。
为了简化符号,省略了偏差项。VCs是一个2D空间核,表示作用于X对应通道的Vc的单个通道。由于输出是通过所有通道的求和产生的,因此通道依赖项隐式嵌入到vc中,但这些依赖项与滤波器捕获的空间相关性纠缠在一起。我们的目标是确保网络能够提高其对信息特征的敏感度,以便后续转换可以利用这些特征,并抑制不太有用的特征。我们建议通过明确建模通道相互依赖性来实现这一点,以在将滤波器响应送入下一个变换之前,分两步重新校准滤波器响应,即挤压S和激励E。
为了解决利用信道相关性的问题,我们首先考虑输出特性中每个信道的信号。每个学习过的滤波器都与一个局部感受野一起工作,因此变换输出U的每个单元都无法利用该区域之外的上下文信息。这一问题在接受野较小的神经网络的下层变得更为严重。为了缓解这个问题,建议将全局空间信息压缩到信道描述符中。这是通过使用全局平均池生成通道统计信息来实现的。从形式上来说,统计数据z∈ RC是通过将U缩小到空间尺寸H×W生成的,其中z的第c个元素通过以下公式计算:
转换输出U可以解释为局部描述符的集合,其统计信息可以表示整个图像。选择最简单的全局平均池(global average pooling),这里也可以采用更复杂的聚合策略。
利用在Squeeze操作中聚合的信息,接下来进行第二个操作,该操作旨在完全捕获通道相关性。为了实现这一目标,该功能必须满足两个标准:第一,它必须灵活(尤其是必须能够学习通道之间的非线性相互作用);第二,它必须学习非互斥关系,因为我们希望确保允许强调多个通道,而不是一个one-hot激活。为了满足这些标准,我们选择使用一个简单的门控机制和sigmoid激活。
其中δ是指ReLU[30]函数,w1∈R(C/r×C),w2∈R(C×C/r),为了限制模型复杂性和帮助推广,我们通过在非线性周围形成一个具有两个完全连接(FC)层的瓶颈来对选通机制进行参数化。即具有参数W1和缩减率r的维度缩减层(该参数选择在第6.4节中讨论)、ReLU,然后具有参数W2的维度递增层。块的最终输出是通过使用激活重新缩放变换输出U获得的:
Fscale(uc,sc)是指特征映射uc和标量sc之间的信道乘法。激活作为适应输入特定描述符z的通道权重。在这方面,SE块本质上引入了以输入为条件的动态,有助于提高特征区分能力。
SE块应用于AlexNet[21]和VGGNet[39]很简单。SE块的灵活性意味着它可以直接应用于标准卷积以外的变换。为了说明这一点,我们通过将SE块集成到具有复杂设计的现代架构中来开发SENets。
对于非残差网络,如Inception网络,通过将转换Ftr作为整个初始模块,为网络构建SE块。通过对架构中的每个此类模块进行此更改,我们构建了一个SE-Inception网络。
SE块具有足够的灵活性,可用于残差网络。图中描述了SE-ResNet模块的模式。这里,SE块变换Ftr被视为剩余模块的非identity分支。挤压S和激发E都在和恒等式分支求和之前起作用。
按照类似的方案,可以构建更多与ResNeXt[47]、Inception ResNet[42]、MobileNet[13]和ShuffleNet[52]集成的变体。我们在表中描述了SE-ResNet-50和SE-ResNeXt-50的体系结构。
为了使所建议的SE块在实践中可行,它必须在模型复杂度和性能之间提供一个有效的权衡办法,这对可伸缩性很重要。我们将所有实验的缩减率r设置为16,除了特别说明(更多讨论见6.4小节)为了解释这个模型的成本,我们以比较ResNet-50和SE-ResNet-50为例。SE-ResNet-50的精度高于ResNet-50,且与更深的ResNet101网络的精度接近。ResNet-50在单个前向传输224×224像素输入图像中需要3.86GFLOP,每个SE块在S挤压阶段使用全局平均池化操作,在E阶段使用两个FC层,然后使用便宜的信道缩放操作。SE-ResNet-50需要3.87 GFLOP,与原始ResNet-50相比,相对增加0.26%。
实际上,对于256个图像的训练mini-batch小批量,通过ResNet-50的一次向前和向后传递需要190毫秒,而SE-ResNet-50需要209毫秒(两次计时都是在具有8个NVIDIA Titan X GPU的服务器上执行的)。我们认为这是一个合理的开销,特别是因为在现有GPU库中,全局池和小型内部操作的优化程度较低。
此外,由于它对嵌入式设备应用程序的重要性,我们还对每个模型的CPU推断时间进行了基准测试:对于224×224像素的输入图像,ResNet-50需要164 ms,而SE-ResNet-50则需要167 ms。SE块所需的少量额外计算开销是由其对模型性能的贡献所证明的。我们考虑由SE块引入的其他参数。所有这些都包含在选通机制的两个FC层中,这两个层仅占总网络容量的一小部分。更准确地说,引入的附加参数的数量由以下公式给出:
其中r表示缩减率,S表示阶段数(其中每个阶段是指在公共空间维度的特征图上操作的块集合),Cs表示输出通道的维度,Ns表示阶段S的重复块编号。SEResNet-50相对应于ResNet-50增加了10%的参数,这些参数中的大多数来自网络的最后一个阶段,在这个阶段,激励是在最大的通道尺寸上执行的。可以以性能上的边际成本(在ImageNet上小于0.1%的top-1错误)来消除SE块相对昂贵的最后阶段,以将相对参数增加减少到4%,在参数使用是关键考虑因素的情况下可能有用(见第6.4节的进一步讨论)
每个普通网络及其对应的SE对等网络都使用相同的优化方案进行训练。在ImageNet训练期间,我们遵循标准实践,通过随机大小裁剪[43]至224×224像素(Inception-ResNet-v2[42]和SE-Iception/ResNet-v2为299×299像素)和随机水平翻转执行数据增强。通过平均通道减法对输入图像进行归一化。此外,对于小批量采样,我们采用了[36]中描述的数据平衡策略。网络在我们的分布式学习系统“ROCS”上进行训练,该系统旨在处理大型网络的高效并行训练。使用动量为0.9、最小批量为1024的同步SGD进行优化。初始学习率设置为0.6,每30个周期减少10倍。所有模型都使用[9]中描述的权重初始化策略,从头开始训练100个周期。
在测试时,我们对验证集应用中心裁剪评估,其中224×224像素是从每个图像中裁剪出来的,这些图像的短边首先调整为256(对于Inception-ResNet-v2和SE-Iception/ResNet-v2,从每个图像的短缘首先调整为352)。
ImageNet 2012数据集由128万张训练图像和来自1000个类别的50K张验证图像组成。我们在训练集上训练网络,并报告top-1和top-5 error
网络深度:我们首先将SE-ResNet与具有不同深度的ResNet架构进行比较。上表结果表明,SE块在不同深度上都能持续提高性能,但计算复杂度的增加得非常小。
值得注意的是,SE-ResNet-50实现了6.62%的单作物top-5验证错误,超过ResNet-50(7.48%)0.86%,接近更深的ResNet-101网络所实现的性能(6.52% top-5错误),只需一半的计算开销(3.87个GFLOPs vs.7.58个GFLOP)下图描述了SE-ResNet-50和ResNet-50的训练和验证曲线。虽然应该注意到SE块本身增加了深度,但它们以极为高效的计算方式实现了这一点,即使在扩展基础架构的深度实现了最小化回报的时候,也能产生良好的回报。通过在不同深度范围内的训练,性能改进是一致的,这表明SE块带来的改进可以与增加基础架构的深度结合使用。
与先进网络相结合:研究了将SE块与另两个最先进的体系结构Inception-ResNet-v2[42]和ResNeXt(使用32×4d的设置)[47]相结合的效果,这两个体系结构都在模块中引入了先前的结构。我们构建了这些网络的SENet等价物SE-Inception-ResNet-v2和SE-ResNeXt(SE-ResNeXt-50的配置如前表所示。SE-ResNeXt-50的前5个错误为5.49%,这优于其直接对应的ResNeXt-50%(5.90%的前5错误)以及更深的ResNeXt-101(5.57%的前5误差),该模型的参数数量和计算开销几乎翻了一番。至于Inception-ResNetv2的实验,我们推测裁剪策略的差异可能会导致他们报告的结果与我们重新实现的结果之间的差距,因为他们的原始图像大小在[42]中没有明确,而我们从相对较大的图像中裁剪299×299区域。SE-Inception-ResNet-v2(4.79%的前5个错误)比我们重新实现的Inception-ResNet-v2(5.21%的前5错误)提高了0.42%(相对提高8.1%),以及比[42]中报告的结果提高了。
我们还通过使用VGG-16[39]和BN Inception架构[16]进行实验来评估SE块在非残差网络上运行时的影响。由于深层网络很难优化[16,39],为了便于从头开始训练VGG-16,我们在每次卷积之后添加了一个批规范化BN层。我们将相同的方案用于训练SE-VGG-16。比较结果如表2所示,显示了在残差架构中出现的相同现象。
我们对表3中的两个代表性高效架构MobileNet[13]和ShuffleNet[52]进行了评估,结果表明SE块可以以最小的计算成本增量持续大幅提高精度。这些实验表明,SE块引起的改进可以与多种架构结合使用。此外,这一结果适用于残差基本网络和非残差基本网络。
ImageNet验证集上的单次裁剪错误率和复杂性比较。MobileNet在[13]中指的是“1.0 MobileNet-224”,ShuffleNet在[52]中指“Shuffle Net 1×(g=3)
2017年ILSVRC分类比赛结果:SENets是我们参加比赛的基础,我们获得了第一名。我们的获奖作品包括一小部分SENets,它们采用了标准的多尺度和多作物融合策略,在测试集上获得2.251%的top-5 error。我们称之为SENet-154的一个高性能网络是通过将SE块与修改后的ResNeXt[47]集成而构建的,其目标是在不太强调模型复杂性的情况下达到最佳精度。我们将其与表中ImageNet验证集上表现最好的已发布模型进行了比较。
通过224×224中心作物评估,我们的模型实现了18.68%的前1个错误和4.47%的前5个错误。为了进行公平比较,我们提供了一个320×320的中心作物评估,表明与之前的工作相比,性能有了显著提高。比赛结束后,我们训练了一个输入尺寸更大的SENet-154,它的输入尺寸为320×320,在前1名(16.88%)和前5名(3.58%)的错误指标下都达到了较低的错误率。
我们在Places365-Challenge数据集[53]上进行场景分类实验。它包括800万张训练图像和365个类别的3650张验证图像。相对于分类,场景理解任务可以更好地评估模型的概括能力和处理抽象的能力,因为它需要捕获更复杂的数据关联,并对更大程度的外观变化具有鲁棒性。
我们使用ResNet-152作为强大的基线来评估SE模块的有效性,并遵循[37]中的训练和评估协议。下表显示了ResNet-152和SE-ResNet-152的结果。具体来说,SE-ResNet152(11.01% top-5error)的验证错误低于ResNet-151(11.61% top-5 error),这证明SE块可以在不同的数据集上很好地执行。该SENet超过了先前最先进的型号Places-365-CNN[37],该型号在该任务中的前5个错误率为11.48%。
使用COCO数据集[25]进一步评估SE块在对象检测任务中的通用性,该数据集包含80k训练图像和40k验证图像,如下[10]。我们使用Faster R-CNN[33]作为检测方法,并遵循[10]中的基本实现。意图是评估用SE-ResNet替换基本架构ResNet的好处,以便将改进归功于更好的表示。下表显示了分别使用ResNet-50、ResNet-101及其在验证集上的SE对应项的结果。在COCO的标准度量AP上,SE-ResNet-50优于ResNet-50 1.3%(相对提高5.2%),重要的是,SE区块能够在AP指标上使更深层次的架构ResNet-101提高0.7%(相对提高2.6%)。
缩减率:引入的缩减率r是一个重要的超参数,它允许我们改变模型中SE块的容量和计算成本。为了研究这种关系,我们基于SE-ResNet-50对不同r值范围进行了实验。
表中的比较表明,性能不会随着r的增加而单调提高。这可能是使SE块能够超越训练集的通道相关性的结果。特别是,我们发现设置r=16在准确性和复杂性之间取得了很好的平衡,因此,我们将此值用于所有实验。
激励的作用:虽然SE模块已被经验证明可以提高网络性能,但我们也希望了解自选通激励机制在实践中是如何运行的。为了更清楚地了解SE块的行为,在本节中,我们研究了SE-ResNet-50模型中的示例激活,并检查了它们在不同块的不同类别中的分布。具体来说,我们从ImageNet数据集中抽取了四个表现出语义和外观差异的类,即金鱼、哈巴狗、飞机和悬崖。然后,我们从验证集中为每个类抽取50个样本,计算每个阶段最后一个SE块中50个均匀采样通道的平均激活率(在下采样之前立即),并在图中绘制其分布。作为参考,我们还绘制了所有1000个类的平均激活分布。
对激励的作用进行了以下三点观察。首先,不同类别的分布在较低层中几乎相同,例如SE_2_3。这表明,在网络的早期阶段,不同类别可能共享特征频道的重要性。然而,有趣的是,第二个观察结果是,在更深的深度上,由于不同的类别对特征的区别价值表现出不同的偏好,每个通道的价值变得更加具体。
SE_4_6和SE_5_1。这两个观察结果与之前工作中的发现相一致[23,50],即下层特征通常更一般(即分类中的类别不可知),而高层特征具有更大的特异性。因此,表示学习从SE块引起的重新校准中受益,SE块自适应地促进了所需的特征提取和专业化。最后,我们在网络的最后阶段观察到了一些不同的现象.
SE_5_2呈现出一种有趣的饱和状态趋势,其中大多数激活接近1,其余接近0。在所有激活取值1时,此块将成为标准残差块。
在SE_5_3网络的末尾(紧随其后的是分类器之前的全局池),在不同的类上出现了类似的模式,规模略有变化(可以由分类器进行调整)。这表明,SE_5_2和SE_5_3在为网络提供重新校准方面比之前的模块更不重要。该调查结果表明,通过移除最后一阶段的SE块,仅在性能略有下降的情况下,总体参数计数可以显著减少。与第4节中的经验调查结果相一致。
在本文中,我们提出了SE块,这是一种新的体系结构单元,旨在通过使网络能够执行动态信道化特征重新校准来提高网络的表示能力。大量实验证明了SENets在多个数据集上实现最先进性能的有效性。此外,它们还提供了对以往架构在建模通道特性依赖性方面的局限性的一些见解,我们希望这对于需要强区分特性的其他任务可能有用。最后,SE块引起的特征重要性可能有助于相关领域,如压缩的网络修剪。