zoukankan      html  css  js  c++  java
  • attention

    Squeeze-and-Excitation Networks

    Abstract

    卷积神经网络(CNNs)的核心构件是卷积运算符,它使网络能够通过在每一层的局部接受域内融合空间和信道信息来构建信息特征。大量的先前研究已经调查了这种关系的空间组成部分,试图通过提高整个特征层次的空间编码质量来增强CNN的表征能力。在这项工作中,我们关注的是通道关系,并提出了一个新的建筑单元,我们称之为“Squeeze-and-Excitation”(SE)块,它通过明确地建模通道之间的相互依赖关系,自适应地重新校准通道相关的特征响应。我们表明,这些块可以堆叠在一起,形成SENet架构,在不同的数据集之间极其有效地泛化。我们进一步证明,SE块为现有的最先进的CNNs带来了显著的性能改善,只需要略微增加计算成本。Squeeze-and-Excitation网络是我们2017年ILSVRC分类提交代码的基础,该效果获得了第一名,并将top-5的错误减少到2.251%,比2016年获奖的分类效果提高了约25%。模型和代码可以在https://github.com/hujie-frank/SENet获得。

    1 INTRODUCTION

    卷积神经网络(CNNs)已经被证明是处理广泛的视觉任务[1],[2],[3],[4]的有用模型。在网络的每一个卷积层上,一组过滤器表达了输入通道上邻近的空间连接模式——在局部接受域内融合空间和通道的信息。通过交错使用一系列带有非线性激活函数和下采样operators的卷积层,CNN能够生成捕获层次模式并获得全局理论接受域的图像表示。计算机视觉研究的一个中心主题是寻找更强大的表示,只捕捉特定任务中最突出的图像属性,从而提高性能。作为一个广泛使用的视觉任务模型家族,开发新的神经网络结构设计现在代表了这一研究的关键前沿。最近的研究表明,通过将学习机制整合到有助于捕获特征间空间相关性的网络中,CNN产生的表征可以得到加强。其中一种方法,由架构的Inception[5]和[6]所推广,将multi-scale的过程合并到网络模块中以获得改进的性能。进一步的工作是寻求更好的模型空间依赖性[7]和[8],并将空间注意力纳入到网络[9]的结构中。

    在这篇论文中,我们研究了网络设计的一个不同方面——通道道之间的关系。我们引入了一个新的建筑单元,我们称之为Squeeze-and-Excitation(SE)块,其目的是通过明确地建模网络卷积特性的通道之间的相互依赖关系来提高网络生成的表示的质量。为此,我们提出了一种机制,允许网络执行特征重新校准,通过这种机制,网络可以学会使用全局信息,有选择地强调信息特征,并抑制不太有用的特征。

    SE模块的结构如图1所示。对于任意给定的变换Ftr,将输入X映射到特征映射U,其中U∈RH×W×C,例如卷积,我们可以构造相应的SE块来进行特征重校准。特征U首先通过Squeeze操作,该操作通过跨它们的空间维度(H×W)聚合特征映射来生成通道描述符。这个描述符的功能是产生一个channel-wise特征响应的全局分布的嵌入,允许来自网络的全局接受域的信息被网络的所有层使用。聚合之后是Excitation操作,它采取简单的自选门机制的形式,将嵌入作为输入,并产生每个通道调制权值的集合。将这些权值应用到特征图U中,生成SE块的输出,该输出可以直接输入到网络的后续层中。

    可以通过简单地堆叠SE块的集合来构建SE网络(SENet)。此外,这些SE块还可以在一系列深度的网络结构中作为原始块的替代(章节6.4)。虽然构建块的模板是通用的,但在整个网络中,它在不同深度执行的角色是不同的。在较早的层中,它以一种与类无关的方式激发信息特性,加强了共享的低级表示。在以后的层中,SE块变得越来越特殊化,并以强类特定的方式响应不同的输入(第7.2节)。因此,SE块执行的特征重新校准的好处可以通过网络累积。

    新的CNN架构的设计和开发是一项困难的工程任务,通常需要选择许多新的超参数和层配置。相比之下,SE块的结构是简单的,可以通过替换他们与SE对等的组件,直接使用在现有的最先进的体系结构,性能可以有效地提高。SE块在计算上也是轻量级的,只增加模型复杂度和计算负担。

    为了为这些主张提供证据,我们开发了几个SENets,并对ImageNet数据集[10]进行了广泛的评估。我们还展示了ImageNet之外的结果,这些结果表明我们的方法的好处并不局限于特定的数据集或任务。利用SENets,我们在ILSVRC 2017级比赛中获得了第一名。我们最好的模型集合在测试集1(http://image-net.org/challenges/LSVRC/2017/results中获得了2.251%的top-5误差。与前一年的优胜者相比,这代表了大约25%的相对改进(top-5 error为2.991%)。

    2 RELATED WORK

    Deeper architectures.  VGGNets[11]和Inception模型[5]表明,增加网络的深度可以显著提高网络能够学习的表征的质量。通过调节输入到每一层的分布,批处理归一化(BN)[6]增加了深度网络学习过程的稳定性,并生成了更平滑的优化曲面[12]。在这些工作的基础上,ResNets证明,通过使用identity-based的skip连接[13]和[14],可以学习到相当深入和强大的网络。Highway网络[15]引入了一个门控机制,以调节沿shortcut连接的信息流。在这些工作之后,网络层[16]和[17]之间的连接有了进一步的重组,这显示了深度网络学习和表征特性的有希望的改进。

    另一个与之密切相关的研究方向集中于改进包含在网络中的计算元素的函数形式的方法。分组卷积(Grouped convolutions)已被证明是一种增加已学习转换[18]和[19]的基数的流行方法。多分支卷积(multi-branch convolutions)[5]、[6]、[20]、[21]可以实现更灵活的操作符组合,可以看作是分组操作符的自然扩展。在之前的工作中,交叉通道相关性(cross-channel correlations)通常被映射为新的特征组合,或者独立于空间结构[22]、[23],或者通过使用1×1的标准卷积滤波器[24]来联合。这些研究大多集中在降低模型和计算复杂度的目标上,其反映了一个假设,即通道关系可以被表述为一个具有局部接受域的类无关实例函数的组合。相反,我们认为,为单元提供一种机制,使用全局信息显式地建模通道之间的动态非线性依赖关系,可以简化学习过程,并显著增强网络的表征能力。

    Algorithmic Architecture Search.  除了上面描述的工作,还有一个丰富的研究历史,旨在放弃手工架构设计,而寻求自动学习网络结构。这个领域的大部分早期工作是在neuro-evolution社区进行的,他们建立了通过进化方法[25],[26]跨网络拓扑搜索的方法。虽然经常需要大量的计算,进化搜索已经取得了显著的成功,包括为序列模型[27],[28]找到良好的记忆细胞和学习复杂的结构大规模图像分类[29],[30],[31]。为了减少这些方法的计算负担,基于 Lamarckian inheritance[32]和可微架构搜索[33]提出了有效的替代方法。

    通过将架构搜索定义为超参数优化,随机搜索[34]和其他更复杂的基于模型的优化技术[35],[36]也可以用来解决这个问题。拓扑选择作为一个路径通过一个可能设计的结构[37]和直接架构预测[38],[39]已被提出作为额外的可行架构搜索工具。特别强大的结果已经从强化学习[40],[41],[42],[43],[44]技术中取得。SE块可以作为这些搜索算法的原子构建块,在并行工作[45]中被证明在这种能力上是非常有效的。

    Attention and gating mechanisms.  注意力可以被解释为一种将可用计算资源的分配偏向于信号[46]、[47]、[48]、[49]、[50]、[51]中信息最丰富的分量的方法。注意力机制已经在许多任务中证明了它们的效用,包括序列学习[52]、[53]、图像定位和理解[9]、[54]、图像字幕[55]、[56]和唇语读取[57]。在这些应用程序中,它可以被合并为一个操作符,跟随表示更高层次抽象的一个或多个层,以便在模式之间进行适应。一些作品对空间注意和通道注意的结合使用提供了有趣的研究[58],[59]。Wang等人[58]引入了一种强大的基于hourglass模块[8]的trunk-and-mask注意力机制,该机制被插入到深度残差网络的中间阶段。相比之下,我们提出的SE块包含一个轻量级的门控机制,该机制侧重于通过在计算效率上建模基于通道的关系来增强网络的表征能力。

    3 SQUEEZE-AND-EXCITATION BLOCKS

    Squeeze-and-Excitation块是一个计算单元,它可以建立在一个将输入X∈RH’×W’×C'映射到特征map U∈RH×W×C的变换Ftr上。在下面的符号中,我们将Ftr作为一个卷积operator,并使用V = [v1, v2,… vC]表示滤波核的学习集,其中vc表示第c个滤波器的参数。我们可以把输出写成U = [u1,u2, … , uC] :

    其中*表示卷积,。vsc是一个二维空间核,表示作用于x对应的通道上的vc的单个通道,为了简化符号,省略了偏差项。由于输出是通过所有通道的总和产生的,因此通道依赖被隐式地嵌入到vc中,但是与过滤器捕获的局部空间相关性相纠缠。由卷积建模的通道关系本质上是隐式的和局部的(除了最顶层的那些)。我们希望通过明确地建模通道相互依赖关系来增强卷积特征的学习,这样网络就能够提高其对信息特征的敏感性,这些信息特征可以被后续的转换利用。因此,我们希望为它提供获取全局信息的途径,并在它们被馈入下一个转换之前,分两个步骤重新校准滤波器响应,squeeze和excitation。图1所示为SE块的结构示意图。

      

    3.1 Squeeze: Global Information Embedding

    为了解决利用通道依赖的问题,我们首先考虑输出特征中每个通道的信号。每个可学习过滤器都使用一个局部接受域进行操作,因此每个单位的转换输出U不能利用该区域以外的上下文信息。

    为了缓解这一问题,我们建议将全局空间信息压缩到一个通道描述符中。这是通过使用全局平均池化来生成基于通道的统计信息来实现的。形式上,统计量z∈RC通过对U的空间维数H×W进行收缩而得到,则z的第c哥元素计算为:

    Discussion.  转换U的输出可以解释为局部描述符的集合,这些描述符的统计量可以表达整个图像。利用这些信息在之前的特征工程[60]中很普遍,[61],[62]。我们选择了最简单的聚合技术——全局平均池化(global average pooling),注意到这里也可以使用更复杂的策略。

    3.2 Excitation: Adaptive Recalibration

    为了利用在squeeze操作中聚集的信息,我们接下来进行第二个操作,其目的是完全捕获信道上的依赖关系。函数来实现这个目标,必须满足两个条件:第一,它必须灵活(特别是,它必须有能力学习渠道之间的非线性相互作用),其次,它必须学会non-mutually-exclusive关系,因为我们想确保允许多个通道同时被强调(而不是执行一个one-hot的激活)。为了满足这些标准,我们选择使用一个有着sigmoid激活的简单的门控机制:

    其中δ表示ReLU[63]函数,。为了限制模型复杂性和实现其泛化,我们通过构建一个有两个由非线性层包围的全连接层的bottleneck去参数化门控机制,即一个缩减率为r的降维层(该参数的选择是在6.1节讨论),一个ReLU,然后是一个返回到与转换输出U相同通道维度的升维层。该块的最终输出通过使用激活s rescaling U来得到的:

    (其实就是将得到的通道权重s与主干的输入u相乘得到最后的输出)

    Discussion.   excitation操作符将特定于输入的描述符z映射到一组通道权重。在这方面,SE块本质上引入了以输入为条件的dynamic,可以看作是通道上的自注意力函数,其关系不局限于卷积滤波器所响应的局部接受域。

    3.3 Instantiations

    SE块可以通过在每次卷积后的非线性之后插入,集成到VGGNet[11]等标准架构中。此外,SE块的灵活性意味着它可以直接应用于标准卷积之外的变换。为了说明这一点,我们通过将SE块合并到几个更复杂的体系结构示例来开发SENet。

    我们首先考虑Inception网络[5]的SE块的构造。在这里,我们简单地将转换Ftr作为一个完整的Inception模块(见图2),通过对架构中的每个这样的模块进行更改,我们获得了一个SE-Inception网络。SE块也可以直接与Residual网络一起使用(图3描述了SE-ResNet模块的模式)。这里转换Ftr的SE块变为了残差模块的非恒等分支。Squeeze和Excitation在恒等分支求和之前都起了作用。进一步的将SE块与ResNeXt[19]、Inception-ResNet[21]、MobileNet[64]和ShuffleNet[65]整合的变体可以通过以下类似的方案来构建。对于SENet体系结构的具体例子,表1给出了SE-ResNet-50和SE-ResNeXt-50的详细描述。

    SE块的灵活性的一个结果是,有几种可行的方法可以将其集成到这些架构中。因此,为了评估将SE块纳入网络架构的集成策略的敏感性,我们还在第6.5节中提供了消融实验,探索不同的块纳入设计。

    4 MODEL AND COMPUTATIONAL COMPLEXITY

    为了使所提出的SE块设计具有实际应用价值,它必须在提高性能和增加模型复杂性之间提供良好的平衡。为了说明与模块相关的计算负担,我们以ResNet-50和SE-ResNet-50之间的比较为例。对于一个224×224像素的输入图像,ResNet-50在前向传播中需要约为3.86的GFLOPs。每个SE块在squeeze阶段使用全局平均池化操作,在excitation阶段使用两个较小的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)。

    在实际操作中,在训练batch size为256个图像时, 通过ResNet-50进行单次向前和向后传递需要190毫秒,而SE-ResNet-50需要209毫秒(两种计时都是在拥有8个NVIDIA Titan X gpu的服务器上执行的)。我们认为这代表了一个合理的运行时开销,可以进一步减少全局池和小的内积操作以在流行的GPU库得到进一步优化。由于其对于嵌入式设备应用程序的重要性,我们进一步对每种模型的CPU推断时间进行基准测试:对于一个224×224像素的输入图像,ResNet-50需要164毫秒,而SE-ResNet-50需要167毫秒。我们认为,由于SE块对模型性能的贡献,其产生的少量额外计算成本是合理的。

    接下来我们考虑由提出的SE区块引入的附加参数。这些额外的参数完全来自门控机制的两个FC层,因此构成了总网络容量的一小部分。具体来说,FC层的权重参数引入的总数量为:

    其中r表示缩减比,S是指阶段的数量(阶段是指在共同空间维度的特征maps上的块操作集合),Cs表示输出通道的维度和Ns表示阶段s的重复块数(当bias项用在全连接层时,引入参数和计算成本通常可以忽略不计)。除了ResNet-50需要的参数(约2500万个)之外,SE-ResNet-50还增加了约250万个参数,相当于增加了约10%。在实践中,这些参数的大多数来自网络的最后阶段,其中excitation操作是通过最大数量的通道进行的。然而,我们发现这种相对昂贵的SE块的最后阶段可以以很小的性能代价对其进行移除(在ImageNet中 < 0.1%的top-5 error),对应的是减少的相对参数增加了∼4%,在参数使用是一个重要的考虑因素的情况下,这可能是有用的(参见6.4节和7.2进一步讨论)。

    5 EXPERIMENTS

    在本节中,我们通过实验来研究SE块在一系列任务、数据集和模型架构中的有效性。

    5.1 Image Classification

    为了评估SE块的影响,我们首先在ImageNet 2012数据集[10]上进行实验,该数据集包括来自1000个不同类别的128万张训练图像和50K张验证图像。我们在训练集上训练网络,并报告验证集上的top-1和top-5 error。

    每个基线网络结构和相应的SE对应的训练相同的优化方案。我们遵循标准实践,使用比例和高宽比[5]进行随机裁剪,使其大小为224×224像素(或者对Inception-ResNet-v2 [21]和SE-Inception-ResNet-v2使用的是299×299),并进行随机水平翻转。每个输入图像通过平均RGB通道减法进行归一化。所有的模型都在我们的分布式学习系统ROCS上进行训练,ROCS被设计用来处理大型网络的高效并行训练。使用momentum 0.9和小批量尺寸1024的同步SGD进行优化。初始学习速率设置为0.6,每30个epoch降低10倍。使用[66]中描述的权重初始化策略,从头开始训练100个epoch的模型。缩减比r(在3.2节中)默认设置为16(除非另有说明)。

    当评估模型时我们应用centre-cropping, 在图像短边首先调整到256后,从每个图像裁剪224×224像素(对于Inception-ResNet-v2和SE-Inception-ResNet-v2,短边先调整到352,然后裁剪299x299)。

    Network depth. 我们首先将SE-ResNet与具有不同深度的ResNet架构进行比较,并在表2中报告结果。我们观察到,SE块在不同深度上始终如一地提高性能,而计算复杂度的增加极小。值得注意的是,SE-ResNet-50获得了6.62%的single-crop top-5 验证error,比ResNet-50(7.48%)高出0.86%,并且接近更深入的ResNet-101网络(6.52% top-5 error )所取得的性能,而计算量仅为总计算量的一半(3.87 GFLOPs vs 7.58 GFLOPs)。这种模式会在更深的深度重复,其中SE-ResNet-101(top-5 error 6.07%)不仅匹配,而且比更深的ResNet-152网络(top-5 error 6.34%)的表现好0.27%。虽然需要注意的是,SE块本身增加了深度,但它们以一种极其高效的计算方式这样做,即使在扩展基础架构的深度会导致回报递减的情况下,其也能产生良好的回报。此外,我们看到,在不同的网络深度范围内,增益是一致的,这表明SE块所带来的改进可能与简单地增加基础架构的深度所获得的改进是互补的。

    Integration with modern architectures.  接下来,我们研究了将SE块与另外两个最先进的架构( Inception-ResNet-v2[21]和ResNeXt(使用32×4d设置)[19])集成的效果,这两个架构都将额外的计算构建块引入到基础网络中。我们构建了与这些网络等价的SENet,即SE-Inception-ResNet-v2和SE-ResNeXt(表1给出了SE-ResNeXt-50的配置),并在表2中报告了结果。与前面的实验一样,我们观察到在两个体系结构中引入SE块会带来显著的性能改进。特别地,SE-ResNeXt-50的top-5 error为5.49%,优于其直接对应的ResNeXt-50 (5.90% top-5 error)和更深层次的ResNeXt-101 (5.57% top-5 error),后者的参数总数和计算开销几乎是前者的两倍。我们注意到重新实现Inception-ResNet-v2和[21]中报告的结果在性能上有细微的差异。然而,我们在SE块的影响方面观察到类似的趋势,发现SE的对照物(4.79% top-5 error)比我们重新实现的Inception-ResNet-v2基线(5.21%的前5错误)和[21]中报告的结果都要高0.42%。

    通过对VGG16[11]和BN-Inception架构[6]进行实验,我们也评估了SE块在非残差网络上运行时的效果。为了便于从头开始培训VGG-16,我们在每次卷积后都添加批处理归一化层(BN)。我们对VGG-16和SE-VGG-16使用相同的训练方案。对比结果如表2所示。与残差基线架构报告的结果类似,我们观察到SE块在非残差设置上带来了性能的改进。

    为了深入了解SE块对这些模型优化的影响,图4描绘了基线架构运行的示例训练曲线及其各自的SE对照物。我们观察到SE块在整个优化过程中产生稳定的改进。此外,这一趋势在一系列被认为是基线的网络架构中是相当一致的。

    Mobile setting.  最后,我们考虑两种典型的移动优化网络,MobileNet[64]和ShuffleNet[65]。在这些实验中,我们使用了256的小批量和稍微少一些侵略性的数据增加和正则化[65]方法。我们使用带有momentum(设置为0.9)的SGD在8个gpu上训练模型,初始学习率为0.1,每次验证损失达到稳定水平时,学习率降低了10倍。整个训练过程需要约400 epoch(使我们能够重现基准性能[65])。表3中报告的结果表明,SE块始终如一地以极小的计算成本增加,来大幅度地提高准确性。

    Additional datasets. 接下来,我们将研究SE块的好处是否适用于ImageNet以外的数据集。我们在CIFAR-10和CIFAR-100数据集上用几种流行的基线架构和技术(ResNet-110[14]、ResNet-164[14]、WideResNet-16-8[67]、Shake-Shake[68]和Cutout[69])进行实验。这些包含了32×32 pixel RGB图像的50k个训练图和10k个测试图的集合,分别标记了10个类和100个类。遵循第3.3节中所述的相同方法将SE块集成到这些网络中。每个基线及其对应的SENet使用标准的数据增加策略[24],[71]进行训练。在训练过程中,对图像进行随机水平翻转,每边以零填充,然后进行32×32的裁剪。均值和标准差归一化也被应用。训练超参数的设置(如小批量大小、初始学习率、权值衰减)与原论文的建议一致。我们在表4中报告了在CIFAR-10上每个基线及其SENet对等物的性能,在表5中报告了在CIFAR-100上的性能。我们观察到,在每次比较中,SENet的表现都优于基线架构,这表明SE块的好处并不局限于ImageNet数据集。

      

    5.2 Scene Classification

    我们还在Places365-Challenge数据集[73]上进行了场景分类实验。该数据集包括800万张训练图像和36500张验证图像,涉及365个类别。相对于分类,场景理解任务提供了对模型良好概括和处理抽象能力的另一种评估。这是因为它通常要求模型处理更复杂的数据关联,并对更大程度的外观变化保持健壮。

    我们选择ResNet-152作为评估SE块有效性的强基线,并遵循[72]、[74]中描述的训练和评估方案。在这些实验中,模型是从头开始训练的。我们在表6中报告了结果,并与之前的工作进行了比较。我们观察到SE-ResNet-152(11.01% top-5 error)比ResNet-152(11.61% top-5 error)的验证错误更低,这证明SE块也可以提高场景分类性能。这个SENet超过了之前的最先进的模型Places-365-CNN[72],后者在这个任务上的top-5 error为11.48%。

    5.3 Object Detection on COCO

    我们使用COCO数据集进一步评估了SE块在目标检测任务上的泛化[75]。在之前的工作[19]中,我们使用minival协议,即在80k训练集和35k验证子集的并集上训练模型,并对剩余的5k验证子集进行评估。权值由ImageNet数据集上训练的模型参数初始化。我们使用更快的R-CNN[4]检测框架作为评估模型的基础,并遵循[76]中描述的超参数设置(即 使用' 2x '学习方案进行端到端训练)。我们的目标是评估用SE-ResNet替换对象检测器中的主干架构(ResNet)的效果,这样性能上的任何变化都可以归因于更好的表示。表7报告了使用ResNet-50、ResNet-101以及与之对应的SE作为主干架构的对象检测器的验证集性能。根据COCO的标准AP指标,SE-ResNet-50比ResNet-50高出2.4%(相对6.3%的涨幅),在AP@iou =0.5上高出3.1%。SE块也有利于更深层次的ResNet-101体系结构,在AP度量上实现了2.0%的改进(在AP度量上相对改进5.0%)。总之,这组实验证明了SE块的通用性。可以通过广泛的架构、任务和数据集说明改进。

    5.4 ILSVRC 2017 Classification Competition

    SENets形成了我们提交到ILSVRC竞赛的基础,取得了第一名的成绩。我们赢的条目组成了一个SENets的小合集,使用一个标准的mult-scale和multi-crop融合策略在测试集获得2.251%的top-5 error。作为这个提交的一部分,我们构造了一个额外的模型,SENet-154,通过整合SE块修改ResNeXt[19](附录提供了体系结构的细节)。我们使用标准crop尺寸(224×224和320×320)将该模型与之前在表8中的ImageNet验证集上的工作进行了比较。我们观察到,使用224×224中心crop评价,SENet-154的top-1误差为18.68%,top-5误差为4.47%,这代表了最强的报告结果。

    在这个挑战之后,ImageNet基准测试有了很大的进展。为了进行比较,我们在表9中列出了我们目前所知道的最强的结果。最近报道了仅使用ImageNet数据的最佳性能[79]。该方法利用强化学习在训练过程中开发新的数据扩充策略,以提高[31]搜索体系结构的性能。使用ResNeXt-101 32×48d架构报告了最佳的总体性能[80]。这是通过在大约10亿张弱标记图像上预训练他们的模型并在ImageNet上进行微调来实现的。更复杂的数据增强[79]和广泛的预训练[80]所产生的改进可能是对我们提议的网络架构变更的补充。

    6 ABLATION STUDY

    在本节中,我们将进行消融实验,以更好地了解使用不同配置对SE块组件的影响。所有消融实验都是在一台机器(8个gpu)上的ImageNet数据集上进行的。使用ResNet-50作为骨干架构。我们从经验上发现,在ResNet架构上,消除FC层在excitation操作中的bias有助于建立通道依赖的模型,并在接下来的实验中使用这种配置。数据增强策略遵循5.1节中描述的方法。为了让我们能够研究每种变体的性能上限,学习速率被初始化为0.1,并且训练一直持续到验证损失问题(共计300 epoch)。然后学习率降低10倍,然后这个过程重复(总共3次)。在训练中使用label-smoothnig正则化[20]。

    6.1 Reduction ratio

    Eqn. 5中引入的缩减比r是一个超参数,它允许我们改变网络中SE块的容量和计算代价。为了研究这个超参数所导致的性能和计算成本之间的平衡,我们使用SE-ResNet-50对不同的r值范围进行了实验。表10中的比较表明,性能在缩减比范围内是稳健的。复杂度的增加并不会单调地提高性能,而更小的比例会显著地增加模型的参数大小。设置r = 16可以很好的平衡精确度和复杂度。在实践中,在整个网络中使用相同的比率可能不是最佳的(由于不同层执行的不同角色),因此通过调整比率以满足给定基础架构的需求,可以实现进一步的改进。 

      

    6.2 Squeeze Operator

    在选择squeeze操作符时,我们考察了使用全局平均池化而不是全局最大池化的重要性(因为这种方法很有效,所以我们没有考虑更复杂的替代方案)。结果见表11。最大池化和平均池化都是有效的,但平均池化的性能稍好一些,这说明选择平均池化作为squeeze操作的依据。但是,我们注意到SE块的性能对于特定聚合操作符的选择是相当健壮的。

    6.3 Excitation Operator

    接下来,我们评估了excitation机制的非线性选择。我们考虑两个进一步的选择:ReLU和tanh,并实验用这些可选的非线性替换sigmoid。结果见表12。我们看到,将sigmoid替换为tanh会略微降低性能,而使用ReLU则会显著降低性能,实际上会导致SE-ResNet-50的性能低于ResNet-50基线的性能。这表明,要使SE块有效,谨慎地构造excitation算子是重要的。

    6.4 Different stages

    通过将SE块逐级集成到ResNet-50中,我们探究了SE块在不同阶段的影响。具体来说,我们将SE块添加到中间阶段:阶段2、阶段3和阶段4,并将结果报告在表13中。我们观察到SE块在体系结构的每个阶段引入时会带来性能上的好处。此外,SE区块在不同阶段所带来的收益是互补的,也就是说,它们可以有效地结合在一起,进一步提升网络性能。

    6.5 Integration strategy

    最后,我们进行消融研究,以评估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单元产生的性能改进对于它们的位置是相当稳健的,前提是它们在分支聚合之前被应用。

    在上面的实验中,每个SE块被放置在一个残差单元的结构之外。我们还构造了设计的一个变体,将SE块移动到残差单元内部,将其直接放置在3×3卷积层之后。由于3×3卷积层的信道较少,相应的SE块引入的参数数量也减少了。表15中的比较表明,这些SE_3×3变体在参数较少的情况下取得了与标准SE块相当的分类精度。虽然这超出了我们的工作范围,但是我们预期通过为特定的体系结构裁减SE块的使用,可以进一步提高效率。

    7 ROLE OF SE BLOCKS

    虽然提出的SE块已被证明可以提高多个视觉任务的网络性能,但我们也想了解squeeze操作的相对重要性,以及excitation机制在实践中是如何运作的。通过深度神经网络学习的表征的严格的理论分析仍然具有挑战性,因此我们采取一种经验上的方法来检查SE块所扮演的角色,目标是至少获得其实际功能的一个原始的理解。

    7.1 Effect of Squeeze

    为了评估squeeze操作产生的全局嵌入是否对性能起重要作用,我们实验了SE块的一个变体,该变体添加了相同数量的参数,但不执行全局平均池化。具体来说,在excitation算子(命名为NoSqueeze)中,我们去掉了池化操作,将两个FC层替换为相应的信道尺寸相同的1×1卷积,其中excitation输出保持与输入相同的空间尺寸。与SE块相比,这些逐点卷积只能重新映射通道为局部操作符的输出函数。尽管在实践中,深层网络的后几层通常拥有(理论上的)全局接受域,但在NoSqueeze变体中,全局嵌入不再可以在整个网络中直接访问。表16将两种模型的精度和计算复杂度与标准ResNet-50模型进行了比较。我们观察到全局信息的使用对模型性能有显著的影响,这突出了squeeze操作的重要性。此外,与NoSqueeze设计相比,SE块允许以计算上比较节省的方式使用这种全局信息。

    7.2 Role of Excitation

    为了更清楚地了解SE块中的excitation算子的函数,在本节中,我们将研究SE-ResNet -50模型中的示例激活,并研究它们在网络中不同类别和不同深度的输入图像中的分布。特别地,我们想要了解不同类别的图像,以及同一类别内的图像,excitation是如何变化的。

    我们首先考虑不同类别的excitation分布。具体来说,我们从ImageNet数据集中抽取了四个表现出语义和外观多样性的类,即goldfish、pug、plane和cliff(来自这些类的示例图像在附录中显示)。然后,我们从验证集为每个类抽取50个样本,计算每个阶段最后一个SE区块(即下采样之前)中50个均匀采样通道的平均激活量,并绘制它们的分布图,如图6所示。为了便于参考,我们还绘制了所有1000个类的平均激活分布。

    关于excitation操作的作用,我们作以下三个观察。首先,在网络的早期层(如SE_2_3)中,跨不同类的分布非常相似。这表明,在早期阶段,不同的类可能会共享特征通道的重要性。第二个观察结果是,随着深度的增加,不同的类对特征(如SE_4_6和SE_5_1)的区分值表现出不同的偏好,每个通道的值变得更加具有类特异性。这些观察结果与之前的研究结果一致[81]、[82],即较早的层特征通常更普遍(例如,在分类任务的背景下,类是不可知的),而较晚的层特征表现出更高水平的特异性[83]。

    接下来,我们在网络的最后阶段观察到一个稍微不同的现象。SE_5_2表现出一种有趣的饱和状态趋向,在饱和状态中,大多数激活都接近于饱和状态。当所有激活的值都为1时,一个SE块就变成了恒等操作符。在网络的末端,在SE_5_3中(紧接着是在分类器之前的全局池化),一个类似的模式出现在不同的类上,直到在scale上有一个适度的变化(可以由分类器调整)。这表明,SE_5_2和SE_5_3在向网络提供重新校准方面没有以前的块重要。这一发现与第4节的实证研究结果相一致,实证研究表明,通过去除最后阶段的SE块,可以显著减少额外的参数计数,而性能只有边际损失

    最后,我们在图7中显示了两个样例类(goldfish和plane)中同一类中的图像实例的激活的均值和标准差。我们观察到类间可视化的趋势是一致的,这表明SE块的动态行为在类和类中的实例中都是不同的。特别是在网络的后一层中,当一个类的表示形式存在相当大的多样性时,网络学会利用特征重新校准来提高其识别性能[84]。总而言之,SE块产生特定于实例的响应,而这些响应仍然能够支持模型在体系结构的不同层上日益增长的类特定性需求。

    8 CONCLUSION

    在本文中,我们提出了SE块,这是一种建筑单元,旨在通过使网络执行动态通道特征重校准来提高网络的表示能力。大量的实验证明了SENets的有效性,它可以在多个数据集和任务之间实现最先进的性能。此外,SE块揭示了以前的体系结构无法充分地为channel-wise的特征依赖性建模。我们希望这一见解可以被证明对其他需要强鉴别特征的任务有用。最后,SE块产生的特征重要值可以用于其他任务,如模型压缩的网络剪枝。

  • 相关阅读:
    java大数取余
    hdu--5351--MZL's Border
    NYOJ--水池数目
    NYOJ--32--SEARCH--组合数
    NYOJ--20--搜索(dfs)--吝啬的国度
    hdu--4148--Length of S(n)
    hdu--2098--分拆素数和
    hdu--1873--看病要排队
    hdu--1870--愚人节的礼物
    hdu--1237--简单计算器
  • 原文地址:https://www.cnblogs.com/wanghui-garcia/p/13995490.html
Copyright © 2011-2022 走看看