信道关注和挤激励网络(SENET)

2020-09-21 22:36:28

在计算机视觉注意机制的早期,在CVPR 2018(和TPAMI)上发表的一篇论文-挤压和激发网络-介绍了一种新的通道注意机制。这个简单而高效的附加模块可以添加到任何基准体系结构中,以获得性能改进,而计算开销可以忽略不计。

在这篇文章中,我们将涵盖挤压和激励网络的四个部分。首先,我们将通过参观现代摄影技术的一些方面来理解为什么频道关注是重要的背后的直觉。然后,我们将前进到在挤压和激励(SE)块中计算通道注意力所涉及的方法。接下来,我们将分析压缩和激励(SE)块在标准体系结构中的影响,同时评估它们在不同计算机视觉任务中的影响。最后,我们将就所提出的方法中的某些缺点对这篇论文进行批评。

随着现代摄影通过几代人对智能机制的改进来捕捉最好的照片,一项最微妙的技术已经被忽略了,那就是为静止照片选择最好的帧照片。这是某些智能手机的常见功能。

一张静止的照片有很多变数。在相同的条件和环境下,相隔一秒钟拍摄的两张对象的照片仍然可能有很大的不同。例如,在两张照片中的一张中,他们的眼睛可能是闭着的。要获得最佳照片,最好是在拍摄照片的瞬间捕捉多个帧,这样摄影师就可以选择从所有捕捉的帧中选择最佳帧。如今,这是以自动化、智能化的方式完成的。像Google Pixel这样的智能手机能够在拍摄一张照片时,从所有可用的相框中挑选最好的相框。该智能机制受光照、对比度、模糊、背景畸变等不同因素的制约,抽象地说,智能机制就是选择包含照片最具代表性信息的边框。

就现代卷积神经网络结构而言,您可以将帧视为由卷积层计算的张量中的通道。该张量通常由(B,C,H,W)维度表示,其中B表示批次大小,C表示通道,H,W表示特征映射的空间维度(H表示高度,W表示宽度)。通道是卷积滤波器从输入导出不同特征的结果。然而,这些渠道可能不具有相同的代表性重要性。由于某些通道可能比其他通道更重要,因此在传播到下一层之前根据通道的重要性对其应用权重是有意义的。

我们将利用这一点作为对渠道关注重要性的基础理解,我们将在接下来的几节中介绍这一点。

基于上一节所描述的直觉,让我们深入探讨为什么通道注意力是提高深层卷积神经网络体系结构的泛化能力的关键组成部分。

由维度(B、C、H、W)表示的输入张量(通常为四维张量)。

卷积滤波器负责基于这些滤波器内学习到的权重来构建特征映射。一些过滤器学习边缘,而另一些过滤器学习纹理,它们共同学习由输入张量嵌入的图像中目标类信息的不同特征表示。因此,通道的数量表示学习输入的不同特征映射的卷积滤波器的数量。根据我们之前对摄影中帧选择的理解,这些特征地图也具有不同程度的重要性。这意味着某些功能地图比其他功能地图更重要。例如,与学习背景纹理过渡的另一特征地图相比,包含边缘信息的特征地图可能对学习更为重要和关键。因此,在基本层面上,人们会想要提供比对应的特征映射更重要的特征映射。

这是渠道注意力的基础。我们希望将这种注意力集中在更重要的渠道上,这基本上是将特定渠道的重要性置于其他渠道之上。执行此操作的最简单方法是将更重要的通道缩放更高的值。这正是挤压激发网络提出的建议。

2018年,胡等人提出。在2018年CVPR上发表了他们的论文,题为挤压与激励网络,并在TPAMI上发表了一个期刊版本。这篇论文被誉为注意力机制领域最具影响力的著作之一,已获得1000多篇引文。让我们来看一下这篇论文的建议。

本白皮书提出了一种新的、易于插入的模块,称为挤压和激励模块(简称SE-BLOCK),它由三个组件组成(如上图所示):

