Squeeze-and-Excitation Networks
ie Hu[0000−0002−5150−1003]
Li Shen[0000−0002−2283−4976]
Samuel Albanie[0000−0001−9736−5134]
Gang Sun[0000−0001−6913−6799]
Enhua Wu[0000−0002−2174−1428]
Abstract 卷积神经网络(CNNs)的核心构造块是卷积算子,它使网络能够通过融合各层局部感受野中的空间和信道信息来构造信息特征。先前的广泛研究已经调查了这种关系的空间成分,试图通过提高整个特征层次的空间编码质量来增强CNN的表现力。在这项工作中,我们将重点放在通道关系上,并提出了一个新的架构单元,我们称之为“挤压和激励”(SE)块,它通过显式地建模通道之间的相互依赖性,自适应地重新校准通道特征响应。我们表明,这些块可以堆叠在一起形成SENet体系结构,在不同的数据集上非常有效地概括。我们进一步证明,SE块在稍微增加计算成本的情况下,显著改善了现有的最新cnn的性能。压缩和激励网络是我们ILVRC 2017分类提交的基础,它赢得了第一位,并将前5位错误减少到2.251%,超过了2016的获胜条目,相对提高了25%。
关键词:挤压和激励,图像表示,注意,卷积神经网络。
1 INTRODUCTION
进化神经网络(CNNs)已被证明是处理各种视觉任务的有用模型[1]、[2]、[3]、[4]。在网络中的每个卷积层,滤波器集合表示沿输入信道的邻域空间连接模式,将空间和信道信息在本地接收场中融合在一起。通过将一系列具有非线性激活函数和下采样算子的卷积层交错,CNNs能够产生图像表示,从而捕获层次模式并获得全局理论接收场。计算机视觉研究的一个中心主题是寻找更强大的表现形式,这些表现形式只捕捉图像中对给定任务最显著的那些属性,从而提高性能。作为一个广泛应用的视觉任务模型族,新的神经网络体系结构设计的发展是这项研究的一个关键前沿。最近的研究表明,通过将学习机制集成到帮助捕获特征之间空间相关性的网络中,CNNs生成的表示可以得到加强。其中一种由Inception系列体系结构[5]、[6]推广的方法,将多尺度过程集成到网络模块中,以实现改进的性能。进一步的工作寻求更好的模型空间依赖性[7],[8],并将空间注意纳入网络的结构中[9]。
在本文中,我们研究了网络设计的另一个方面——信道之间的关系。我们引入了一个新的体系结构单元,我们称之为挤压和激励(SE)块,其目的是通过显式地建模其卷积特征的通道之间的相互依赖性来提高网络产生的表示质量。为此,我们提出了一种允许网络执行特征重新校准的机制,通过该机制,网络可以学习使用全局信息来选择性地强调信息性特征,并抑制不太有用的特征。
SE构建块的结构如图1所示。对于将输入X映射到U∈RH×W×C的特征映射U的任何给定变换,例如卷积,我们可以构造相应的SE块来执行特征重新校准。特征U首先通过挤压操作,挤压操作通过聚集其空间维度(H×W)上的特征映射来生成通道描述符。该描述符的功能是生成信道特征响应的全局分布的嵌入,允许来自网络的全局接收场的信息被其所有层使用。聚合之后是一个激励操作,它采用一个简单的自选通机制的形式,该机制以嵌入作为输入,并生成每个信道调制权重的集合。这些权重应用于特征映射U以生成SE块的输出,SE块的输出可直接馈入网络的后续层。
通过简单地叠加SE块集合,可以构造SE网络(SENet)。此外,这些SE区块还可以在网络拱的一定深度范围内作为原始区块的替代品itecarXiv:1709.01507v4号[简历]2019年5月16日2图1。挤压和激励块。真的(第6.4节)。虽然构建基块的模板是通用的,但它在整个网络中在不同深度执行的角色不同。在早期的层中,它以类不可知的方式激发信息特性,加强了共享的低级表示。在随后的层中,SE块变得越来越专业化,并以高度特定于类的方式响应不同的输入(第7.2节)。因此,SE块执行的特征重新校准的益处可以通过网络累积。
图1。挤压和激励块。
设计和开发新的CNN体系结构是一项困难的工程任务,通常需要选择许多新的超参数和层配置。相比之下,SE块的结构简单,可以直接用于现有的最先进的体系结构中,用SE块替换组件,从而有效地提高性能。SE块在计算上也是轻量级的,只会稍微增加模型的复杂性和计算负担。
为了为这些声明提供证据,我们开发了几个senet,并对ImageNet数据集进行了广泛的评估[10]。我们还展示了ImageNet之外的结果,这些结果表明我们的方法的好处并不局限于特定的数据集或任务。通过使用SENets,我们在ILSVRC 2017分类比赛中排名第一。我们的最佳模型集成在测试集1上达到2.251%的前5个错误。与上一年的获胜者相比(前5名的误差为2.991%),这意味着相对提高了25%。
2 RELATED WORK
更深层的架构。VGGNets[11]和Inception模型[5]表明,增加网络的深度可以显著提高网络能够学习的表示质量。通过调节输入到每个层的分布,批处理规范化(BN)[6]为深度网络中的学习过程增加了稳定性,并产生了更平滑的优化曲面[12]。在这些工作的基础上,ResNets证明了通过使用基于身份的跳过连接来学习更深入、更强的网络是可能的[13],[14]。公路网[15]引入了一种门控机制,以调节沿捷径连接的信息流。在这些工作之后,对网络层之间的连接进行了进一步的重新表述[16]、[17]、1。http://image-net.org/challenges/LSVRC/2017/results网站这显示了对深度网络的学习和表征特性的有希望的改进。
另一个与此密切相关的研究方向是改进网络中计算元素的功能形式。分组卷积已经被证明是增加学习到的变换基数的一种流行方法[18],[19]。多分支卷积[5]、[6]、[20]、[21]可以实现更灵活的算子组合,这可以看作是分组算子的自然扩展。在先前的工作中,交叉信道相关通常被映射为新的特征组合,独立于空间结构[22]、[23]或通过使用具有1×1卷积的标准卷积滤波器[24]来联合。这些研究大多集中在降低模型和计算复杂度的目标上,反映了一种假设,即信道关系可以表述为具有局部接收场的实例不可知函数的组合。与此相反,我们认为提供一种机制,利用全局信息来显式地建模信道之间的动态、非线性依赖关系,可以简化学习过程,显著增强网络的表示能力。
算法架构搜索。除了上述工作,还有一个丰富的研究历史,旨在放弃手动架构设计,而是寻求自动学习网络结构。这一领域的早期工作大多是在神经进化界进行的,他们建立了用进化方法搜索网络拓扑的方法[25],[26]。虽然通常需要计算,但进化搜索已经取得了显著的成功,其中包括为序列模型[27]、[28]找到良好的存储单元,以及学习用于大规模图像分类的复杂体系结构[29]、[30]、[31]。为了减少这些方法的计算负担,基于Lamarckian继承[32]和可微结构搜索[33]提出了这种方法的有效替代方案
通过将架构搜索定义为超参数优化,随机搜索[34]和其他更复杂的基于模型的优化技术[35],[36]也可用于解决该问题。拓扑选择作为通过可能设计的结构的路径[37]和直接架构预测[38],[39]被提出作为附加的可行架构搜索工具。通过强化学习[40]、[41]、[42]、[43]、[44]中的技巧,取得了特别显著的效果。SE块3可以用作这些搜索算法的原子构建块,并且在并发工作中被证明是高效的。
注意和门控机制。注意可以被解释为将可用计算资源的分配偏向于信号的最具信息性部分的方法[46]、[47]、[48]、[49]、[50]、[51]。注意机制已经证明了它们在许多任务中的效用,包括序列学习[52],[53],[9],[54],[55],[56]和唇读[57]。在这些应用中,它可以被合并为一个运算符,跟随一个或多个层,这些层代表用于模式之间适应的更高层次的抽象。一些作品对空间注意和通道注意的结合使用进行了有趣的研究[58],[59]。Wang等人。[58]引入了一种基于沙漏模块[8]的强大主干和掩模注意机制,该机制被插入到深度剩余网络的中间阶段之间。相比之下,我们提出的SE块包含一个轻量级的选通机制,该机制通过以计算效率高的方式建模信道关系,着重于增强网络的表示能力。
3 SQUEEZE-AND-EXCITATION BLOCKS
压缩和激励块是一个计算单元,它可以建立在将输入X∈RH0×W0×C0映射到特征映射U∈RH×W×C的变换上。在下面的符号中,我们将Ftrto作为卷积算子,并使用V=[v1,v2。,vC]表示已学习的滤波器内核集,其中vC表示第c个滤波器的参数。然后我们可以把输出写成U=[u1,u2。,uC),其中
这里*表示卷积,vc=[v1 c,v2c。,vC0 c),X=[x1,x2。,xC0]和uc∈RH×W.vs-cis一个二维空间核,表示作用在X的对应通道上的vc的单个通道。为了简化表示法,省略了偏置项。由于输出是通过所有信道的求和产生的,信道依赖性隐式地嵌入到vc中,但与滤波器捕获的局部空间相关性纠缠在一起。卷积建模的信道关系本质上是隐式的和局部的(除了最顶层的)。我们期望通过显式地建模信道相关性来增强卷积特征的学习,从而使网络能够增加对信息特征的敏感度,这些信息特征可以通过后续的转换加以利用。因此,我们希望在将滤波器响应输入下一个变换之前,通过挤压和激励两个步骤为其提供全局信息访问和重新校准滤波器响应。图1示出了示出SE块的结构的图。
3.1压缩:全局信息嵌入为了解决利用信道相关性的问题,我们首先在输出特性中考虑到每个信道的信号。每个学习到的滤波器都使用一个本地接收场,因此转换输出U的每个单元都无法利用该区域之外的上下文信息。
为了缓解这一问题,我们建议将全局空间信息压缩到信道描述符中。这是通过使用全局平均池生成通道统计信息来实现的。形式上,一个统计z∈RCis由U通过其空间维度H×W收缩而产生,使得z的第c个元素计算如下:
讨论。转换U的输出可以解释为局部描述符的集合,这些描述符的统计信息表示整个图像。利用这些信息在先前的特征工程工作中很流行[60]、[61]、[62]。我们选择了最简单的聚合技术global average pooling,注意到这里也可以使用更复杂的策略。
3.2激励:自适应重新校准
为了利用压缩操作中聚集的信息,我们使用第二个操作来跟踪它,该操作旨在完全捕获通道依赖项。为了实现这一目标,该功能必须满足两个标准:第一,它必须是灵活的(特别是,它必须能够学习渠道之间的非线性相互作用);第二,它必须学习非互斥关系,因为我们希望确保允许强调多个渠道(而不是强制执行一次热启动)。为了满足这些标准,我们选择采用一种简单的门控机制, sigmoid 函数:
其中δ是指ReLU[63]函数,W1∈R C R×C and W2∈R C×crr。为了限制模型的复杂度并帮助推广,我们通过在非线性周围形成两个完全连接(FC)层的瓶颈来参数化浇口机制,i、 e.具有降维比r的降维层(该参数的选择在第6.1节中讨论)、ReLU,然后是返回到变换输出U的信道尺寸的降维层。通过使用激活重新缩放U获得块的最终输出:
式中,ex=[e x1,e x2。,e xC]和Fscale(uc,sc)是指信道相乘b
讨论。激励算子将特定于输入的描述符z映射到一组信道权重。在这方面,SE块在本质上引入了以输入为条件的动力学,这可以被视为通道上的自我注意功能,其关系不限于卷积滤波器响应的局部感受野。
3.3实例
SE块可以通过在每次卷积之后的非线性之后插入而集成到标准架构中,例如VGGNet[11]。此外,SE块的灵活性意味着它可以直接应用于标准卷积以外的变换。为了说明这一点,我们通过将SE块合并到几个更复杂体系结构的示例中来开发senet,下面将进行描述。
我们首先考虑初始网络的SE块的构造[5]。这里,我们简单地将转换Ftrto看作一个完整的初始模块(参见图2),并且通过对架构中的每个这样的模块进行这种更改,我们获得一个SE初始网络。SE块也可以直接用于剩余网络(图3描绘了SE ResNet模块的模式)。这里,SE块转换ftri被认为是剩余模块的非标识分支。挤压和激发都在与恒等分支求和之前起作用。将SE块与ResNeXt[19]、Inception ResNet[21]、MobileNet[64]和ShuffleNet[65]集成的进一步变体可以通过遵循类似的方案来构造。对于SENet架构的具体示例,表1给出了SE-ResNet-50和SE-ResNeXt-50的详细描述。
SE块的灵活特性的一个结果是,有几种可行的方法可以将其集成到这些体系结构中。因此,为了评估用于将SE块合并到网络架构中的集成策略的敏感性,我们还提供消融实验,探索第6.5节中块包含的不同设计。
为了使所提出的SE块设计具有实际应用价值,它必须在改进的性能和增加的模型复杂性之间提供一个很好的折衷。为了说明与该模块相关的计算负担,我们以ResNet-50和SE-ResNet-50之间的比较为例。ResNet-50对于224×224像素的输入图像,在一次前向过程中需要3.86 GFLOPs,挤压阶段的FC层在激发阶段,然后是一个廉价的信道缩放操作。总的来说,当将还原率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)。
实际上,向前和向后通过ResNet-50需要190 ms,而SE-ResNet-50则需要209 ms,训练小批量256个图像(这两个计时都在一个服务器上执行,服务器上有8个NVIDIA Titan X gpu)。我们建议这代表了一个合理的运行时开销,随着在流行的GPU库中全局池和小的内部产品操作得到进一步优化,该开销可能会进一步减少。由于其在嵌入式设备应用中的重要性,我们进一步对每个模型的CPU推断时间进行基准测试:对于224×224像素的输入图像,ResNet-50需要164ms,而SE-ResNet-50需要167ms。我们认为,SE块对模型性能的贡献证明了SE块产生的少量额外计算成本是合理的。
接下来我们考虑由提议的SE块引入的附加参数。这些附加参数仅由选通机制的两个FC层产生,因此构成总网络容量的一小部分。具体地说,这些FC层的权重参数引入的总数由以下公式给出:
其中r表示缩减率,S表示级数(级数指在公共空间维度的特征映射上操作的块的集合),Cs表示输出信道的维数,Ns表示级数S的重复块的数目(当在FC层中使用偏置项时,引入的参数和计算成本通常可以忽略不计)。SE-ResNet-50在
∼ResNet-50需要2500万个参数,对应于∼10%的增长。实际上,这些参数中的大多数来自网络的最后阶段,在网络的最后阶段,励磁操作是在最大数量的通道上执行的。然而,我们发现,这种相对昂贵的SE块的最终阶段可以仅以较小的性能成本(ImageNet上的前5位误差小于0.1%)来移除,从而将相对参数增加减少到4%,这可能在参数使用是一个关键考虑因素的情况下被证明是有用的(有关进一步的讨论,请参见第6.4节和第7.2节)。
原ResNeXt-101[19]采用ResNet-152[13]的块堆叠策略。与此模型的设计和训练(不使用SE块)的进一步区别如下:(a)将每个瓶颈构建块的前1×1卷积信道的数目减半,以在性能降低最小的情况下降低模型的计算成本。(b) 将第一个7×7卷积层替换为三个连续的3×3卷积层。(c) 用3×3步长-2卷积代替步长-2卷积的1×1下采样投影来保存信息。(d) 在分类层之前插入一个脱落层(脱落比为0.2),以减少过度拟合。(e) 在训练期间使用了Labelsmoothing正则化(如[20]中介绍的)。(f) 在最后几个训练阶段冻结所有BN层的参数,以确保训练和测试的一致性。(g) 使用8台服务器(64 GPU)并行执行培训,以实现大批量(2048)。初始学习率设置为1.0。
import torch.nn as nn
class SELayer(nn.Module):
def __init__(self, channel, reduction=16):
super(SELayer, self).__init__()
self.avgpool = nn.AdaptiveAvgPool2d(1)
self.fc = nn.Sequential(
nn.Linear(channel, channel//reduction,bias=False),
nn.ReLU(inplace=True),
nn.Linear(channel//reduction,channel, bias=False),
nn.Sigmoid()
)
def forward(self, x):
b,c,h,w = x.size()
y = self.avgpool(x).view(b,c)
y = self.fc(y).view(b,c,1,1)
return x * y.expand_as(x)