点上方计算机视觉联盟获取更多干货

仅作学术分享,不代表本公众号立场,侵权联系删除

转载于:作者丨happy

来源丨AIWalker    编辑丨极市平台

AI博士笔记系列推荐

周志华《机器学习》手推笔记正式开源!可打印版本附pdf下载链接

paper: https://arxiv.org/abs/2105.13677

code: https://github.com/wofmanaf/ResT

本文是南京大学提出的一种高效Transformer架构:ResT,它采用了类似ResNet的设计思想:stem提取底层特征信息、stages捕获多尺度特征信息。与此同时,为解决MSA存在的计算量与内存占用问题,提出了EMSA模块进一步降低计算量与内存消耗。所提ResT在图像分类、目标检测以及实例分割等任务均取得了显著的性能提升,比如在ImageNet数据上,在同等计算量前提下,所提方法取得了优于PVT、Swin的优异性能,实乃一种强力骨干网络。

Abstract

本文提出一种高效多尺度Vision Transformer:ResT,它可作为图像中识别的通用骨干架构。不同于现有采用固定分辨率+标准Transformer模块的Transformer模型,它有这样几个优势:

  • (1) 提出了一种内容高效的多头自注意力模块,它采用简单的深度卷积进行内存压缩,并跨注意力头维度进行投影交互,同时保持多头的灵活性;

  • (2) 将位置编码构建为空域注意力,它可以更灵活的处理任意分辨率输入,且无需插值或者微调;

  • (3) 并未在每个阶段的开始部分进行序列化,我们把块嵌入设计成重叠卷积堆叠方式。

我们在图像分类与下游任务上对所提ResT进行了性能验证,实验结果表明:所提ResT大幅优于现有骨干架构,比如,ResNet18(69.7%)、PVT-Tiny(75.1%)相似大小的模型下,所提方法取得了79.5%的top1精度,这说明它是一种强有力的骨干网络。

Method

上图给出了ResT的架构示意图,它具有与ResNet相似的结构方案,比如采用stem模块提取底层特征,后接四个stage捕获多尺度特征。每个stage包含三个成分:一个块嵌入模块,一个位置编码模块以及L个高效Transformer模块。具体来说,在每个stge开始前,块嵌入模块用于降低输入的分辨率并扩展通道维度;位置编码用于约束位置信息提升块嵌入的特征提取能力;然后将所得送入到后续高效Transformer模块中。

Rethinking of Transformer Block

标准的Transformer模块由MSA与FFN以及残差链接构成,在MSA与FFN之前还采用LN。对于输入token
















,每个Transformer模块的输出表示如下:

其中,MSA的单头SA与FFN的定义分别如下:

MSA与FFN的计算复杂度分别为


































Efficient Transformer Block

如前所述,MSA有两个缺点:(1) 计算量随









平方增长,这会导致较大的训练与推理负载;(2) MSA的每个头仅负责输入的部分子集,这会影响模型的性能,尤其当通道维度非常小时。

为解决上述问题,我们提出了上图所示的高效多头自注意力模块。可以看到:

  • 类似MSA,EMSA首先采用投影集合得到Q;

  • 为压缩内存,2D输入将被reshap为3D形式,然后送入深度卷积以因子










    降低空域维度;

  • 将上述所得特征reshape为2D形式并送入后两个投影集合得到K与V;

  • 然后采用下面公式计算注意力,注:Conv为






    卷积,用于对不同头进行信息交互。为补偿Conv导致的多样性素食,我们在Softmax之后添加了IN。

  • 最后,每个头的输出进行拼接并线性 投影构成最终的输出。

EMSA的计算复杂度为,具有比MSA更低的计算量。此时,高效Transformer模块定义如下:

Patch Embedding

标准的Transformer采用一序列token作为输入,以ViT为例,3D图像















需要拆分为






的块,这些块再平展为2D形式并映射为隐嵌入

























。然而,这种直接的tokenization难以捕获底层特征信息(比如边缘、角点)。此外,ViT中的tokens长度是固定的,这使其难以进行下游任务(比如目标检测、实例分割)适配。

为解决上述问题,我们构建了一种高效多尺度骨干ResT用于稠密预测。正如前面所提到的,每个阶段的高效Transformer模块在同尺度同分辨率上跨通道、空域维度进行处理。因此,块嵌入模块同样需要渐进的扩展通道维度,同时降低空域分辨率。

类似于ResNet,我们采用stem模块以倍率4收缩宽高维度。为高效捕获底层特征信息,我们引入了一种简单而有效的方式:堆叠三个






卷积,stride分别为212,前两个后接BatchNorm与ReLU。在234阶段,采用块嵌入模块下采样空间分辨并提升通道维度,这与stride=2的卷积作用类似。

Position Encoding

位置编码对于序列顺序的探索非常关键,ViT一文将可学习参数加到输入tokens中编码位置信息。假设















为输入,













表示位置参数,那么编码后输入表示如下:



















然而,此时要求位置长度与输入tokens长度相同,这无疑会限制了其应用。