让我们更详细地了解这些模块中的每个模块,并了解为什么它们在渠道关注的上下文中很重要。

为了获得最佳的信道注意力,人们希望特征映射的缩放与特征映射本身相适应。简单地说,特征映射集合实质上是来自卷积层的输出张量(通常是维度的4维张量(B、C、H、W),其中首字母表示特征映射的批次大小、通道、高度和宽度)。为简单起见,我们将仅将其视为形状(C,H,W)的3-D张量-本质上,我们关注深度(张量中的通道/特征映射的数量)和该张量中每个特征映射的空间维度。因此,为了使通道注意力适应每个通道本身,我们总共需要关注H×W像素(或值)。这本质上意味着,为了使注意力真正适应,你需要操作总共C×H×W的值。这个值将变得非常大,因为在现代神经网络中,通道的数量随着网络深度的增加而变得更大。因此,需要使用可以将每个特征映射的信息分解为奇异值的特征描述符,这将有助于降低整个操作的计算复杂度。

这形成了挤压模块的动机。有许多特征描述符可以用来将特征映射的空间维数降低到一个奇异值,但是卷积神经网络中用于降低空间维数的一般方法是合并(Pooling)。有两种非常流行的池化方法:平均池化和最大池化。前者在定义的窗口内计算平均像素值,而后者在同一定义的窗口中取最大像素值。两者都有各自的优势和劣势。虽然最大池保留了最活跃的像素,但它也可能非常嘈杂,而且不会考虑相邻像素。另一方面,平均合并并不保留信息;但是,它构建了该窗口中所有像素的更平滑的平均。

作者进行了消融研究,以调查每个描述符的性能,即全局平均池(GAP)和全局最大池(GMP),如下表所示。

因此,挤压模块选择这两个选项中更平滑的选项,并使用全局平均池(GAP)操作,该操作通过取该特征图中所有像素的平均值基本上将整个特征图减少到奇异值。因此,就维数而言,如果输入张量是(C×H×W),则在将其通过间隙算子之后,所获得的输出张量将具有形状(C×1×1),本质上是长度为C的向量,其中每个特征映射现在被分解为奇异值。

为了验证压缩运算符的重要性,作者进一步比较了压缩变量和非压缩变量,如下表所示。注:无挤压变量实质上意味着包含特征映射的张量没有减少到单个像素,激励模块对整个张量进行操作。

现在,随着输入张量被分解到相当小的(C×1×1)大小,模块的下一部分是学习这些通道的自适应缩放权重。对于挤激模块中的励磁模块,作者选择了全连接的多层感知器(MLP)瓶颈结构来映射比例权重。此MLP瓶颈具有单个隐藏层以及形状相同的输入层和输出层。隐藏层用作缩减块,其中输入空间缩减为由缩减因子(默认情况下设置为16)定义的较小空间。然后将压缩空间扩展回原始维度作为输入张量。用更简洁的话说,MLP每一层的维度变化可以通过以下三点来定义:

隐含层将其减少一个减少因子r,从而导致C/r神经元的总数。

最后,输出被投影回与输入相同的维度空间,总共返回到C个神经元。

总而言之,您传递(C×1×1)张量作为输入,并获得相同形状的加权张量-(C×1×1)。

作者提供了在ResNet-50架构中使用不同缩减率(R)的SE模块性能的实验结果,如下表所示。

理想情况下,为了改善信息传播和更好的跨信道交互(CCI),应将r设置为1,从而使其成为在每一层具有相同宽度的完全连接的正方形网络。然而,在增加复杂度和降低r的同时提高性能之间存在权衡。因此,基于上表,作者使用16作为缩减比的默认值。这是一个超参数,可以进一步调整以提高性能。

从激励模块获得(C×1×1)";激发张量后,它首先通过一个S形激活层,该激活层将值缩放到0-1的范围内。随后,通过简单的广播逐元素乘法将输出直接应用于输入,该乘法用从激励模块中的MLP学习的相应权重来缩放输入张量中的每个通道/特征映射。

