CVPR2020|比CNN更强有力,港中文贾佳亚团队提出两类新型自注意力网络

关注极市平台公众号(ID:extrememart),获取计算机视觉前沿资讯/技术干货/招聘面经等
原文链接:比CNN更强有力,港中文贾佳亚团队提出两类新型自注意力网络

Exploring Self-attention for Image Recognition

paper:https://hszhao.github.io/papers/cvpr20_san.pdf

code:https://github.com/hszhao/SAN

该文是香港中文大学贾佳亚老师团队投于CVPR2020的一篇关于动态滤波器卷积的文章。对动态滤波器卷积实现不明白的小伙伴可能看该文会非常费力。本文首先在不改变原文意思的基础上进行简单的翻译与介绍,在后续的文章中本人将从另一个角度(当双边滤波遇到深度学习)对该文进行解析并进行复现和转换。

Abstract

近期的研究表明:自注意力可以作为图像识别模型的基础模块而存在。作者探索了自注意力机制的变种并对其在图像识别中的有效性进行了评价。作者考虑了两种形式的自注意力机制:(1) pairwise self-attention,它是标准点积注意力的扩展,本质上是一组操作;(2) patchwise self-attention一种比卷积更强有力的的操作,其对应的模型明显优于标准卷积版本。作者还通过实验验证了所提表达方式的鲁棒性,并证实自注意力网络从鲁棒性和泛化性能方面均优于标准卷积网络。

看完上面这一段介绍,大家有没有感觉看的云里雾里,不知所云。这到底是个什么鬼?没关系,下面的原文翻译会让你更加的不知所云,拭目以待!

Method

在卷积网络中,网络中的OP有两个作用:(1) 特征聚合(feature aggregation),对局部近邻特征采用核参数进行加权得到输出特征;(2) 特征变换(feature transformation),它有后接线性映射以及非线性函数达成(即BatchNorm+ReLU)。

作者认为:前述两个功能可以解耦。如果可以采用一种特殊的机制进行特征聚合,那么采用感知器(它包含线性映射与非线性函数)进行逐点特征变换。作者主要聚焦于特征聚合部分进行研究。其实说白了就是尝试提出一种特殊的机制替代标准卷积。

常规卷积通过固定核进行特征聚合,即全图权值共享,不会随特征内容而自适应变化,同时参数量会随着聚合特征数量增加而增加。鉴于此,作者提出几种特征聚合机制并构建了一个高性能图像识别框架(它交错执行特征聚合(自注意力)和特征变换(逐点感知器))。

作者探索了两种类型的自注意力机制:(1) pairwise self-attention;(2) patchwise self-attention.

Pairwise Self-attention

首先,给出Pair Self-attention的定义:
y i = j R i α ( x i , x j ) β ( x j ) y_i = \sum_{j \in \mathcal{R}{i}} \alpha(x_i, x_j) \odot \beta(x_j)
其中, \odot 表示Hadamard乘积 x i x_i 表示特征图在i位置处的特征向量, R ( i ) \mathcal{R}(i) 表示局部近邻空间。函数 β \beta 将对输入局部特征进行编码并将被用于特征聚合,聚合参数为自适应参数并通过 α ( x i , x j ) \alpha(x_i, x_j) 确定。

α ( x i , x j ) \alpha(x_i,x_j) 构成了该自注意力的核心,它用于计算待聚合特征的权值。为简化不同自注意力的描述,对其进行分解得到如下形式:
α ( x i , x j ) = γ ( δ ( x i , x j ) ) \alpha(x_i, x_j) = \gamma(\delta(x_i, x_j))
其中,而 δ \delta 则根据待聚合成对特征 x i , x j x_i, x_j 输出一个特征向量,而 γ \gamma 函数则据此输出用于特征聚合的权值标量。 γ \gamma 函数使得可以尽可能的去探索 x i , x j x_i,x_j 之间的相关性,而不需要考虑维度对齐问题。

作者探索了下面几种形式的相关函数 δ \delta ,其中 ψ , ϕ \psi, \phi 表示可训练的变换,两者具有相同的输出维度。

  • Summation: δ ( x i , x j ) = ψ ( x i ) + ϕ ( x j ) \delta(x_i, x_j) = \psi(x_i) + \phi(x_j)
  • Subtraction: δ ( x i , x j ) = ψ ( x i ) ϕ ( x j ) \delta(x_i, x_j) = \psi(x_i) - \phi(x_j)
  • Concatenation: δ ( x i , x j ) = [ ψ ( x i ) , ϕ ( x j ) ] \delta(x_i, x_j) = [\psi(x_i), \phi(x_j)]
  • Hadamard product: δ ( x i , x j ) = ψ ( x i ) ϕ ( x j ) \delta(x_i, x_j) = \psi(x_i) \odot \phi(x_j)
  • Dot product: δ ( x i , x j ) = ψ ( x i ) T ϕ ( x j ) \delta(x_i, x_j) = \psi(x_i)^{T}\phi(x_j)

