Nonlocal和Transformer的区别?
==区别在于把注意力当做辅助模块还是核心模块==
无论是non-local还是CCNet,都是认为CNN整体上已经非常好了,但是缺乏一些长距离建模的能力,所以我们稀疏的插入一下注意力模块,帮助CNN做这件事。
另外的全注意力或者类Transformer的网络,是让网络的主要部分都是用注意力结构。==卷积和注意力的地位已经颠倒过来了==,由卷积去负责一些注意力可能不擅长的事情,比如低层的特征提取,而剩下绝大部分的建模都交给注意力.
此外,全注意力网络的工作也可以分为两类:
==一类是保留原有CNN的训练流程,通过修改注意力模块的结构适应CV任务==,比如AAConv、SASA、GSA-Net;
==另一类则保留原本的Transformer架构,通过修改训练流程来适应CV任务==,比如ViT、DETR。
这两类工作相比,目前看来第二类工作的改动更彻底、效果也更好。==第一类工作往往因为需要处理高分辨率的特征图并且引入相对位置表征,导致在GPU、TPU上效率不高。==第二类工作遇到的主要问题则是,==如果完全抛弃卷积,由于缺乏平移不变性的先验,往往对数据量和训练长度要求很高,不能高效地学习。如果不使用超大规模数据进行预训练,则一般还是需要保留一部分卷积层。==
关于attention的思考
对于深层的一个Channel,特征图的每一个点都是之前的
AANet
Info
19ICCV Google Brain 用自注意力增强卷积:这是新老两代神经网络的对话
Abstract
卷积运算的弱点:局部邻域运行 缺少全局信息。本文使用自注意力作为卷积的替代。
我们介绍了一种新颖的二维相对自注意力机制,该机制证明了在取代卷积作为图像分类的独立计算基元方面具有竞争力。
==我们在控制实验中发现,将卷积和自注意力结合起来可获得最佳结果。==
因此,我们建议通过将卷积特征图与通过自我注意产生的一组特征图进行级联,以利用这种自我注意机制来增强卷积算子。
广泛的实验表明,注意力增强技术可在许多不同的模型和规模(包括ResNets和SOTA的移动受限网络)上,在ImageNet上的图像分类和COCO上的对象检测方面带来一致的改进,同时保持参数数量相似。
比SENet好
Introduction
==卷积层的设计强加了 1.有限感受野的局部性 2.权重共享的平移等变性translation equivariance==
==self attention的关键思想是从hidden units中计算得出值的加权平均。The key idea behind self-attention is to produce a weighted average of values computed from hidden units.==
==与池化和卷积算子不同,加权平均运算中(self attention)使用的权重是通过hidden units之间的相似度函数动态生成的。作为结果,输入信号之间的相互作用取决于信号本身,而不是像卷积一样由它们的相对位置预先确定。 特别地,这使得self attention能捕捉远程交互,而无需增加参数的数量。==
应用self attention替代conv
我们开发了一种新颖的二维相对self attention机制[37],该机制在注入相对位置信息的同时保持平移等变性,使其非常适合图像。
我们的self-attention 显示出了完全取代conv的竞争力,但是我们在对照实验中发现,==将两者结合使用可获得最佳效果==。
因此,我们没有完全放弃卷积的概念,而是建议使用self attention机制来增强卷积。 这是通过将强制局部性的卷积特征图与能够建模更长距离依赖项的self attention特征图(请参见图2)进行级联来实现的。
实验还表明,fullyself attention模型(Attention Argument的一种特例)仅比ImageNet上的完全卷积模型稍差,这表明self attention是图像分类的强大独立计算基元。
这个图真的有大问题,不知道它画的什么,这也能入选顶会???就离谱
Related work
2.1. Convolutional networks
的确,用于基于卷积图元设计体系结构的自动搜索策略可在跨多种任务的大规模图像分类任务中实现最先进的准确性[55,21]。
2.2. Attention mechanisms in networks
针对视觉任务提出了多种注意力机制,以解决卷积的弱点[17、16、7、46、45、53]。 例如,Squeeze and Excitation [17]和Gather-Excite [16]使用从整个特征图汇总的信号重新分配特征通道的权重,而BAM [31]和CBAM[46] (18ECCV)在通道和空间维度上独立地完善卷积特征。
但是,non-local block仅在ImageNet预训练之后才添加到体系结构中,并以不破坏预训练的方式进行初始化。
我们的在整个架构中采用self attention
==The use of multi-head attention allows the model to attend jointly to both spatial and feature subspaces.==
另外,我们通过将relative self attention[37,18]扩展到二维输入,从而增强了self attention对图像的表示能力,从而使我们能够以一种有原则的方式对平移等变性transparent equivariance进行建模。
最终,我们的方法产生了附加的特征图,而不是通过加法[45、53]或门控(权重相乘的形式)[17、16、31、46]重新校准卷积特征。==此属性使我们可以灵活地调整注意力通道的比例,并考虑从完全卷积到完全注意力模型的一系列体系结构。==
Methods
不同空间下的表示可以做attention吗?
我觉得显然可以。我们对注意力机制最朴素、直观的认识就是,它学习的是一种对齐关系(alignment)。而这种机制并不假定query和memory同属于一个所谓语义空间,而是假定两个空间存在某种可以靠注意力机制学习的对齐关系。
在注意力较早应用的机器翻译应用中,你也很难说源语言和目标语言二者属于同一个语义空间,但是可以大胆假定两门语言存在某种对齐关系,简单的例如词汇之间的对齐,复杂的例如模式之间的对齐,在Transformer中分别对应低层表示的cross-attention和高层的cross-attention。
在跨模态场景中,显然你也总是可以找到特征之间的某种对齐关系,例如图像和文本之间广泛存在的对应。抛开DL的理论实践,光是看人类的认知,当你阅读小说时,看到『天空』,你可能会想象到一片蓝色;看到『bobo』,你可能会想象到一颗猥琐的猫头。这就是图像和文本之间固有的对齐关系,因为语言习得过程就需要我们将特定文字和特定意象(包括图像、声音)联系,这正是近期众多跨模态工作(包括著名的CLIP,DALL-E)得以成功的原因。引入跨空间的注意力即是学习这种对齐关系的一种方法。
希望能帮助你理解手头的论文。
作者:TniL
链接:https://www.zhihu.com/question/452498914/answer/1814362500
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。可以类比CNN中同时使用多个滤波器的作用,直观上讲,多头的注意力有助于网络捕捉到更丰富的特征/信息。
论文中是这么说的:
Multi-head attention allows the model to jointly attend to information from different representation subspaces at different positions.
我觉得也可以把多头注意力看作是一种ensemble,模型内部的集成。不过另外的答主也提到了,多头注意力的机理还不是很清楚。事实上,注意力机制本身如何工作,这个可解释性工作也还没有完成,目前的一些解释都还只是intuition,除了seq2seq中起到一种alignment的作用外,在许多模型中加入注意力以后如何起作用,还是有一点争议的。
$$
Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V
$$
Q、K获得数值为0-1的mask矩阵(可以理解为attention score矩阵),V表示的是输入线性变换后的特征,mask矩阵乘上V就获得过滤后的V特征
$H$特征图的高度 $W$宽度 $F_{in}$输入维度 $N_h$:头数 $d_v$:values的深度**(深度指channels吧)** $d_k$:query和keys的深度 $d_v^h$ $d_k^h$第h个头的深度
3.1. Self-attention over images
input:$(H,W,F_{in})\to X\in R^{HW\times F_{in}}$
single head h:
$$
O_h=softmax(\frac{(XW_q)(XW_k)^T}{\sqrt{d_k^h}})(XW_v)\
W_q,W_k\in R^{F_{in}\times d_k^h},W_u\in R^{F_{in}\times d_v^h}
$$
W是学到的线性变换,将X映射到queries:$Q=XW_q$,keys:$K=XW_k$,values:$V=XW_v$