作者对用作激励算子的不同非线性激活函数的效果做了进一步的消融研究,如下表所示。

在此基础上,作者确定Sigmoid为性能最好的激活函数,并将其作为Scale模块中的默认激励算子。

总而言之,挤压激励块(SE块)采用形状(C×H×W)的输入张量x,通过全局平均汇集(GAP)将其缩减为形状张量(C×1×1),随后将该C长度向量传递到多层感知器(MLP)瓶颈结构中,并输出相同形状(C×1×1)的加权张量,然后将其广播并与输入x逐个元素相乘。

现在,问题是:模块插入到哪里,例如在剩余网络中?

作者尝试了SE模块的不同集成策略,如上图所示。这些措施包括:

标准SE块正好在架构的最后卷积层之后应用,在这种情况下是剩余网络,恰好在跳跃连接的合并之前。SE-Pre配置是通过将SE块放置在块的开头、第一卷积层之前来构建的,而SE-POST则相反,将其放置在块的末尾(在跳过连接合并之后)。最后,SE-Identity块将SE-模块应用于跳过连接分支本身,与主块平行,并作为正常残差添加到最终输出。

作者提供了关于集成策略的广泛消融研究结果,如以下两个表所示:

表1.不同SE整合策略对ImageNet分类任务ResNet-50错误率的影响。

表2.在残留块的空间3x3卷积层之后引入SE块的效果。

正如我们从表1中可以看到的,除SE-POST之外的所有配置都提供了类似且一致的性能。如表2所示,作者进一步试验了在残留块的空间卷积之后插入SE块。由于3×3空间卷积具有较少的信道数,因此参数和触发器开销要小得多。虽然它能够提供与默认SE配置类似的性能,但作者没有提供任何关于哪种配置最有利的结论,并保留了SE&34;作为默认集成配置。

幸运的是,作者确实回答了如何将SE块集成到现有体系结构中的问题。

在残差网络中,在跳跃连接中添加残差之前,将挤压激励块插入在最后卷积层之后的块中。这背后的直觉是保持跳过连接分支尽可能干净,以使学习身份变得容易。

然而,在初始网络中,由于没有跳过连接,SE块被插入到最后卷积层之后的每个初始块中。

在本文的下图中,作者展示了修改后的ResNet-50和ResNext-50架构,每个模块中都有一个SE模块。

作者对ResNet-50的SE模块在4个不同阶段的集成策略进行了深入的研究。结果显示在下表中。

与这篇论文相关的官方代码库可以在这里找到。然而,代码是在Caffe中构建的,Caffe是一种现在不太流行的框架。让我们来看看该模块的PyTorch和TensorFlow版本。

#从手电筒导入必需的包nn#挤压激励类定义类SE(nn.Module):def__init__(self,channel,Reduce_Ratio=16):Super(SE,self).__init__()#全局平均池化self.ap=n.AdaptiveAvgPool2d(1)#全连接多层感知器(FC-MLP)self.mlp=n.Sequential(nn.线性(通道,通道/缩减_比,偏置=假),nn.Re.LU(就地=真),nn.LU(通道/通道/缩减_比率,通道,通道,#全连接多层感知器(FC-MLP)自定义mlp=n.Sequence(nn.线性(通道,通道/降低比,偏移=假),nn.LU(就地=真),通道,##全连接多层感知器(FC-MLP)自定义mlp=n.Sequential。Bias=false),nn.Sigmoid())def ward(self,x):b,c,_,_=x.size()y=self.ap(X).view(b,c)y=self.mlp(Y).view(b,c,1,1)return x*y.expand_as(X)。