Position Encoding

pair self-attention的一个突出特征:特征向量 x j x_j 是独立的进行处理,仅依赖于近邻特征计算权值,而不会依赖范围之外的其他特征。为了对模型提供空间上下文信息,作者对其进行了扩展并编码的位置信息。编码方式如下:

将水平和垂直坐标分别进行归一化,归一化到 [ 1 , 1 ] [-1, 1] .归一化后的两个坐标系进行拼接并融入另一个可训练的线性子网络,该子网络将输出每个位置 ( i , j ) (i,j) 的位置编码信息。作者采用近邻点坐标与中心点的差值进行位置信息编码,该位置编码信息将增广前述 δ ( x i , x j ) \delta(x_i, x_j) 并产生协同作用。

Patchwise Self-attention

作者研究的另一种自注意力机制为patchwise self-attention,其公式定义如下:
y i = j R ( i ) α ( x R ( i ) ) j β ( x j ) y_i = \sum_{j \in \mathcal{R}(i)} \alpha(x_{\mathcal{R}(i)})_j \odot \beta(x_j)
其中 x R ( i ) x_{\mathcal{R}(i)} 表示块特征向量, α ( x R ( i ) ) \alpha(x_{\mathcal{R}(i)}) 表示同空间维度的块特征向量构成的tensor。

patchwise self-attention中,作者允许构建的额权值向量直接作用于 β ( x j ) \beta(x_j) ,该权值集成了更多的近邻特征向量信息。需要注意的是:patchwise self-attention不再是一组操作,它不再具有pairwise self-attention的置换不变性,它可以自适应的从不同位置编码不同的特征信息,从而具有强于卷积的性能。

类似的,作者对 α ( x R ( i ) ) \alpha(x_{\mathcal{R}(i)}) 进行解耦表示为:
α ( x R ( i ) ) = γ ( δ ( x R i ) ) \alpha(x_{\mathcal{R}(i)}) = \gamma(\delta(x_{\mathcal{R}_i}))
类似地,作者研究了下面几种形式的 δ \delta 函数:

  • Star-product: δ ( x R i ) = [ ψ ( x i ) T ϕ ( x j ) ] j R ( i ) \delta(x_{\mathcal{R}_i}) = [\psi(x_i)^T\phi(x_j)]_{\forall j \in \mathcal{R}(i)}
  • Clique-product: δ ( x R i ) = [ ψ ( x j ) T ϕ ( x k ) ] j , k R ( i ) \delta(x_{\mathcal{R}_i}) = [\psi(x_j)^T\phi(x_k)]_{\forall j,k \in \mathcal{R}(i)}
  • Concatenation: δ ( x R i ) = [ ψ ( x i ) , ϕ ( x j ) ] j R ( i ) \delta(x_{\mathcal{R}_i}) = [\psi(x_i), \phi(x_j)]_{\forall j \in \mathcal{R}(i)}

Self-attention Block

上图给出了本文所提出的自注意力机制在残差模块中嵌入示意图。输入特征图将经由两个处理流:(1)左边分支用于评估输出注意力权值;(2)右边分支将对输入进行线性变换,为更有效的处理进行降维。前述两个分支的输出将通过Hadamard乘积进行特聚合,聚合后特征将经由规范化操作+非线性激活与最后的非线性层得到与输入同等通道的输出。

看到这里,不知道各位小伙伴是否看懂了作者想要表达的意思?反正我第一次看的时候是没看懂,也不知道到底是怎么做的,看的云里雾里一塌糊涂。没关系,我后面会提供一种更为通用的解释来介绍上述两种自注意力机制

Network Architectures

前面基本上已经把本文的核心全部介绍完毕了,那么接下来就是要说明一下如何利用前述提到的两种模块搭建一个完成的神经网络了。

ResNet不愧是深度学习的里程碑,万能油网络啊,太多太多的网络都是在ResNet的基础上进行修改发paper,造就了太多的高质量paper(比如Res2Net, ResNeXt, MobileNetV2等)。

没有任何意外,作者还是在ResNet的基础上进行改造。下表为改造模型参数列表,作者提供了三种深度的网络SAN10, SAN15, SAN19,它们分贝对应ResNet26, ResNet38, ResNet50

