Attention Mechanisms in Computer Vision: A Survey(一)

文章地址:https://arxiv.org/pdf/2111.07624.pdf
人类可以自然有效地在复杂场景中找到显著区域。在这种观察的激励下,注意力机制被引入计算机视觉,目的是模仿人类视觉系统的这一方面。这种注意机制可以看作是一个基于输入图像特征的动态权重调整过程。注意机制在许多视觉任务中取得了巨大的成功,包括图像分类、目标检测、语义分割、视频理解、图像生成、三维视觉、多模态任务和自监督学习。在这项调查中,作者全面回顾了计算机视觉中的各种注意机制,并根据方法对它们进行分类,如通道注意、空间注意、时间注意和分支注意力;作者还提出了注意机制研究的未来方向。

一、文章简介

将注意力转移到图像中最重要的区域并忽略不相关部分的方法称为注意力机制;在视觉系统中,注意机制可以被视为一个动态选择过程,通过根据输入的重要性自适应地加权特征来实现。注意机制在很多视觉任务中都有好处,例如:图像分类目标检测语义分割、人脸识别、人物再识别、动作识别、少量显示学习、医学图像处理、图像生成、姿势估计,超分辨率、3D视觉、和多模式任务。在过去的十年里,注意机制在计算机视觉中扮演着越来越重要的角色;图3简要总结了深度学习时代计算机视觉中基于注意的模型的历史。进展大致可分为四个阶段。第一阶段始于RAM,这是一项将深层神经网络与注意力机制相结合的开创性工作。它反复预测重要区域,并通过策略梯度以端到端的方式更新整个网络。在这个阶段,递归神经网络(RNN)是注意力机制的必要工具。在第二阶段开始时,Jaderberg等人提出了STN,它引入了一个子网络来预测用于选择输入中重要区域的仿射变换。明确预测歧视性输入特征是第二阶段的主要特征;DCN是具有代表性的作品。第三阶段始于SENet,提出了一种新的通道注意网络,它隐式地、自适应地预测潜在的关键特征。CBAM和ECANet是本阶段的代表作品。最后一个阶段是自注意力时代。并在自然语言处理领域迅速取得了巨大进展。Wang等人率先将自注意力引入计算机视觉,并提出了一种新颖的非局部网络,在视频理解和目标检测方面取得了巨大成功。接下来是一系列工作,如EMANet、CCNet、HamNet和独立网络,这些工作提高了速度、结果质量和泛化能力。最近,各种纯粹的深层自注意力网络(视觉transformers)]相继出现,显示出基于注意的模型的巨大潜力。显然,基于注意力的模型有可能取代卷积神经网络,成为计算机视觉中一种更强大、更通用的体系结构。
在这里插入图片描述
在这里插入图片描述
如上所示,并在下图中进一步说明:它基于数据域。一些方法考虑重要数据何时出现,或其他方法在何处出现等问题,并相应地尝试在数据中找到关键时间或位置。作者将现有的注意方法分为六类,包括四个基本类别:通道注意力(注意图中有什么)、空间注意力(注意关键因素哪里)、时间注意(何时注意)和分支通道(注意感受野),以及两个混合组合类别:通道与空间注意和空间与时间注意。
在这里插入图片描述
本文主要贡献有:
1、对视觉注意力方法的系统回顾,包括注意力机制的统一描述、视觉注意力机制的发展以及当前的研究。
2、根据数据域对注意力方法进行分类分组,使我们能够将视觉注意力方法独立于其特定应用进行链接,3、对视觉注意未来研究的建议。

二、文章细节

(一)、Channel Attention

在深度神经网络中,不同特征映射中的不同通道通常代表不同的对象。通道注意力自适应地重新校准每个通道的权重,可以将其视为一个对象选择过程,从而确定要注意的内容。Hu等人[5]首先提出了通道注意的概念,并为此提出了SENet。如下所示
在这里插入图片描述

(1)、SENet

SENet开创了通道注意力的先河。SENet的核心是一个压缩和激励(SE)块,用于收集全局信息、捕获通道关系和提高表示能力。
SE模块分为两部分,挤压模块和激励模块。挤压模块通过全局平均池化收集全局空间信息。激励模块通过使用全连接层和非线性层(ReLU和sigmoid)捕捉通道关系并输出注意力向量。然后,通过乘以注意向量中的相应元素来缩放输入特征的每个通道。总的来说,以X为输入,以Y为输出的压缩和激励块 F s e F_{se} Fse(参数θ)可以表示为:
在这里插入图片描述
SE模块在抑制噪声的同时,起着强调重要通道的作用。由于SE块的计算资源需求较低,因此可以在每个残差单元之后添加SE块。然而,SE块也有缺点。在挤压模块中,全局平均池过于简单,无法捕获复杂的全局信息。在激励模块中,全连接层增加了模型的复杂性。后续工作试图改进挤压模块的输出(例如GSoP网络),通过改进励磁模块(例如ECANet)降低模型的复杂性,或者同时改进挤压模块和励磁模块(例如SRM)。

