【SENet 解读】通道注意力:Squeeze-and-Excitation Networks

举报
AI 菌 发表于 2022/06/06 23:50:37 2022/06/06
【摘要】 大家好!我是【AI 菌】,算法工程师一枚,2021年博客之星Top12,公众号【AI 修炼之路】作者。专注于计算机视觉、深度学习、图像处理技术,热衷于分享AI、CV、DL、ML、OpenCV、Pyt...

大家好!我是【AI 菌】,算法工程师一枚,2021年博客之星Top12,公众号【AI 修炼之路】作者。专注于计算机视觉、深度学习、图像处理技术,热衷于分享AI、CV、DL、ML、OpenCV、Python、C++等相关技术及文章。如果您对这些感兴趣,可以关注我,一起学习,一起进步!
我的博客地址为:【AI 菌】的博客
我的Github项目地址是:【AI 菌】的Github


摘要

卷积算子是卷积神经网络的核心组成部分,它使网络能够在每层局部感受域中融合空间信息和信道信息,从而构造信息特征。大量先前的研究已经调查了这种关系的空间组成部分,试图通过提高空间编码的质量来增强 cnn 的代表性。在这项工作中,我们将重点放在通道关系上,并提出了一种新的结构单元,我们称之为“挤压-激励”(se)块,它通过明确建模通道之间的相互依赖性,自适应地重新校准通道特征响应。

实验表明,这些块可以堆叠在一起,形成 SENet 网络结构。这些块仅带来轻微的额外计算成本,能显着改进当前最先进 cnns 的性能。并因此而获得了 ILSVRC 2017 分类任务的第一名。

一、引言

计算机视觉研究的一个中心主题是寻找更强大的表示方法,这种表示方法只能捕捉图像中对给定任务最突出的属性,从而提高性能。作为视觉任务的一个广泛使用的模型家族,新的神经网络结构设计的发展现在代表了这一研究的一个关键前沿。最近的研究表明,通过将学习机制整合到网络中,有助于捕捉特征之间的空间相关性,cnns 产生的表征可以得到加强。

在这篇文章中,我们研究了网络设计的另一个方面——通道之间的关系。我们引入了一个新的结构单元,我们称之为挤压和激发(SE)块,目的是通过显式地建模其卷积特征通道之间的相互依赖来提高网络产生的表示的质量。为此,我们提出了一种机制,允许网络执行特征重新校准,通过该机制,网络可以学习使用全局信息来选择性地强调信息丰富的特征,而抑制不太有用的特征。

在这里插入图片描述

上图描述了SE构建块的结构。对于任何给定的变换,将输入X映射到特征映射U,然后构建相应的SE块来执行特征重新校准。特征U首先通过压缩操作,该操作通过在其空间维度(H×W)上聚集特征映射来产生通道描述符。该描述符的功能是产生信道特性响应的全局分布的嵌入,从而允许来自网络的全局感受野的信息被其所有层使用。聚集之后是激励操作,该激励操作采用简单的自门机制的形式,该机制将嵌入作为输入,并产生每通道调制权重的集合。这些权重被应用于特征映射U以生成SE块的输出,该输出可以直接馈送到网络的后续层。

新的CNN结构的设计和开发是一项困难的工程任务,通常需要选择许多新的超参数和层配置。相比之下,SE模块的结构很简单,可以通过将组件替换为相应的SE组件直接用于现有的最先进的体系结构中,从而有效地提高性能。SE块在计算上也是轻量级的,并且仅略微增加了模型的复杂性和计算负担。

为了为这些说法提供证据,我们开发了几个SENet,并对ImageNet数据集进行了广泛的评估[10]。我们还展示了ImageNet以外的结果,表明我们的方法的好处并不局限于特定的数据集或任务。通过使用SENet,我们在ILSVRC 2017分类比赛中排名第一。

二、注意力机制

2.1 引言

注意力可以解释为将可用计算资源的分配偏向于信号中信息量最大的分量的一种手段。注意机制已经在包括序列学习、图像定位和理解、图像字幕和唇读在内的许多任务中证明了它们的有效性。在这些应用中,它可以被合并为跟随表示用于在模式之间适配的更高级别抽象的一个或多个层的运算符。一些著作对空间注意和通道注意的组合使用进行了有趣的研究。Wang等人引入了一种基于沙漏模块的强大的躯干和掩蔽注意机制,它被插入到深度残差网络的中间阶段之间。相比之下,我们建议的SE块包括一个轻量级的门控机制,该机制专注于通过以计算高效的方式对通道级关系进行建模来增强网络的表示能力。

2.2 挤压-激励块

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

