关注极市平台公众号(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的定义:
yi=∑j∈Riα(xi,xj)⊙β(xj)y_i = \sum_{j \in \mathcal{R}{i}} \alpha(x_i, x_j) \odot \beta(x_j) yi​=j∈Ri∑​α(xi​,xj​)⊙β(xj​)
其中,⊙\odot⊙表示Hadamard乘积xix_ixi​表示特征图在i位置处的特征向量,R(i)\mathcal{R}(i)R(i)表示局部近邻空间。函数β\betaβ将对输入局部特征进行编码并将被用于特征聚合,聚合参数为自适应参数并通过α(xi,xj)\alpha(x_i, x_j)α(xi​,xj​)确定。

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

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

  • Summation: δ(xi,xj)=ψ(xi)+ϕ(xj)\delta(x_i, x_j) = \psi(x_i) + \phi(x_j)δ(xi​,xj​)=ψ(xi​)+ϕ(xj​)
  • Subtraction: δ(xi,xj)=ψ(xi)−ϕ(xj)\delta(x_i, x_j) = \psi(x_i) - \phi(x_j)δ(xi​,xj​)=ψ(xi​)−ϕ(xj​)
  • Concatenation: δ(xi,xj)=[ψ(xi),ϕ(xj)]\delta(x_i, x_j) = [\psi(x_i), \phi(x_j)]δ(xi​,xj​)=[ψ(xi​),ϕ(xj​)]
  • Hadamard product: δ(xi,xj)=ψ(xi)⊙ϕ(xj)\delta(x_i, x_j) = \psi(x_i) \odot \phi(x_j)δ(xi​,xj​)=ψ(xi​)⊙ϕ(xj​)
  • Dot product: δ(xi,xj)=ψ(xi)Tϕ(xj)\delta(x_i, x_j) = \psi(x_i)^{T}\phi(x_j)δ(xi​,xj​)=ψ(xi​)Tϕ(xj​)

Position Encoding

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

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

Patchwise Self-attention

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

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

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

  • Star-product: δ(xRi)=[ψ(xi)Tϕ(xj)]∀j∈R(i)\delta(x_{\mathcal{R}_i}) = [\psi(x_i)^T\phi(x_j)]_{\forall j \in \mathcal{R}(i)}δ(xRi​​)=[ψ(xi​)Tϕ(xj​)]∀j∈R(i)​
  • Clique-product: δ(xRi)=[ψ(xj)Tϕ(xk)]∀j,k∈R(i)\delta(x_{\mathcal{R}_i}) = [\psi(x_j)^T\phi(x_k)]_{\forall j,k \in \mathcal{R}(i)}δ(xRi​​)=[ψ(xj​)Tϕ(xk​)]∀j,k∈R(i)​
  • Concatenation: δ(xRi)=[ψ(xi),ϕ(xj)]∀j∈R(i)\delta(x_{\mathcal{R}_i}) = [\psi(x_i), \phi(x_j)]_{\forall j \in \mathcal{R}(i)}δ(xRi​​)=[ψ(xi​),ϕ(xj​)]∀j∈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)R(i)用于控制特征聚合的上下文数量,为平衡计算复杂度和效果,作者在后四个阶段的只注意模块中设为7×77\times 77×7,而第一个则设为3×33\times 33×3(出于计算复杂度、显存消耗考虑)。
  • Instantiations:通过调节网络不同阶段的自注意力模块的数量控制网络的容量,相关配置参数将上表,基本上是参考ResNet进行设置的。

Comparison

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

  • 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.

    关于自注意力模块的几个参数设置为:r1=16,r2=4r_1=16,r_2=4r1​=16,r2​=4,权值共享的通道数设为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模型而言,提升核尺寸对于参数没有任何影响。综合考量后,作者将核尺寸设置为7×77\times77×7。

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

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

Conclusion

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

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