为解决上述问题,我们需要设计一种新的变长位置编码,我们将上式修改为如下:

























其中








表示组线性操作,组数为c。

除了上述形式外,我们还可以采用更灵活的注意力机制得到像素级权值。因此,我们提出了一种简单且高效的像素注意力(Pixel-wise Attention,PA)模块进行位置编码。具体来说,PA采用采用






深度卷积计算像素权值,然后采用sigmoid激活,那么带PA的位置编码可以描述如下:

由于每个stage的输入token通过卷积得到,我们可以将位置编码嵌入到块嵌入模块中,整体结果见上图。注:这里的PA可以采用任意空域注意力替换,这使得ResT中的PE极为灵活。

Linear Head

分类头采用全局均值池化+线性分类器的方式,ResT的架构配置信息见下表。

Experiments

接下来,我们在常用基准任务上进行所提方案验证,包含ImageNet数据上的图像分类、COCO数据上的目标检测与实例分割等。

Image Classification

上表给出了图像分类任务上不同方案的性能对比,从中可以看到:

  • 在小模型方面,ResT-small凭借相似的复杂度以79.6%精度大幅超过PVT-T的75.1%;

  • 在中等模型方面,ResT-base凭借相似复杂度以81.6%超过Swin-T的81.3%;

  • 在大模型方面,ResT-Large凭借相似复杂度以83.6%精度超过Swin-S的83.3%;

  • 相比ConvNet,如RegNet,所提ResT凭借相似复杂度取得了更佳的性能;

  • 总而 言之,在不同复杂度模型方面,ResT均显著优于现有模型。

Object Detection and Instance Segmentation

上表给出了RetinaNet架构下的不同骨干模型在目标检测上的性能对比,可以看到:

  • 在小模型方面,相比PVT-T,ResT-Small取得了2.8的指标提升;

  • 在大模型方面,相比PVT-S,ResT-Base取得了0.8的指标提升。

上表给出了实例分割任务上的性能对比,可以看到:

  • 在小模型方面,相比PVT-T,ResT-Small取得了1.8boxAP指标提升,1.0MaskAP指标提升;

  • 在大模型方面,相比PVT-S,ResT-Base分别取得了2.1与1.9的指标提升。

Ablation Study

接下来,我们对所提ResT进行消融实验分析,主要从stem、EMSA、PE三个角度进行对比分析。

从下图的Table5可以看到:ResT中的stem比PVT、ResNet中的Stem更加高效,分别取得了0.92%、0.64%的性能提升

从上图的Table6可以看到:

  • 当移除卷积操作与IN后,模型性能下降1.16%,这说明长序列与灵活性的组合对于注意力非常重要;

  • 当移除IN后,模型同样出现了大幅性能下降,我们将其归因于不同头之间的多样性遭到了破坏。

上表对比了不同PE的性能对比,从中可以看到:

  • 当移除PA编码后,模型性能从72.88%下降到71.54%,这说明位置编码对于ResT非常重要;

  • LE与GL具有相似性能,而PA以0.84%精度优于GL,这说明:空域注意力可用于进行位置编码建模。

-------------------

END

--------------------

我是王博Kings,985AI博士,华为云专家、CSDN博客专家(人工智能领域优质作者)。单个AI开源项目现在已经获得了2100+标星。现在在做AI相关内容,欢迎一起交流学习、生活各方面的问题,一起加油进步!

我们微信交流群涵盖以下方向(但并不局限于以下内容):人工智能,计算机视觉,自然语言处理,目标检测,语义分割,自动驾驶,GAN,强化学习,SLAM,人脸检测,最新算法,最新论文,OpenCV,TensorFlow,PyTorch,开源框架,学习方法...

这是我的私人微信,位置有限,一起进步!

王博的公众号,欢迎关注,干货多多

王博Kings的系列手推笔记(附高清PDF下载):

博士笔记 | 周志华《机器学习》手推笔记第一章思维导图

博士笔记 | 周志华《机器学习》手推笔记第二章“模型评估与选择”

博士笔记 | 周志华《机器学习》手推笔记第三章“线性模型”

博士笔记 | 周志华《机器学习》手推笔记第四章“决策树”

博士笔记 | 周志华《机器学习》手推笔记第五章“神经网络”

博士笔记 | 周志华《机器学习》手推笔记第六章支持向量机(上)

博士笔记 | 周志华《机器学习》手推笔记第六章支持向量机(下)

博士笔记 | 周志华《机器学习》手推笔记第七章贝叶斯分类(上)

博士笔记 | 周志华《机器学习》手推笔记第七章贝叶斯分类(下)

博士笔记 | 周志华《机器学习》手推笔记第八章集成学习(上)

博士笔记 | 周志华《机器学习》手推笔记第八章集成学习(下)

博士笔记 | 周志华《机器学习》手推笔记第九章聚类

博士笔记 | 周志华《机器学习》手推笔记第十章降维与度量学习

