比CNN更强有力,港中文贾佳亚团队提出两类新型自注意力网络|CVPR2020
加入极市专业CV交流群,与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度 等名校名企视觉开发者互动交流!
同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。关注 极市平台 公众号 ,回复 加群,立刻申请入群~
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
的定义:
其中,表示Hadamard
乘积表示特征图在i位置处的特征向量,表示局部近邻空间。函数将对输入局部特征进行编码并将被用于特征聚合,聚合参数为自适应参数并通过确定。
构成了该自注意力的核心,它用于计算待聚合特征的权值。为简化不同自注意力的描述,对其进行分解得到如下形式:
其中,而则根据待聚合成对特征输出一个特征向量,而函数则据此输出用于特征聚合的权值标量。函数使得可以尽可能的去探索之间的相关性,而不需要考虑维度对齐问题。
作者探索了下面几种形式的相关函数,其中表示可训练的变换,两者具有相同的输出维度。
Summation: Subtraction: Concatenation: Hadamard product: Dot product:
Position Encoding
pair self-attention
的一个突出特征:特征向量是独立的进行处理,仅依赖于近邻特征计算权值,而不会依赖范围之外的其他特征。为了对模型提供空间上下文信息,作者对其进行了扩展并编码的位置信息。编码方式如下:
将水平和垂直坐标分别进行归一化,归一化到.归一化后的两个坐标系进行拼接并融入另一个可训练的线性子网络,该子网络将输出每个位置的位置编码信息。作者采用近邻点坐标与中心点的差值进行位置信息编码,该位置编码信息将增广前述并产生协同作用。
Patchwise Self-attention
作者研究的另一种自注意力机制为patchwise self-attention
,其公式定义如下:
其中表示块特征向量,表示同空间维度的块特征向量构成的tensor。
在patchwise self-attention
中,作者允许构建的额权值向量直接作用于,该权值集成了更多的近邻特征向量信息。需要注意的是:patchwise self-attention
不再是一组操作,它不再具有pairwise self-attention
的置换不变性,它可以自适应的从不同位置编码不同的特征信息,从而具有强于卷积的性能。
类似的,作者对进行解耦表示为:
类似地,作者研究了下面几种形式的函数:
Star-product: Clique-product: Concatenation:
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:局部范围用于控制特征聚合的上下文数量,为平衡计算复杂度和效果,作者在后四个阶段的只注意模块中设为,而第一个则设为(出于计算复杂度、显存消耗考虑)。 Instantiations:通过调节网络不同阶段的自注意力模块的数量控制网络的容量,相关配置参数将上表,基本上是参考 ResNet
进行设置的。
Comparison
上表对比了自注意力模块与常规卷积、标量注意力机制之间的区别所在。
Convolution:常规卷积具有固定的核权值,不会随内容而变化,但和权值会跨通道变化(但这种变化是训练确定的,很难说是真正意义上的通道自适应); Scalar Attention:标量注意力的聚合权值会根据内容随位置发生变换,但存在跨通道共享。 Vector attention:作者所设计的自注意力模块则同时具有内容自适应与通道自适应性。
Experiments
作者在ImageNet
数据集上进行了所提方法的实验与验证。相关训练信息如下:
Epoch
:100Learning rate
: cosine learning rate with base 0.1Standard data augmentation
: random crop, random flip, normalizeSyncSGD
: momentum=0.9, weight decay=0.0001Label Smoothing
: regularization coefficient=0.1BatchSize
: 256.关于自注意力模块的几个参数设置为:,权值共享的通道数设为8.
上图给出了所提SAN与对标ResNet
的性能差异对比。从中可以看到:(1) pairwise
模型媲美甚至优于对标的ResNet
模型;(2)patchwise
模型以极大的优势超越了对标的ResNet
。
上表对比了自注意力模块中不同相关函数下的性能,从中可以看到:(1)对于pairwise
模型而言,summation、subtraction以及Hadamard乘积
具有相似的精度,并优于其他两种相关函数;(2)对于patchwise
模型而言,concatenation
取得最佳性能。
上表对比了自注意力模块中不同映射函数的性能对比。从中可以看到:(1)对于pairwise
模型而言,两个全连接层即可取得最佳性能;(2) 对于patchwise
模型而言,不同的配置具有相似的性能(考虑到内存占用与计算量问题,作者最终选用了两个全连接层的配置)。
上表验证了自注意力模块中使用三个离散变换函数的必要性。从中可以看到:使用三个独立的变换函数具有最佳性能,使用独立变换函数的另外一个优势是降低计算复杂度。
上表对比了自注意力模块中不同局部范围(即卷积核尺寸)下的性能对比。从中可以看到:(1)在常规卷积中,提升卷积核尺寸会提升计算复杂度与内存占用;(2)在SAN中,性能先随核尺寸增大而提升,而后达到饱和。对于pairwise
模型而言,提升核尺寸对于参数没有任何影响。综合考量后,作者将核尺寸设置为。
最后,作者评价了位置编码在pairwise模型中的重要性,结果见上表。从中可以看到:位置编码具有很重要的影响:位置编码能带来5%的性能提升。
此外,作者从两个方面验证了模型的鲁棒性。(1) 旋转鲁棒性(见上表),pairwise
模型具有更佳的抗旋转性鲁棒性,这也与前面提到的patchwise
不具有置换不变性不谋而合;(2) 对抗鲁棒性(见下表),patchwise
具有更佳的对抗攻击鲁棒性;(3)相比常规卷积网络,自注意力网络具有更佳的鲁棒性和泛化性能。
Conclusion
作者研究了自注意力在图像识别模型中的有效性,作者提出了两种形式的自注意力:pairwise
与patchwise
。作者通过实验得到以下几点重要发现:
基于 pairwise
的网络取得了匹配甚至超越纯卷积网络的性能,这意味着计算机视觉中深度学习的成功并非与卷积网络紧密相连,还有其他的方案具有媲美甚至更优的判别能力(比如permutation- and cardinality-invariance);基于 patchwise
的网络取得了超越纯卷积网络的性能,这意味着块自注意力可能在其他计算机视觉中取得更好的性能增益;相比标量(scale/dot-product)自注意力机制(当前主流注意力机制),向量(vector)自注意力更有力且具有明显优势。