将TensorFlow导入为TF__ALL__=[';挤压和激发_BLOCK';,]定义挤压和激发_块(INPUT_X,OUT_DIM,Reduce_Ratio=16,Layer_Name=';SE-BLOCK';):";";";挤压和激发(SE)块SE块执行特征重新校准-一种允许网络执行特征重新校准的机制,通过该机制,网络可以学习使用全局信息选择性地强调信息性特征而抑制不太有用的特征";";";with tf.name_scope(Layer_Name):#squze:全局信息嵌入挤压=tf.nn.avg_pool(input_X,ksize=[1,*input_X.form[1:3],1],strides=[1,1,1,1],pAdding=';Valid';,name=';挤压';)#激发:自适应特征重新校准##密集(瓶颈)->;reu with tf.Variable_Scope(layer_name+';-变量#39;):EXCELATION=tf.layers.Dense(挤压,单位=Out_dim/Reduce_Ratio,名称=&39;)EXCENTATION=tf.nn.relu(EXCELATION,NAME=';EXCELATION-瓶颈-RELU&39;)##Dense->;Sigmoid with tf.variable_scope(layer_name+';-variables';):EXCELATION=tf.layers.Dense(EXCEPTION,UNTS=OUT_DIM,NAME=';激励';)initiation=tf.nn.sigmoid(激发,名称=';激发-sigmoid';)#缩放定标器=tf.reshape(激发,形状=[-1,1,1,out_dim],名称=';定标器';)返回INPUT_X*定标器。

其中最有影响力的是MobileNet v2和Efficient Nets的工作,这两个工作都使用了移动倒置剩余块(MBConv)。高效网络还增加了一个挤压激励块。

在MBConv中,压缩激发块被放置在最终卷积层之前,在块中的空间卷积之后。这使得它更像是一个完整的部分,而不是最初的目标--一个附加组件。SE-Net的作者已经进行了消融研究,也测试了这种集成方法,但他们选择了在最终1×1卷积之后添加SE块的默认配置。从标准ImageNet-1k数据集上的图像分类到MS-COCO数据集上的目标检测,高效网被认为是许多任务中的最新技术(SOTA)。这证明了通道注意的重要性,以及挤压激励块的效率。

作者在诸如ImageNet、MS-CoCo和Places-365等竞争性标准数据集上,提供了图像分类、场景分类和目标检测等不同任务的广泛结果。下表显示了在上述任务中使用SE模块的效率和优势:

这里用于比较的度量是分类错误。作者还增加了一种数据增强形式,即在Shake-Shake网络中裁剪,以确认使用SE模块时所获得的性能提升是否与数据增强等不同性能提升技术的使用一致。

如上图所示,配备压缩和激励模块的网络显示出一致的改进曲线,从而导致更好的泛化和更高的性能。

虽然这篇论文本身就是革命性的,但在结构上存在一定的概括性缺陷,也存在一些不确定的设计策略。

该方法相当昂贵,并且在基线模型之上增加了大量的参数和FLOP。尽管在总体方案中,这种开销可能非常小,但是已经有许多旨在以极其便宜的成本提供通道注意力的新方法,其表现优于SENet,例如ECANet(在CVPR 2020上发表)。

尽管信道关注在参数和触发器开销方面似乎是有效的,但一个主要缺陷是缩放操作,其中加权信道矢量被广播并以元素方式应用/相乘到输入张量。该中间广播张量与输入的张量具有相同的维空间,导致存储器复杂度大幅增加。这会使训练过程变得较慢,并且会占用更多内存。

为了降低计算复杂度,在块的激励模块的MLP中存在瓶颈结构,其中以指定的减小率减少信道数量。这会导致信息丢失,因此不是最优的。

由于SENET仅通过使用专用的全局特征描述符(在这种情况下是全局平均池(GAP))来提供信道注意力,因此存在信息损失,并且所提供的注意力是逐点的。这意味着所有像素在特征地图的空间域中被统一映射,从而不区分重要的或类别确定的像素与作为背景的一部分或不包含有用信息的像素。因此,重要的是。

.