博士笔记 | 周志华《机器学习》手推笔记第十一章稀疏学习

博士笔记 | 周志华《机器学习》手推笔记第十二章计算学习理论

博士笔记 | 周志华《机器学习》手推笔记第十三章半监督学习

博士笔记 | 周志华《机器学习》手推笔记第十四章概率图模型

点分享

点收藏

点点赞

点在看

南京大学开源!ResT:高效Transformer架构!相关推荐

  1. 超越PVT、Swin,南大开源高效Transformer:ResT​

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨happy 来源丨AIWalker 编辑丨极市平台 导读 本文 ...

  2. 高效Transformer层出不穷,谷歌团队综述文章一网打尽

    选自arXiv 作者:Yi Tay 等 机器之心编译 编辑:魔王 自 2017 年诞生以来,Transformer 模型在自然语言处理.计算机视觉等多个领域得到广泛应用,并出现了大量变体.近期涌现的大 ...

  3. 谷歌研究院出品:高效 Transformer 模型最新综述

    2021-01-02 15:23:28 编译 | Mr Bear 编辑 | 陈彩娴 近年来,基于自注意力机制的 Transformer 模型在自然语言处理.计算机视觉.强化学习等领域的学术研究中取得了 ...

  4. 已开源!谷歌将AutoML应用到Transformer架构,实现机器翻译最佳性能

    铜灵 发自 凹非寺 量子位 出品 | 公众号 QbitAI AutoML在NLP领域中的应用又多了新资源. 谷歌最新博客表示,此前在语言建模和翻译等序列任务中,Transformer架构已经展现出了极 ...

  5. 谷歌将AutoML应用于Transformer架构,翻译结果飙升,已开源!

    来源:新智元 本文约1600字,建议阅读8分钟. Evolved Transformer不仅实现了最先进的翻译结果,与原始的Transformer相比,它还展示了语言建模的改进性能. [ 导读 ]为了 ...

  6. 谷歌将AutoML应用于Transformer架构,翻译结果飙升,已开源

    https://www.toutiao.com/a6702613730661761548/ 2019-06-15 12:44:29 [新智元导读]为了探索AutoML在序列域中的应用是否能够取得的成功 ...

  7. 谷歌、DeepMind提出高效Transformer评估基准

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:机器之心 AI博士笔记系列推荐 周志华<机器学习> ...

  8. 太赞了!谷歌、DeepMind提出高效Transformer评估基准

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:机器之心 AI博士笔记系列推荐 周志华<机器学习> ...

  9. 六项任务、多种数据类型,谷歌、DeepMind提出高效Transformer评估基准

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来自:机器之心 自诞生以来,Transformer 在不同领域得到了广泛应用,研究人员 ...

最新文章

  1. .bat脚本自动yes_第四章: Python脚本获取聚宽(JQData)免费行情数据
  2. 捡到银行卡套取密码取现1万多元,犯了信用卡诈骗罪被判7个月
  3. 模版方法模式在Spring框架中的应用
  4. 长大了Java! 提出Java桌面版
  5. 鸿蒙系统内核学习笔记(一)-HarmonyOS 轻内核基础功能
  6. 计算机程序设计基础试题与答案,2018年4月自考计算机基础与程序设计02275试题及答案.doc...
  7. Qt Creator怎样更改默认构建目录
  8. 孤立森林(Isolation Forest)算法剖析
  9. 一款基于jquery和css3实现的摩天轮式分享按钮
  10. 保险的现金价值是什么意思?
  11. 女神相册密码忘记了,我只用Python写了20行代码
  12. web.xml中配置DispatcherServlet前端控制器和CharacterEncodingFilter字符过滤器后web-app标签显红报错
  13. 不安全的Url重定向原理概述和案例
  14. python编程语言解析_【笔记】Python之解析式详解
  15. 215.数组中的第K个最大元素
  16. 用Java实现一个学生管理系统(附源码)
  17. java实例分析宠物商店_Java实现宠物商店管理
  18. 从12306.cn谈大网站架构与性能优化
  19. 跳转打开多个标签导致浏览器崩溃问题
  20. (三)Animation创建动画

热门文章

  1. 所有controller interceptor_filter、interceptor、aspect不知如何选择
  2. vue中tab选项卡刷新页面后保持选中状态_Altium Designer中的快捷键汇总
  3. 北航 计算机学院 2011级学生会,北航学生会主席在2011级新生开学典礼发言稿.doc...
  4. 还在维护吗_你的模具生锈了吗?来了解一下这些防锈维护事项
  5. ansible解决python版本依赖
  6. scanf输入数组_清除C / C ++中的输入缓冲区,妈妈再也不用担心我的学习
  7. c# 整数除法取整_Java 如何取整整数除法的结果?
  8. ajax与后台php,怎么在thinkPHP5中使用ajax实现与后台数据交互
  9. matlab 如何读数据文件,详解如何在python中读写和存储matlab的数据文件(*.mat)
  10. express ajax分页实例,DevExpress Navigator 数据分页 示例