self-attention在图像视觉领域的发展

关于self-attention的基本定义,以及在自然语言处理方向的发展,参考self-attention原理和改进方向。图像领域的综述见Transformers in Vision: A Survey

1、图像识别方向

Non-local Neural Networks

论文将self-attention抽象成为了一个如同卷积、循环操作类似的通用神经网络构件non-local,并主要应用于图像视频领域。non-local抽象出的主要思想是,每个位置上的响应都是通过所有位置上的特征加权求和得到的,因此它具有绝对的长程依赖特征。
对于CNN和RNN来说,卷积和循环操作只能处理局部邻域(即局部注意力),长程依赖是通过增加网络深度从而使高层网络具有更大的感受野来实现的,这样做的缺点是1)计算低效;2)优化困难;3)较远距离信息交互复杂。而non-local则可以通过任意距离的信息交互,用很少的网络层就可以实现原深度网络的效果。non-local可以表示为
y i = 1 C ( x ) ∑ ∀ j f ( x i , x j ) g ( x j ) y_i=\frac{1}{\mathcal{C}(x)}\sum_{\forall j}f(x_i, x_j)g(x_j) yi=C(x)1jf(xi,xj)g(xj)
其中 C ( x ) \mathcal{C}(x) C(x)表示归一化函数, f ( x i , x j ) f(x_i,x_j) f(xi,xj)表示 i , j i,j i,j两个位置的关系标量函数, g ( x ) g(x) g(x)表示特征映射函数。non-local和全连接层的差异在于,它保留有位置的相关信息,而全连接层会失去所有位置关系。如果
g ( x j ) = W g x j f ( x i , x j ) = e θ ( x i ) T ϕ ( x j ) , θ ( x i ) = W θ x i , ϕ ( x j ) = W ϕ x j C ( x ) = ∑ ∀ j f ( x i , x j ) g(x_j) = W_g x_j\\ f(x_i, x_j) = e^{\theta(x_i)^T\phi(x_j)},\quad \theta(x_i)=W_\theta x_i, \phi(x_j)=W_\phi x_j\\ \mathcal{C}(x)=\sum_{\forall j}f(x_i, x_j) g(xj)=Wgxjf(xi,xj)=eθ(xi)Tϕ(xj),θ(xi)=Wθxi,ϕ(xj)=WϕxjC(x)=jf(xi,xj)
此时通过softmax转换就是self-attention原有的形式。论文也提到,这里的softmax虽然提供了非线性,但是它并不是self-attention成功的本质,而令 C ( x ) = N \mathcal{C}(x)=N C(x)=N,同时让Embedded Guassian形式的 f ( x i , x j ) = e θ ( x i ) T ϕ ( x j ) f(x_i, x_j) = e^{\theta(x_i)^T\phi(x_j)} f(xi,xj)=eθ(xi)Tϕ(xj)退化为Dot product形式的 f ( x i , x j ) = θ ( x i ) T ϕ ( x j ) f(x_i, x_j) = \theta(x_i)^T\phi(x_j) f(xi,xj)=θ(xi)Tϕ(xj)同样可行。
具体实现以下图为例,输入为1024个通道的 T × H × W T\times H\times W T×H×W视频块,蓝色方块表示 1 × 1 × 1 1\times 1\times 1 1×1×1卷积操作,在计算一个二维attention矩阵的时候需要有reshape和transpose操作。最左边的旁路表示这是一个残差模块,它可以替换原有网络中任意部分的来引入non-local

An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

这篇文章提出的Vision Transformer(ViT)可以说是彻底的打通了transformer在图像和语言领域的应用,即将图像切分成固定 P × P P\times P P×P大小的patch并构成一个类似sentence的一维token序列,输入到一个没有任何改动的transformer encoder中,其余的设定基本和Bert一致(如下图),包括1)CLS位用于最后的表征输出,2)采用两层的MLP作为预训练分类器,而用单线性层作为微调分类器,3)使用可学习的一维positional embedding。

但是还有一些地方是与Bert完全不同的,ViT使用的是有监督的预训练方式,预训练的数据集要远大于微调的下游训练集(JFT有有303M图片,ImageNet-21k有14M图片,而一般的ImageNet只有1.3M图片)。论文也在大规模的自监督预训练方面进行了尝试,但是没有有监督预训练效果好。因此论文的重心就变成了训练数据量大小对ViT和传统的CNN的不同影响。
整体来看,ViT虽然具有全局依赖能力,但是其在图像上的归纳偏置能力(平移不变和局部感知)天然不如CNN,因此在中等规模的训练集上(如ImageNet),CNN的表现依然是最好的。但是实验发现,当训练集规模逐渐扩大,ViT的表现会快速赶上甚至超过CNN,也就是说,归纳偏置能力在数据量的碾压下变得不再重要了。同时,因为self-attention本身的高效性,相同计算量的ViT可以明显超过CNN。论文到这也基本结束了,下面可以列举一些其中比较有意思的结论:

  1. 预训练的时候为了减少计算压力可以使用较低分辨率图像(224),而微调的时候使用高分辨率图像(384)效果更好,这两步使用的patch大小可以保持一致,只是高分辨率图像对应的序列更长,而transformer恰好可以处理变长的序列
  2. positional embedding可以自动学习出patch的二维位置关系,相邻的patch具有相似的embedding。这里embedding的方式可以有多种:1)直接用一维向量,2)对二维的X,Y两个方向分别使用一维向量编码并最后concat,3)相对位置。经过实验后发现这几种方式效果接近,说明对位置的embedding是比较简单的任务,上述几种方法都可以实现
  3. 即使在最底层,self-attention也能整合整张图像的信息,只是在低层attention的距离比较分散,局部和全局都具有,但是到了高层后attention的距离都变得比较大,着重处理全局信息,这一点类似于CNN的感受野。

2、目标检测方向

3、语义分割方向

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
最新的进展之一是将self-attention应用于计算机视觉任务中。Self-attention是一种注意力机制,它在计算机视觉中的应用可以提升图像理解和处理的能力。 在传统的卷积神经网络中,卷积层用于提取图像的局部特征,但是它没有考虑到全局上下文信息。而self-attention可以帮助模型在处理图像时同时关注到局部和全局信息。 最近,一种名为"Transformer"的模型结构引起了广泛关注。Transformer模型使用了self-attention机制,并在机器翻译等自然语言处理任务中取得了显著的成果。这一成功激发了研究者将Transformer应用于计算机视觉领域。 通过在图像的不同位置之间建立关联,self-attention能够捕捉到图像内部的相关性,并将这些信息传递给后续的处理层。这样一来,模型可以更好地理解图像的结构和语义。 最近的研究表明,在使用self-attention计算机视觉模型中,与传统的卷积神经网络相比,可以获得更好的性能。例如,在图像分类、目标检测和图像生成等任务中,self-attention模型能够提供更准确的结果。 总的来说,将self-attention引入计算机视觉领域是一个令人兴奋的方向,它为我们提供了一种新的方法来处理图像信息。未来还有许多值得探索的问题,如如何设计更有效的self-attention机制、如何将其与传统的卷积操作结合等。这些研究将进一步推动计算机视觉技术的发展
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值