==所以说,应用到视觉上,是将二维的图像展开,展开后类似nlp==
The outputs of all heads are then concatenated 连接and projected 投影again as follows:
$$
MHA(X)=Concat[O_1,O_2,…,O_{Nh}]W^O\
W^O\in R^{d_v\times d_v}
$$
W是学到的线性变换,MHA(X)然后reshaped into $(H,W,d_v)$
We note that multi-head attention incurs招致 ==a complexity of== $O((HW)^2d_k)$ and ==a memory cost== of $O((HW)^2Nh) $as it requires to store attention.
==时间复杂度推导:==
假设现在有两个矩阵$A:m\times n$ $B:n\times l$
对于矩阵$A$第一行的第一个元素,需要进行$l$次运算,一行需要进行$n\times l$次运算,$m$行需要进行$m\times n \times l$次运算
根据上面的推导,$multi.head$的时间复杂度为:
$$
O(multihead)=O(HW\times F_{in}\times d_k + HW\times d_k\times HW)\
=O((HW)^2d_k)
$$
==空间复杂度推导:==
举例:
int i = 1;
int j = 2;
++i;
j++;
int m = i + j;
只分配了三个变量,i、j、m,所以空间复杂度$S(n)=O(1)$
int[] m = new int[n]
for(i=1; i<=n; ++i)
{
j = i;
j++;
}
第一行分配了n个元素的数组,之后的循环操作都没有再分配空间,所以说空间复杂度为$S(n)=O(n)$
对于$multi.head$的空间复杂度为:
$$
O(multihead)=O((HW)^2N_h)
$$
每个head,分配的最大空间就是那个$HW\times HW$,$N_h$个头就是$(HW)^2N_h$
3.1.1 Two-dimensional Positional Encodings
==如果没有关于位置的明确信息,则self attention是permutation equivariant置换等变的:==
$$
MHA(\pi(X))=\pi(MHA(X))
$$
对于像素位置的任何排列$\pi$,使其对建模高度结构化的数据(如图像)无效。
已经提出了使用显式空间信息来增强激活图的多种位置编码以缓解相关问题。Transformer[32]将在original Transformer[43]中引入的正弦波扩展到二维输入,而CoordConv[29]将positional channels连接到激活图。
这些编码对我们进行图像分类和目标检测的实验没有帮助(请参见第4.5节)
==我们猜想是因为这样的位置编码虽然不是置换等变的,但不满足平移等变,而平移等变在处理图像时是理想的特性。==
作为解决方案,我们建议将relative position encodings[37]**的使用扩展到二维,并提出一种基于Music Transformer** [18]的内存高效实现。
Relative positional encodings:
[37]引入位置编码,防止置换等变的同时实现平移等变。我们通过独立地添加相对高度信息和相对宽度信息来实现二维相对自我关注。
piexl$i=(i_x,i_y)$,这里的$i_x$和$i_y$是指在spatial时候的坐标, $j=(j_x,j_y)$与$i$类似,他俩的相对注意力计算公式如下:
$$
l_{i,j}=\frac{q^T_i}{\sqrt{d_k^h}}(k_j+r^W_{j_x-i_x}+r^H_{j_y-i_y})
$$
$q_i$指query $Q$的第$i$行,也就是第$i$个点,$k_j$就是key $K$的第$j$行,$r^W_{j_x-i_x}$是learned embeddings for 相对宽度$j_x-i_x$,$r^H_{j^y-i^y}$是相对宽度,
output of head h now becomes:
$$
O_h=Softmax(\frac{QK^T+S^{rel}_H+S^{rel}_W}{\sqrt{d^h_k}})V
$$
$S^{rel}_H,S^{rel}_W\in R^{HW\times HW}$
$S^{rel}_H[i,j]=q^T_ir^H_{j_y-i_y}$
$S^{rel}_W[i,j]=q^T_ir^W_{j_x-i_x}$
[37]中的相对注意机制带来额外的内存开销为$O((HW)^2d^k_h)$, 太大了 ,不带位置注意的才$O((HW)^2N_h)$,并且一般来说$N_h<d^h_k$,实在得不偿失,==本文提出的只有==$O(HWd_k^h)$
相对位置嵌入$r^H$和$r^W$在头之间共享而不是在层之间共享,对每个layer,建模高度和宽度的相对位置距离增加了$(2(H+W)-2)d^h_k$的参数量。
3.2. Attention Augmented Convolution
SENet[17] GENet[16]channelwise reweighing
BAM[31] CBAM[46] reweigh both channels and spatial positions ==independently==.
与这些方法相比,我们
- 使用一种可以同时注意空间和特征子空间(每个头部对应一个特征子空间)的注意力机制
- 引入额外的特征图而不是refining them
Concatenating convolutional and attentional feature maps:
形式上,考虑一个kernel size=k,$F_{in}$input filters $F_{out}$ output filters.相应的AA conv can be written as:
$$
AAConv(X)=Concat[Conv(X),MHA(X)]
$$
$v=\frac{d_v}{F_{out}}$表示the ratio of attentional channels to number of original output filter
$\kappa=\frac{d_k}{F_{out}}$the ratio of key depth to number of original output filters
与卷积类似,AAC:
- is equivariant to translation 平移等变
- 可以很容易地对不同spatial尺寸的输入进行操作
Effect on number of parameters:
参数量计算先不看了,反正这篇文章奇奇怪怪的啊
Attention Augmented Convolutional Architectures:
增强卷积之后是BN,==BN can learn to scale the contribution of the convolution feature maps and the attention feature maps可以学习放缩卷积特征层和注意力特征层的贡献/作用== 与SENet等相同,对每个残差块应用一次增强卷积
由于内存成本$O(N_h(HW)^2)$,对于较大的空间维度是不行的,==所以我们从最后一层开始加,直到内存受不了==就tm离谱
为了减少内存占用,选用较少的$batchsize$,同时开始的尺寸较大的时候用$downsample$,使用3x3,stride=2的平均池化
Experiments
SASA
Info
Relationship
Info
2020 ICLR oral On the relationship between self-attention and convolutional layers
Abstract
==将注意力机制整合到视觉的趋势使研究人员重新考虑卷积层作为主要构建块的优势==
除了==帮助CNN处理远程依赖关系==外,Ramachandran等人还提出了解决方案表明==注意力可以完全取代卷积,并在视觉任务上达到最先进的性能。==
==问题:学到的注意力层的运作方式与卷积层的运作方式类似吗?==
这项工作提供了证据表明==注意力层可以进行卷积,实际上,他们经常在实践中学会这样做。== 具体来说,我们证明具有足够数量的头部的多头自我注意层至少与任何卷积层一样具有表现力。 然后,我们的数值实验表明,自注意力层与CNN层相似地参与了像素网格模式,从而证实了我们的分析。
Introduction
transformer 到底是何方神圣?处处都有他
最初在==神经机器翻译中引入注意力机制就是为了更好地处理长期依赖==,
CANet
Info
21CVPR
Abstract
Mobile network设计的最新研究表明,通道注意(如SENet)对提升模型性能具有显著效果,但他们==通常会忽略位置信息,这对生成空间选择性注意图非常重要。==
本文为mobile networks 提出了一种新颖的注意机制,==通过将位置注意力嵌入到通道注意力中,我们将其称为”coordinate attention坐标注意力”.==
与通过2D全局池化将特征张量转化为单个特征向量的channel attention不同,coordinate attention将channel attention分解成两个1D特征编码的过程,分别沿两个空间方向聚合特征。==这样,可以沿一个空间方向捕获远程依赖关系,同时可以沿另一空间方向保留精确的位置信息。==然后将生成的特征图分别编码为一对方向感知和位置敏感的注意图,可以将其互补地应用于输入特征图,以增强关注对象的表示。
coordinate attention很简单,可以灵活地插入到经典的移动网络中,如MobileNetV2,MobileNeXt和EfficientNet,而且几乎没有计算开销computational overhead。
Introduction
**被用来告诉模型注意“什么”和注意“哪里”的注意力机制,已经得到了广泛的研究,**并广泛用于提高现代深度神经网络的性能[18,44,3,25,10, 14] SENet CBAM GCNet SCNet DANet SPM。==但是,它们在移动网络(尺寸有限)中的应用明显落后于大型网络[36、13、46]VGG ResNet RexNeXt。这主要是因为大多数注意力机制带来的计算开销对于移动网络而言是无法承受的。==考虑到其有限的计算能力,现在最受欢迎的还是SENet。但SENet只考虑通道信息,忽略了位置信息。
后来的工作,例如BAM和CBAM,试图通过减小输入张量的通道尺寸然后利用卷积计算空间注意力来利用位置信息,如图(b).
卷积只能捕获局部关系,无法捕获长远依赖。
在本文中,beyond the first works,我们还提出了一种新颖而有效的注意力机制,==即将位置信息嵌入到频道注意力中,从而使移动网络可以注意较大的区域,同时避免产生大量的计算开销。==
为了减轻2D全局池化引起的位置信息丢失,我们将channel attention分解为两个并行的1D特征编码过程,以将空间坐标信息有效地集成到生成的注意力图中。
具体而言,我们的方法利用两个1D全局池化操作将沿垂直方向和水平方向的输入要素分别聚合为两个单独的方向感知要素图。
然后将这两个具有嵌入的特定于方向的信息的特征图分别编码为两个注意图,每个注意图都沿一个空间方向捕获输入特征图的长期依赖性。
位置信息因此可以被保存在所生成的注意力图中。
然后通过乘法将两个注意图都应用于输入特征图,以强调感兴趣的表示。
我们将提出的注意力方法称为坐标注意力,因为其操作可以区分空间方向(即坐标)并生成可感知坐标的注意力图。
坐标注意力具有以下优势:
- ==它不仅捕获cross-channel信息,还捕获方向感知direction-aware和位置敏感position-sensitive信息,这有助于模型更准确地定位和识别感兴趣的对象==
- 方法灵活,轻巧,可以轻松地插入到经典的移动网络构建块中,如MobileNetV2中提出的inverted residual block反向残差块和MobileNeXt中的sandglass块,通过强调信息表达来增强特征
- 第三,作为一种预先训练的模型,我们的坐标注意力可以为移动网络的下游任务带来显著的性能提升,尤其是对于那些密集预测(例如语义分割)的任务,我们将在实验部分进行展示。
效果看着确实不错
Related Work
2.1. Mobile Network Architectures
最近的SORT的移动网络主要基于深度可分离卷积depthwise separable convolutions
Mobilenets: Efficient convolu- tional neural networks for mobile vision applications.
和反向残差块inverted residual block
Mobilenetv2: Inverted residuals and linear bottlenecks.
HBONet [20]在每个反向残差块内部引入了下采样操作,以对典型的空间信息进行建模。
ShuffleNetV2 [27]在反向残差块之前和之后使用channel split module和channel shuffle module。
后来,==MobileNetV3 [15]与neural architecture search algorithms [50]相结合,以搜索最佳激活函数和不同深度的反向残差块的扩展率。==
此外,MixNet [39],EfficientNet [38]和ProxylessNAS [2]也==采用不同的搜索策略来搜索最优的深度可分离卷积或标量以控制网络权重==,例如扩展比,输入分辨率, 网络深度和宽度。
最近,Zhou等人 [49]重新考虑了利用深度可分离卷积的方法,提出了MobileNeXt,该网络为mobile networks采用了一个经典的bottleneck 结构。
2.2. Attention Mechanisms
SENet首先成功,其次CBAM扩展了它的思想,后来的作品,如GENet [17],GALA [22],AA [1]和TA [28],通过采用不同的空间注意力机制或设计高级注意力块来扩展了这一思想。后来的作品,如GENet [17],GALA [22],AA [1]和TA [28],通过采用不同的空间注意力机制或设计高级注意力块来扩展了这一思想。
non-local/self-attention网络由于其建立spatial或cahnnel关注的能力而近来非常受欢迎。 典型示例包括NLNet [43],GCNet [3],$A^2Net$ [7],SCNet [25],GSoP-Net [11]或CC-Net [19],所有这些都利用nonlocal来获取不同类型的空间信息。 然而,==由于self-attention模块内部的大量计算,它们通常在大型模型中使用[13,46],但不适用于移动网络。==
与这些利用昂贵且沉重的non-local或self attention blocks的方法不同,我们的方法考虑了一种捕获positional information和channel-wise relationships以增强移动网络特征表示的更有效方法。 通过将2D全局池化操作分解为两个一维编码过程,我们的方法比其他具有轻量级属性的注意方法(例如SENet [18],CBAM [44]和TA [28])执行效果要好得多。
Coordinate Attention
corordinate attention block即插即用模块,对于任意中间层特征张量$X=[x_1,x_2,…,x_C]\in R^{C\times H\times W}$作为输入,输出具有扩展表示的变换张量$Y=[y_1,y_2,…,y_C]$,与$X$具有相同的size。
3.1. Revisit SENet
==标准卷积本身很难对通道关系进行建模。明确建立渠道的相互依存关系可以提高模型对信息通道的敏感性,而信息通道对最终分类决策的贡献更大==
3.2. Coordinate Attention Blocks
坐标注意力同时对channel关系和带精确位置信息的long-range依赖进行编码,通过以下两个步骤:
coordinate information embedding and coordinate attention generation.
3.2.1
Coordinate Information Embedding
$$
z_c=\frac{1}{H\times W}\sum^H_{i=1}\sum^W_{j=1}x_c(i,j)
$$
上面的是SENet,==直接利用全局池化,很难保留位置信息,所以用于目标分类任务,本文提的坐标注意力考虑了位置信息,所以可以用于语义分割。==
将上面的分解为一对1D feature encoding operations。
具体来说,给定输入X,我们使用池化核的两个空间范围(H,1)或(1,W)分别沿水平坐标和垂直坐标对每个通道进行编码。因此,第c个通道的高度为h处的输出可以表示为:
$$
z_c^h(h)=\frac{1}{W}\sum_{0\le i<W}x_c(h,i)
$$
相似的,第c个通道的宽度为w处的输出可以表示为:
$$
z_c^w(w)=\frac{1}{H}\sum_{0\le j<H}x_c(j,w)
$$
上面的两个变换分别沿两个空间方向聚合了特征,从而生成了一对方向感知的特征图。
==这两个变换还使我们的注意力块能够捕获沿一个空间方向的远距离依赖关系,并沿另一空间方向保留精确的位置信息,这有助于网络更准确地定位感兴趣的对象。==
==冥冥之中感觉拆分还可以改进==
3.2.2 Coordinate Attention Generation
上面两个式子具有全局感受野并编码了精确的位置信息,为了利用由此产生的表现形式,我们提出了第二种转换,称为坐标注意力生成。
我们的设计参考以下三个标准:
- ==新的转换应当尽可能简单和开销小,考虑到移动应用环境==
- ==充分利用捕获的位置信息,从而可以准确的突出显示感兴趣的区域==
- ==有效捕获取channel间的关系==
对于之前生成的两个特征图,我们首先将他们连接起来,然后将他们发送到共享的1x1卷积变换函数F1,产生
$$
f=\delta(F_1([z^h,z^w]))
$$
$[.,.]$表示沿空间维度的concat操作,$\delta$是一个非线性激活函数,$f\in R^{C/r(H+W)}$是在水平方向和垂直方向上对空间信息进行编码的中间特征图。
然后,我们沿着空间维将$f$拆分为两个单独的张量:$f^h\in R^{C/r\times H}$ $f^w\in R^{C/r\times W}$
另外两个1x1卷积变换$F_h$和$F_w$被使用来分别使$f^h$和$f^w$和输入$X$具有相同的channel:
$$
g^h=\sigma(F_h(f^h))\
g^w=\sigma(F_w(f^w))
$$
$\sigma$是sigmoid function
$g^h$和$g^w$然后将被扩展并用做注意权重,最终输出$Y$如下:
$$
y_c(i,j)=x_c(i.j)\times g^h_c(i)\times g^w_c(j)
$$
Discussion:
==两个注意力图中的每个元素反映了感兴趣的对象是否存在于相应的行和列中。这种编码过程使我们的注意力集中在更准确地定位感兴趣对象的确切位置上,从而帮助整个模型更好地识别。==
3.3. Implementation
采用两种经典的轻量级体系结构,他们具有不同的类型的残差块,即:MobileNetV2和MobieNeXt
下图3显示了如何将注意力块插入MobileNetV2中的inverted residual block和MobileNeXt中的sandglass block。