(2)、GSoP-Net

SE块仅通过使用全局平均池化(即一阶统计量)来捕获全局信息,这限制了其建模能力,尤其是捕获高阶特征的能力。 为了解决这个问题,Gao等人提出通过使用全局二阶池化(GSoP)块在收集全局信息的同时对高阶特征数据建模来改进挤压模块。
与SE块一样,GSoP块也有一个挤压模块和一个激励模块。在压缩模块中,GSoP块首先使用1x1卷积将通道数从 c ′ c^{'} c减少到c( c < c ′ c<c^{'} c<c),然后计算不同通道的c×c协方差矩阵,以获得它们的相关性。接下来,对协方差矩阵执行逐行归一化。归一化协方差矩阵中的每个(i,j)明确地将通道i与通道j相关联。
在这里插入图片描述
在激励模块中,GSoP块执行逐点卷积以保持结构信息并输出向量。然后利用全连接层和sigmoid函数得到c维注意向量。最后,它将输入特征乘以注意向量,就像在SE块中一样。GSoP块可以表示为:
在这里插入图片描述
Conv(·)表示减少通道数,Cov(·)计算协方差矩阵,RC(·)表示逐点卷积。 通过使用二阶池,GSoP块提高了通过SE块收集全局信息的能力。然而,这是以额外计算为代价的。因此,通常在几个残差块之后添加单个GSoP块。

(3)、SRM

在transfer成功的推动下,Lee等人提出了基于轻量级风格的再校准模块(SRM)。SRM将风格转换与注意力机制结合起来。它的主要贡献是style pooling,它利用输入特征的均值和标准差来提高捕获全局信息的能力。为了降低计算层(CFC)的完全连接要求,在全连接的地方也采用了CFC。
在这里插入图片描述
给定一个输入特征映射 X ∈ R C × H × W X∈ R^{C×H×W} XRC×H×W,SRM首先通过结合全局平均池和全局标准差池化的风格式池化(SP(·))收集全局信息。然后使用通道全连接(CFC(·))层(即每个通道全连接)、批量归一化BN和sigmoid函数σ来提供注意力向量。最后,与SE块一样,输入特征乘以注意力向量。总的来说,SRM可以写成:
在这里插入图片描述

SRM模块改进了挤压和激励模块,但可以像SE模块一样添加到每个残差单元之后。

(4)、GCT

由于激励模块中全连接层的计算需求和参数数量,在每个卷积层之后使用SE块是不切实际的。此外,使用全连接的层来建模通道关系是一个隐式过程。为了克服上述问题,Yang等人提出了门控通道转换(GCT),以有效地收集信息,同时显式地建模通道关系。
在这里插入图片描述
与以前的方法不同,GCT首先通过计算每个通道的l2范数来收集全局信息。接下来,应用可学习向量α来缩放特征。然后通过通道规范化引入竞争机制,实现通道之间的互动。与其他常见的归一化方法一样,可学习的尺度参数γ和偏差β用于重新缩放归一化。然而,与之前的注意力向量激活方法不同,tanh采用的是注意力向量激活方法。最后,它不仅增加了输入注意向量,但也增加了身份映射。GCT可以写成:
在这里插入图片描述
其中α、β和γ是可训练参数。Norm(·)表示每个通道的L2范数。CN是通道规范化。 GCT块的参数比SE块少,而且由于它很轻,可以添加到CNN的每个卷积层之后。

(5)、ECANet

为了避免高模型复杂度,SENet减少了通道的数量。然而,这种策略无法直接建模权重向量和输入之间的对应关系,从而降低了结果的质量。为了克服这一缺点,Wang等人提出了高效通道注意(ECA)块,该块使用一维卷积来确定通道之间的相互作用,而不是降维。
在这里插入图片描述
ECA块具有与SE块类似的公式,包括用于聚合全局空间信息的挤压模块和用于建模跨通道交互的有效激励模块。ECA块只考虑每个通道与其k近邻之间的直接交互,而不是间接对应,以控制模型复杂性。总体而言,ECA区块的公式如下:
在这里插入图片描述

