【论文笔记】Exploring Self-attention for Image Recognition

简述

  这篇文章发表在CVPR2020。作者提出一种将self-attention机制应用到图像识别领域的方法。作者认为,使用卷积网络进行图像识别任务实际上在实现两个函数:

  1. 特征聚集(feature aggregation): 即通过卷积核在特征图上进行卷积来融合特征的过程。
  2. 特征变换(feature transformation): 在卷积完成后进行的一系列线性和非线性变换(比如全连接和激活函数。这一部分通过感知机就能很好地完成。

  在以上观点的基础上,作者提出使用self-attention机制来替代卷积作为特征聚集方法。为此,作者考虑两种self-attention形式:pairwise self-attention和patchwise self-attention。用这两种形式的self-attention机制作为网络的basic block提出SAN网络结构。与经典卷积网络ResNet进行对比,SAN网络具有更少参数和运算量,同时在ImageNet数据集上的分类精确度有较大提升。

Pairwise Self-attention

  pairwise self-attention计算公式如下:
yi=∑j∈R(i)α(xi,xj)⊙β(xj)\mathbf y_i = \sum\limits_{j\in \mathcal{R}(i)}\alpha(\mathbf x_i,\mathbf x_j) \odot \beta(\mathbf x_j)yi=jR(i)α(xi,xj)β(xj)
其中,⊙\odot表示Hadamard product(矩阵的对应位置相乘),x\mathbf{x}x是特征图上一点,y\mathbf{y}y是经过self-attention模块运算后得到的特征图上的对应点。R(i)\mathcal{R}(i)R(i)是对应位置iii周围的局部区域(类似卷积过程中卷积核所在区域)。α(xi,xj)\alpha(\mathbf x_i,\mathbf x_j)α(xi,xj)是权重向量,β(xj)\beta(\mathbf x_j)β(xj)是对xj\mathbf{x}_jxj进行embedding后的结果。
  从上述计算公式中可以看出,pairwise self-attention方式和卷积方式最大的区别在于权重的确定:卷积核的权重在学习完成后就是一个固定的标量,再用这个标量与特征图上一点的每个维度相乘。而在pairwise self-attention方法中,权重通过α(xi,xj)\alpha(\mathbf x_i,\mathbf x_j)α(xi,xj)计算得到,而且计算结果是一个向量,再用这个向量与β(xj)\beta(\mathbf x_j)β(xj)对位相乘。显然这种方式考虑到了特征在不同通道上的权重大小。
  接下来,作者对α(xi,xj)\alpha(\mathbf x_i,\mathbf x_j)α(xi,xj)进行了分解:
α(xi,xj)=γ(δ(xi,xj))\alpha(\mathbf x_i,\mathbf x_j) = \gamma(\delta(\mathbf x_i,\mathbf x_j))α(xi,xj)=γ(δ(xi,xj))
这样做的好处在于,在尝试不同δ\deltaδ函数的选择是就不必考虑向量的维度问题,将维度匹配问题交给γ\gammaγ函数解决。γ={Linear→ReLU→Linear}\gamma=\{Linear \to ReLU \to Linear\}γ={LinearReLULinear},作者尝试了四种δ\deltaδ函数的选择:

此外,作者还将位置iii和位置jjj的坐标信息纳入γ(δ(xi,xj))\gamma(\delta(\mathbf x_i,\mathbf x_j))γ(δ(xi,xj))的计算过程之中。

Patchwise Self-attention

  patchwise self-attention计算公式如下:
yi=∑j∈R(i)α(xR(i))j⊙β(xj)\mathbf y_i = \sum\limits_{j\in \mathcal{R}(i)}\alpha(\mathbf{x}_{\mathcal{R}_{(i)}})_j \odot \beta(\mathbf x_j)yi=jR(i)α(xR(i))jβ(xj)
其中,xR(i)\mathbf x_{\mathcal{R}(i)}xR(i)R(i)\mathcal{R}(i)R(i)所在区域的特征图,α(xR(i))\alpha(\mathbf{x}_{\mathcal{R}_{(i)}})α(xR(i))权重张量。可以看到,patchwise self-attention与pairwise self-attention的区别就在于patchwise self-attention中没有对(xi,xj)(\mathbf x_i, \mathbf x_j)(xi,xj)的配对计算,而是整个区域用来计算得到一个权重张量,再用下标$j
来索引这个张量与来索引这个张量与\beta (\mathbf{x}_j)KaTeX parse error: Expected 'EOF', got '&' at position 7: 对位相乘. &̲emsp; 同样地,…\alpha$函数进行分解:
α(xR(i))=γ(δ(xR(i)))\alpha(\mathbf{x}_{\mathcal{R}_{(i)}})=\gamma(\delta(\mathbf x_{\mathcal{R}(i)}))α(xR(i))=γ(δ(xR(i)))
尝试δ\deltaδ函数三种不同选择:

Self-attention Block和SAN网络的设计

  这里就是实际过程中引入self-attention的basic block设计:

如图所示,最左边的分支实现α\alphaα函数过程,中间分支实现β\betaβ函数过程,而最右边分支是一个残差连接过程。
  利用这样的block就替代了传统CNN中conv+bn/relu的过程便得到了SAN网络。具体网络堆建参数见论文。

实验部分

  首先是采用Self-attention Block的SAN与采用卷积方式的ResNet在ImageNet上的实验结果对比:

可以看到,与ResNet相比,SAN不仅运算量更低,top-1和top5精确度都有明显提高。而选择patchwise方式的self-attention效果更明显。
  接下来作者进行了一系列对照试验,包括:

  1. 关系函数δ\deltaδ的不同选择结果对比;
  2. 映射函数γ\gammaγ的不同选择结果对比;
  3. 转换函数ϕ,ψ\phi, \psiϕ,ψ的不同结果对比;
  4. R(i)\mathcal{R}(i)R(i)的大小选择;

结论

  从实验结果来看,作者提出的使用self-attention block作为网络的基础block替代卷积操作的方法十分有效。说明了深度学习的成功不一定非要局限于卷积网络,视觉任务中还能找到其他有效的特征学习方法。patchwise self-attention方法在ImageNet上的明显提升也说明了这种向量自注意力方法比常用的点积自注意力方法更有研究价值。
  遗憾的也是令我困惑的一点是,SAN的特征提取性能较ResNet有所提高,为什么作者没有将这个backbone应用到其他视觉任务如目标检测、实例分割和人体姿态估计的算法中,例如比较Faster R-CNN算法在使用SAN相比ResNet作为backbone时的mAP提升。

【论文笔记】Exploring Self-attention for Image Recognition相关推荐

  1. 论文笔记--Exploring Translation Similarities for Building a Better Sentence Aligner

    论文笔记--Exploring Translation Similarities for Building a Better Sentence Aligner 1. 文章简介 2. 文章背景 3. 文 ...

  2. 论文笔记 《Selective Search for Object Recognition》

    论文笔记 <Selective Search for Object Recognition> 项目网址:http://koen.me/research/selectivesearch/ 一 ...

  3. [论文笔记]AAAI-2021-Continual Learning for Named Entity Recognition

    [论文笔记] 2021-AAAI-Continual Learning for Named Entity Recognition 0 写在前面 什么是持续学习? 我们人类有能够将一个任务的知识用到另一 ...

  4. 【论文笔记】SlowFast Networks for Video Recognition

    目录 1,摘要 2,介绍 3. SlowFast 网络 3.1 Slow路径 3.2 Fast 路径 3.3 横向连接 3.4 网络实现 参考文献 参考 1,摘要 本论文提出了用于视频识别的SlowF ...

  5. (论文笔记)An Attention Enhanced Graph Convolutional LSTM Network for Skeleton-Based Action Recognition

    An Attention Enhanced Graph Convolutional LSTM Network for Skeleton-Based Action Recognition 文章目录 An ...

  6. 【论文笔记】Multi-Interactive Attention Network for Fine-grained Feature Learning in CTR Prediction

    <Multi-Interactive Attention Network for Fine-grained Feature Learning in CTR Prediction>论文学习 ...

  7. 论文笔记《Selective Search for object recognition》

    周一对图像语义分割的情况大致了解些情况.从周二开始花了2天半的时间读了第一篇文章<Selective Search for object recognition >. 文章名:<物体 ...

  8. 论文笔记-Two-Stream Convolutional Networks for Action Recognition in Videos

    原文地址:http://blog.csdn.net/lk274857347/article/details/73559112 论文贡献: 提出了结合空域和时域网络的two_stream卷积网络结构. ...

  9. 论文笔记——Deep Residual Learning for Image Recognition(论文及相关代码)

    啊先说一些题外话,在刚刚进入深度学习的时候就在知乎上看到关于何恺明大神的phd的传奇经历.大概就是何大牛顶着光环选手的称号进的MSRA,peer的到第1-2年就已经各种论文刷到飞起,但是何大牛到第三年 ...

  10. Attention Is All You Need 论文笔记

    Attention Is All You Need 论文笔记 文章目录 Attention Is All You Need 论文笔记 背景 Tansformer模型简介 Attention & ...

最新文章

  1. 集结阿里云数据库最强阵容 DTCC 2019 八大亮点抢先看
  2. 用python解析html[SGMLParser]
  3. ajax和cs的关系,fetch、axios 与Ajax之间关系
  4. Python安装MySQL库详解(解决Microsoft Visual C++ 9.0 is required )
  5. 面试必会系列 - 1.8 Spring IOC / AOP原理
  6. React中redux原理图
  7. 7-290 鸡兔同笼 (10 分)
  8. 编码原理(附一)--算术编码
  9. ubuntu mysql 内存满了_Ubuntu 下 mysql 卸载后重安装时遇到的问题
  10. 亚信科技java笔试题答案_大神帮忙,亚信面试题目
  11. [GRE] 填空机经 Section56-60
  12. 客户端navicat安装教程
  13. caniuse npm安装
  14. matlab 绘图与动画制作
  15. 电商跟微商的区别是什么呢
  16. python智能机器人原理_人工智能和Python是什么关系?详细分析!
  17. Mac OS X 背后的故事(二)——Linus Torvalds的短视
  18. CH343芯片应用—硬件设计指南
  19. 前端与美工职能上的区别
  20. 如何有效预防XSS?这几招管用!!!

热门文章

  1. laravel与thinkphp相比有哪些优势?他们之间的区别/优缺点在哪
  2. 全球及中国工业互联网产业运行态势与布局状况调研报告2022-2028年
  3. 理解serialVersionUID是什么?有什么用?如何生成?
  4. ubuntu解决软件下载速度过慢
  5. linux中查看resin进程,resin安装
  6. 软件破解入门教程和解密手册——PE文件格式
  7. 云宏武汉大学国际软件学院桌面云
  8. 瑞星杀毒软件网络版介绍
  9. C#实现的基于SMTP协议的E-MAIL电子邮件发送客户端软件
  10. 算法基础 计算机数学课件,第4章计算机制图数学基础_中国地质大学:数字测图_ppt_大学课件预览_高等教育资讯网...