Experiments
4.1. Experiment Setup
PyTorch SGD decay $momentum =0.9$ 权重衰减设置为$4\times 10^{-5}$ 余弦衰减策略
$NVIDIA \quad GPU\quad batchsize=256$
$baseline=MobileNetV2$ $epoch=200$
4.2. Ablation Studies
HaloNet
Info
21CVPR oral
Scaling Local Self-Attention for Parameter Efficient Visual Backbones
Abstract
==Self-attention: parameter-independent scaling of receptive fields &content-dependent interactions==
==convolutions: parameter-dependent scaling &content-independent interactions==
相比卷积基线模型,self attention模型在==准确性-参数折中==方面就有令人鼓舞的改进
==旨在开发自我注意力模型,该模型不仅可以胜过规范的基线模型,而且可以胜过高性能的卷积模型。==
我们提出了两种self attention的扩展,与self attention的更有效实现相结合,可以提高这些模型的速度,内存使用率和准确性。
我们利用这些改进来开发新的self attention模型系列HaloNets,该系列在ImageNet分类基准的参数受限设置上达到了最先进的精度。
在初步的转移学习实验中,我们发现HaloNet模型的性能优于更大的模型,并且具有更好的推理性能。 在诸如对象检测和实例分割之类的较艰巨的任务上,我们简单的local self attention和卷积混合算法在非常强大的基线上显示出改进。==These results mark another step in demonstrating the efficacy of self-attention models on settings traditionally dominated by convolutional models.==
Introduction
另一方面,Transformer[57]表明,==自我注意是捕获句子中单词之间整体相互作用的一种有效且计算效率高的机制。==
==self-attention具有使其非常适合视觉的几个特性:==
- 基于内容的交互,而不是与内容无关的卷积交互
- 参数无关的感受野尺寸缩放,而不是卷积的参数依赖缩放
- 捕获用于较大图像的长期依赖关系的经验能力
- 处理和整合视觉中出现的多种类型数据的灵活性,例如像素,点云,序列条件信息和图形
self attention也可以被认为是一种适应性非线性,可与计算机视觉中非线性处理技术的悠久历史相提并论,例如双边滤波[39]
Bilateral filtering: Theory and applications.
和非局部手段[4]。
A non-local algorithm for image denoising.
我们引入了non-centered版本的local attention,它可以通过haloing高效的映射到现有硬件。
==尽管我们的公式破坏了平移等变性,但是与SASA中使用的centered local self-attention相比,既提高了吞吐量,又提高了准确性。==
我们还介绍了用于多尺度特征提取的跨步self-attention下采样操作。
我们利用之前的技术开发了一个新的local self-attention模型家族,HaloNet,可在不同参数范围内达到最先进的性能
==我们进行了详细的研究,以揭示self attention和conv模型如何以不同的方式scale。我们最后讨论了将self attention应用于视觉的当前局限性和未来工作的构想。==
Models and Methods
尽管我们的模型使用self attention代替conv来捕获像素之间的空间相互作用,但它们==采用了现代卷积神经网络(CNN)的一些重要架构特征==
计算多尺度特征层次结构,==为此,开发了一个strided self-attention, a natural extension of strider convolutions==
==为了处理较大分辨率下的计算成本问题(global attention是不可行的),我们遵循局部处理这一相当普遍的原则,并使用spatially restricted forms of self-attention 并使用空间受限形式的self-attention==
但是与SASA不同,==我们放弃了强制的平移等变性而代之以更好的硬件利用率,从而提高了速度-精度的权衡==
另外,尽管我们使用local self attention,==但每个像素的感受野非常大(up to 18x18),并且 SEction 4.2.2表明较大的感受野有助于处理较大的图像。==
2.1. Self-attention can generate spatially varying convolutional filter
最近的工作[8]
On the relationship between self-attention and convolutional layers
表明,==具有足够数量的头部的self attention和正确的几何偏差可以模拟卷积,这表明自注意力和卷积之间存在更深的关系==。
==The perspective that we discuss in this section is one that views self-attention as generating spatially varying filters, in contrast to the reuse of the same filter across every spatial location in standard convolutions [14].卷积是相同滤波器的重用,而self-attention是生成性的空间变换滤波==
为了观察这一点,我们将self-attention和conv作为一般空间池化函数的特定实例进行编写,
To observe this, we write self-attention and convolution as specific instances of a general spatial pooling function.
给定$input$ $x\in R^{H\times W\times C_{in}}$ ,定义了一个local 2D pooling 函数,该函数计算位置$(i,j)$的输出,$y_{ij}\in R^{c_{out}}$:
$$
y_{ij}=\sum_{a,b\in N(i.j)}f(i,j,a,b)x_{ab}
$$
CAA
Info
Abstract
==分别计算空间注意力和通道注意力,然后直接将他们融合会导致特征表示冲突conflicting feature representation==
Channelized Axial Attention通道化轴向注意力,以==降低计算复杂度并无缝集成通道注意力和轴向注意力axial attention==
introduction
==对于特征图中的每个像素,spatial self attention使它的表示与更接近的像素的表示更相似,而channel attention会在整个特征图中找到重要的通道,并对提取的特征应用不同的权重。==