Conv1D(·)表示1维卷积,在通道域中具有形状为k的核,以模拟局部交叉通道交互。参数k决定交互的覆盖范围,在ECA中,内核大小k通过通道维度C自适应确定,而不是通过手动调整,使用交叉验证:
在这里插入图片描述
其中γ和b是超参数 ∣ x ∣ o d d |x |_{odd} xodd表示x的最近奇数函数。
与SENet相比,ECANet有一个改进的激励模块,并提供了一个高效、有效的模块,可以很容易地集成到各种CNN中。

(6)、FcaNet

在挤压模块中仅使用全局平均池化限制了表达能力。为了获得更强大的表示能力,秦等人重新思考了从压缩角度捕获的全局信息,并分析了频域中的全局平均池化。他们证明了全局平均池化是离散余弦变换(DCT)的一个特例,并利用这一观察结果提出了一种新的多光谱通道注意力
在这里插入图片描述
给定一个输入特征映射 X ∈ R C × H × W X∈ R^{C×H×W} XRC×H×W,多光谱通道注意力首先将X分成许多部分 x i ∈ R C 0 × H × W x^i∈ R^{C_0×H×W} xiRC0×H×W。然后对每个部分应用2D DCT。请注意,2D DCT可以使用预处理结果来减少计算量。处理后,所有结果都被连接到一个向量中。最后,使用全连接层、ReLU激活和sigmoid来获得SE块中的注意向量。这可以表述为:
在这里插入图片描述
其中Group(·)表示将输入分成多个组,DCT(·)表示二维离散余弦变换。 这项基于信息压缩和离散余弦变换的工作在分类任务上取得了优异的性能。

(7)、EncNet

受SENet的启发,Zhang等人提出了上下文编码模块(CEM),该模块结合了语义编码损失(SE损失),以建模场景上下文和对象类别概率之间的关系,从而利用全局场景上下文信息进行语义分割。
在训练阶段,给定一个输入特征映射 X ∈ R C × H × W X ∈ R^{C×H×W} XRC×H×W,CEM首先学习K个聚类中心D={ d 1 , … , d K d_1,…,d_K d1dK}和一组平滑因子 S = { s 1 , … , s K } S=\{s_1,…,s_K\} S={ s1sK}。接下来,它使用软分配权重对输入中的局部描述符和相应的聚类中心之间的差异进行求和,以获得置换不变描述符。然后,为了提高计算效率,它将聚合应用于K个簇中心的描述符,而不是级联。形式上,CEM可以写成:
在这里插入图片描述
d k ∈ R C d_k ∈ R^C dkRC s k ∈ R s_k∈ R skR是可学习的参数。φ表示使用ReLU激活函数的批量标准化。除了按通道缩放向量外,紧凑的上下文描述符e还用于计算SE损失,以正则化训练,从而改进小对象的分割。

(8)、Bilinear Attention

继GSoP Net之后,Fang等人提出,以前的注意力模型只使用一阶信息,而忽略了高阶统计信息。因此,他们提出了一种新的双线性注意块(bi attention block,bi attention)来捕获每个通道内的局部成对特征交互,同时保留空间信息。双注意力利用注意中的注意(AiA)机制捕获二阶统计信息:外部逐点通道注意向量由内部通道注意的输出计算。给定输入特征映射X,bi attention首先使用双线性池来捕获二阶信息。
在这里插入图片描述
其中φ表示用于降维的嵌入函数, φ ( x ) T φ(x)^T φ(x)T是φ(x)在通道域上的转置,Utri(·)提取矩阵的上三角元素,vec(·)是矢量化。然后,双注意将内通道注意力机制应用于特征映射。
在这里插入图片描述

这里ω和ν是嵌入函数。最后,使用输出特征映射 x x x计算外部逐点注意机制的空间通道注意权重:
在这里插入图片描述双注意块使用双线性池来模拟沿每个通道的局部成对特征交互,同时保留空间信息。与其他基于注意的模型相比,该模型更关注高阶统计信息。双注意可以整合到任何CNN主干中,以提高其代表性,同时抑制噪音。

至此,通道注意力的代表之作已经分享结束,下图是上文介绍的注意力机制的相关结构。
在这里插入图片描述
在这里插入图片描述

上图是按类别和出版日期排序的代表性通道注意机制。他们的主要目标是强调重要通道和获取全局信息。应用领域包括:Cls=分类,Det=检测,SSeg=语义分割,ISeg=实例分割,ST=风格转换,Action=动作识别。g(x)和f(g(x),x)是由等式1描述的注意过程。范围是指注意力特征图的范围。S或H表示软注意或硬注意。(A) 通道方面的模型。(I) 强调重要中道,(II)获取全局信息。
至此结束,肝部动了,下一篇博客见!

猜你喜欢

转载自blog.csdn.net/qq_52302919/article/details/124492286