将SE块与ResNeXt[19]、Inception-ResNet、MobileNet和ShuffleNet集成的其他变体可以通过以下类似方案来构建。对于SENET体系结构的具体示例,表1给出了SE-ResNet-50和SE-ResNeXt-50的详细描述。在这里插入图片描述
括号内列出了剩余构建块的形状和具有特定参数设置的操作,而阶段中堆叠的块的数量显示在外部。FC后面的内括号表示SE模块中两个完全连接的层的输出尺寸。

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

三、实验

在这一部分,我们将进行实验,以调查SE块在一系列任务、数据集和模型体系结构中的有效性。

3.1 图像分类

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

我们首先将SE-ResNet与不同深度的ResNet体系结构进行比较,并在表2中报告结果。我们观察到,SE块在计算复杂性极小增加的情况下,跨不同深度持续提高性能

在这里插入图片描述
在这里插入图片描述

3.2 场景分类

在这里插入图片描述

3.3 目标检测

我们使用更快的R-CNN[4]检测框架作为评估我们的模型的基础,并遵循[76]中描述的超参数设置(即,端到端训练和‘2x’学习时间表)。我们的目标是评估用SE-ResNet替换对象检测器中的干线体系结构(ResNet)的效果,以便任何性能变化都可以归因于更好的表示。表7报告了使用ResNet-50、ResNet-101和它们的SE对应物作为干线架构的对象检测器的验证集性能。
在这里插入图片描述

四、消融实验

在这一部分中,我们进行消融实验,以更好地了解使用不同配置对SE块组件的影响。所有烧蚀实验都是在单台机器(具有8个GPU)上的ImageNet数据集上执行的。采用RESNET-50作为主干架构。

4.1 压缩率

公式中引入了压下率r。5是一个超级参数,它允许我们改变网络中SE块的容量和计算成本。为了研究这个超参数在性能和计算成本之间的权衡,我们使用SE-ResNet-50对一系列不同的r值进行了实验。表10中的比较表明,性能对于一定范围的缩减率是稳健的。增加的复杂性不会单调地改善性能,而较小的比率会显著增加模型的参数大小。设置r=16可在精确度和复杂性之间实现良好的平衡。在实践中,在整个网络中使用相同的比率可能并不是最佳的(由于不同层扮演不同的角色),因此可以通过调整比率以满足给定基本架构的需求来实现进一步的改进。
在这里插入图片描述

4.2 压缩操作

我们研究了使用全局平均池而不是全局最大池作为我们选择的挤压操作符的意义(因为这很有效,我们没有考虑更复杂的替代方案)。结果如表11所示。虽然最大池和平均池都是有效的,但平均池的性能略好一些,这证明选择它作为挤压操作的基础是合理的。然而,我们注意到SE块的性能对于特定聚集运算符的选择是相当稳健的。
在这里插入图片描述

4.3 激励操作

接下来,我们评估激励机制的非线性选择。我们考虑另外两个选择:Relu和tanh、其他非线性函数。结果如表12所示。我们看到,将Sigmoid替换为TANH会略微降低性能,而使用RELU则会显著降低性能,实际上会导致SE-ResNet-50的性能降至ResNet-50基线以下。这表明,要使SE块有效,仔细构造激励运算符是很重要的。
在这里插入图片描述

4.4 不同的阶段

我们通过将SE块一次一个阶段地集成到ResNet-50中来探索SE块在不同阶段的影响。具体地说,我们将SE块添加到中间阶段:阶段2、阶段3和阶段4,并在表13中报告结果。我们观察到,在体系结构的每个阶段引入SE块时,都会带来性能优势。此外,SE块在不同阶段产生的收益是互补的,因为它们可以有效地结合在一起,进一步增强网络性能。
在这里插入图片描述

4.5 集合策略

最后,我们进行了消融研究,以评估SE块的位置在将其集成到现有架构时的影响。除了所提出的SE设计之外,我们还考虑了三种变体:(1)SE-PRE块,其中SE块移动到剩余单元之前;(2)SE-POST块,其中SE单元在与单位支路相加之后移动(在RELU之后);以及(3)SE-单位块,其中SE单元被放置在与剩余单元平行的单位连接上。这些变体如图5所示,每个变体的性能如表14所示。
在这里插入图片描述

在这里插入图片描述

五、结论

在本文中,我们提出了SE块,这是一种体系结构单元,旨在通过使网络能够执行动态通道级特征重新校准来提高网络的表征能力。广泛的实验表明了SENet的有效性,它在多个数据集和任务中实现了最先进的性能。此外,SE块还揭示了以前的体系结构无法充分建模通道特性依赖关系的问题。我们希望这一见解可以被证明对其他需要强烈区分性特征的任务有用。最后,SE块产生的特征重要性值可用于其他任务,例如用于模型压缩的网络修剪。

文章来源: ai-wx.blog.csdn.net,作者:AI 菌,版权归原作者所有,如需转载,请联系作者。

原文链接:ai-wx.blog.csdn.net/article/details/123549964

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。