==分别计算空间注意和通道注意不仅增加了计算复杂度,而且还可能导致特征表示的重要性冲突。例如,对于属于特征图中部分区域的像素,某些channel对于channel attention可能显得很重要,但是spatial attention可能具有自己的视角,这是通过将整个特征图中的相似度相加得出的, 并削弱了channel attention的影响。==
channel attention可能忽略从整体角度获得的局部区域表示,而那可能是spatial attention所要求的。 因此,将spatial attention结果与channel attention结果直接融合可能会为像素表示产生不正确的重要性权重。==在本文的“experiments”部分中,我们开发了一种方法来可视化特征表示的冲突对最终分割结果的影响.==
为了以一种互补的方式无缝有效地结合空间注意力和通道注意力的优势,我们提出了一种通道化轴向注意力(CAA),它基于重新定义的轴向注意力以减少self attention的计算成本。
Related Work
Methods
A.Spatial Self-Attention
$f(x_{i,j}, x_{m,n}) = softmax_{m,n}(θ(x_{i,j})^Tθ(x_{m,n}))$
这是non-local中的相似度函数,$f$采用该形式,$\theta$表示1x1卷积
B.Spatial Axial Attention
将应用在NLP和全景分割的轴线注意力改造过来!
在轴线注意力中,spatial attention map分别沿着列轴和行轴计算。
我们将沿Y轴计算的partial attention map称为“列注意”,将“行注意”沿X轴计算的partial attention map称为“行注意”。
对于第j-th column attention,当前位置$(i,j)$与其他每个位置$(m,j)$进行self attention。
$$
A_{col}(x_{i,j},x_{m,j})=softmax_m(\theta(x_{i,j})^T(x_{m,j}))
$$
每个点和同列上的点计算相似度,所以最终特征图$A_{col}$的维度为:$W\times H\times H$
同理,$A_{row}$的维度为$H\times W\times W$
行注意力和列注意力都是基于backbone产生的特征图计算,这与Axial-deeplab不同,==Axial-deeplab的row attention map是基于col attention map计算的==
通过使用相同的特征作为输入,最终输出$y_{i,j}$对特征$x_{i,j}$的依赖会有很大的加强,而不是像Aixal-deeplab那样使用skip-connection。
最终输出可以表示为:
==就直接两个维度的连续相乘的激活呗==
为了方便表示,如下:
$$
\alpha_{i,j,m}=A_{col}(x_{i,j},x_{m,j})g(x_{m,j})\
\beta_{i,j,n}=A_{row}(x_{i,j},x_{i,n})\sum_{\forall m}\alpha_{i,j,m}
$$
式子5可以方便的表示为:
C. The Proposed Channelized Axial Attention
为了解决双重注意力的特征冲突问题,并无缝结合空间注意力和通道注意力的优势,我们提出了一种新颖的通道化轴向注意力,该注意力采用了中间结果$\alpha_{i,j,m}$和$\beta_{i,j,n}$
就是在这个过程中嵌入了通道注意力。
D. Grouped Vectorization
E. Going Deeper in Channel Attention
为了进一步提高性能,我们探索了更强大的通道注意力设计。
就是探索了一下全连接呗,说了等于没说