△关注极市平台,获取最新CV干货

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

  1. 腾讯优图贾佳亚:当AI进入产业应用时代时,计算机视觉技术更应该服务于人才对!...

    作者 | 刘晶晶 出品 | CSDN云计算(ID:CSDNcloud) 从移动支付的自动贩卖机到刷脸支付的智能货柜: 从亲自到柜台验证到人脸核身远程开卡: 从排队买票.排队进门的糟糕旅游体验到提前预约 ...

  2. 腾讯优图贾佳亚:人工智能的多模态发展

    https://www.toutiao.com/i6714210231108239876/ "人工智能的终极应用距离我们到底还有多久?" 贾佳亚的答案是:可能还需要50-100年. ...

  3. 【转】贾佳亚港中文团队冠军技术分享:最有效的COCO物体分割算法

    转自:http://www.sohu.com/a/201822261_473283 [新智元导读]物体分割(instance segmentation)是如今视觉领域最热最核心的一个问题.在这届国际图 ...

  4. 港中文周博磊团队:无监督条件下GAN潜在语义识别指南

    点击上方"机器学习与生成对抗网络",关注"星标" 获取有趣.好玩的前沿干货! 作者:Yujun Shen.Bolei Zhou   机器之心编译 参与:蛋酱.魔 ...

  5. 腾讯优图一年记:贾佳亚的专访笔记

    腾讯优图一年记:贾佳亚的专访笔记 关于规模 关于服务 业务成熟的原因 我们选择任务时考虑的因素有三点(目标:尽量高效利用资源) 关于技术与需求之间的gap 学术的人才来工业界的优势 学术界与工业界的g ...

  6. 腾讯优图实验室贾佳亚:加入优图第一年 | 专访

    机器之心原创,作者:邱陆陆. 贾佳亚是 2017 年 5 月加入优图实验室,担任总经理一职的.1 年 3 个月之后,他以「可以看到.可以感受到.可以用到」为标准,精选了优图实验室的一众技术,在上海完成 ...

  7. 华科出身,师从贾佳亚,从鹅厂到创业,90后如何登上胡润U30?

    作者 | 八宝粥 出品 | CSDN(id:CSDNnews) 随着AI 技术的发展,国内外涌现出一大批基于AI 落地的工业项目,例如无人车,巡检机器人.仓储智能系统等等.2019年,一家以 AI 视 ...

  8. 离开腾讯首创业,贾佳亚谈人工智能 2.0 革命,技术究竟该如何变革?

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 一周前,原腾讯杰出科学家.优图实验室 X-Lab 负责人贾佳亚离职并创立了一家新的 ...

  9. 尘埃落定!AI 大牛贾佳亚离开腾讯优图,创立思谋科技,投身差异化 AI 创业

    2020-02-28 01:05 导语:祝福!!! 雷锋网AI 科技评论消息,原腾讯杰出科学家.优图实验室X-Lab负责人.香港中文大学计算机科学工程系终身教授贾佳亚近日创立一家新的 AI 公司- 思 ...

最新文章

  1. 在SAP PI中建立场景
  2. perl中的几个模块使用.
  3. Web 压力测试工具 --Apache AB
  4. IOCP之accept、AcceptEx、WSAAccept的区别
  5. js判断是微信、QQ内置浏览器打开页面
  6. treemap 倒序_EXCEL按条件倒序提取,倒数第三次成绩?
  7. 元素隐式具有 “any” 类型,因为类型“Shared”没有索引签名问题解决思路
  8. 事件EVENT与waitforsingleobject的使用以及Mutex与Event的区别
  9. Windows监听进程是否退出C++
  10. Java 用反射设置对象的属性值
  11. java辅助百度贴吧_【图片】【共同上进】新手java代码辅助代写贴,新手福音! 申精!_java吧_百度贴吧...
  12. C语言基础练习题初学者可参考
  13. 计算机操作系统-操作系统的定义
  14. WinEdit编辑器中中文乱码
  15. TriCore 与 RT-Thread(TC264 移植)
  16. vue 组件自己不能删除自己,$destroy从组件树上删除+从视图上消失
  17. t460p和t470p对比评测_老模具小升级 ThinkPad T470p商务本评测
  18. 【转载】关于Python Beautifulsoup的详细说明
  19. 【Linux】单网卡设置双ip的方法
  20. docker cuda的devel和runtime包

热门文章

  1. C语言定时器触发回调函数
  2. python效验车辆VIN码小程序
  3. 邻接矩阵的存储方式实现图的广度和深度优先遍历
  4. mc是用java写的吗_都说MC的代码特别差劲,你觉得它在所有游戏中,能排第几?...
  5. 笔记本加装固态硬盘的问题
  6. course83_lab2_8086的寻址方式
  7. 怎么把计算机里面的解压到桌面上,电脑桌面怎么加压文件
  8. 微信小程序:用wxs进行过滤处理
  9. wordcount程序中,输出文件夹中为空
  10. 什么是docker,它与虚拟机有什么区别?