前面给出了作者改造的网络结构:SAN系列。我们从下面几个部分针对该系列模型进行简单的分析。

  • Backbone: SAN的骨干部分包含5个阶段,不同阶段具有不同的空间分辨率,最终输出32倍下采样的特征。每个阶段包含不同数量的自注意力模块,相邻的两个阶段参考``DenseNet通过过渡层(过渡层的作用是降低空间分辨率并提升通道数)桥接。在五个阶段之外,后接一个分来Head模块,该模块由全局均值池化、全连接层以及softmax`构成。
  • Transition:过渡层的用于降低特征空间分辨率,因此可以降低计算复杂度提升感受野。过渡层由BatchNorm、ReLU、MaxPool以及1x1卷积(用于扩增通道维度)构成。
  • Footprint:局部范围 R ( i ) \mathcal{R}(i) 用于控制特征聚合的上下文数量,为平衡计算复杂度和效果,作者在后四个阶段的只注意模块中设为 7 × 7 7\times 7 ,而第一个则设为 3 × 3 3\times 3 (出于计算复杂度、显存消耗考虑)。
  • Instantiations:通过调节网络不同阶段的自注意力模块的数量控制网络的容量,相关配置参数将上表,基本上是参考ResNet进行设置的。

Comparison

image-20200508154027129

上表对比了自注意力模块与常规卷积、标量注意力机制之间的区别所在。

  • Convolution:常规卷积具有固定的核权值,不会随内容而变化,但和权值会跨通道变化(但这种变化是训练确定的,很难说是真正意义上的通道自适应);
  • Scalar Attention:标量注意力的聚合权值会根据内容随位置发生变换,但存在跨通道共享。
  • Vector attention:作者所设计的自注意力模块则同时具有内容自适应与通道自适应性。

Experiments

作者在ImageNet数据集上进行了所提方法的实验与验证。相关训练信息如下:

  • Epoch:100

  • Learning rate: cosine learning rate with base 0.1

  • Standard data augmentation: random crop, random flip, normalize

  • SyncSGD: momentum=0.9, weight decay=0.0001

  • Label Smoothing: regularization coefficient=0.1

  • BatchSize: 256.

    关于自注意力模块的几个参数设置为: r 1 = 16 , r 2 = 4 r_1=16,r_2=4 ,权值共享的通道数设为8.

上图给出了所提SAN与对标ResNet的性能差异对比。从中可以看到:(1) pairwise模型媲美甚至优于对标的ResNet模型;(2)patchwise模型以极大的优势超越了对标的ResNet

image-20200508155542713

上表对比了自注意力模块中不同相关函数下的性能,从中可以看到:(1)对于pairwise模型而言,summation、subtraction以及Hadamard乘积具有相似的精度,并优于其他两种相关函数;(2)对于patchwise模型而言,concatenation取得最佳性能。

image-20200508160024546

上表对比了自注意力模块中不同映射函数的性能对比。从中可以看到:(1)对于pairwise模型而言,两个全连接层即可取得最佳性能;(2) 对于patchwise模型而言,不同的配置具有相似的性能(考虑到内存占用与计算量问题,作者最终选用了两个全连接层的配置)。

image-20200508160324260

上表验证了自注意力模块中使用三个离散变换函数的必要性。从中可以看到:使用三个独立的变换函数具有最佳性能,使用独立变换函数的另外一个优势是降低计算复杂度。

image-20200508160655769

上表对比了自注意力模块中不同局部范围(即卷积核尺寸)下的性能对比。从中可以看到:(1)在常规卷积中,提升卷积核尺寸会提升计算复杂度与内存占用;(2)在SAN中,性能先随核尺寸增大而提升,而后达到饱和。对于pairwise模型而言,提升核尺寸对于参数没有任何影响。综合考量后,作者将核尺寸设置为 7 × 7 7\times7

image-20200508161057454

最后,作者评价了位置编码在pairwise模型中的重要性,结果见上表。从中可以看到:位置编码具有很重要的影响:位置编码能带来5%的性能提升。

此外,作者从两个方面验证了模型的鲁棒性。(1) 旋转鲁棒性(见上表),pairwise模型具有更佳的抗旋转性鲁棒性,这也与前面提到的patchwise不具有置换不变性不谋而合;(2) 对抗鲁棒性(见下表),patchwise具有更佳的对抗攻击鲁棒性;(3)相比常规卷积网络,自注意力网络具有更佳的鲁棒性和泛化性能。

image-20200508161450683

Conclusion

作者研究了自注意力在图像识别模型中的有效性,作者提出了两种形式的自注意力:pairwisepatchwise。作者通过实验得到以下几点重要发现:

  • 基于pairwise的网络取得了匹配甚至超越纯卷积网络的性能,这意味着计算机视觉中深度学习的成功并非与卷积网络紧密相连,还有其他的方案具有媲美甚至更优的判别能力(比如permutation- and cardinality-invariance);
  • 基于patchwise的网络取得了超越纯卷积网络的性能,这意味着块自注意力可能在其他计算机视觉中取得更好的性能增益;
  • 相比标量(scale/dot-product)自注意力机制(当前主流注意力机制),向量(vector)自注意力更有力且具有明显优势。

在这里插入图片描述
△关注极市平台,获取最新CV干货

原创文章 44 获赞 83 访问量 11万+

猜你喜欢

转载自blog.csdn.net/Extremevision/article/details/106076917