Twins:重新思考视觉Transformer中的空间注意力机制

2023-10-27

点击下方卡片,关注“CVer”公众号

AI/CV重磅干货,第一时间送达

Twins: Revisiting the Design of Spatial Attention in
Vision Transformers

  • 单位:美团、阿德莱德大学

  • 论文: http://arxiv.org/abs/2104.13840

  • 代码: https://github.com/Meituan-AutoML/Twins

视觉注意力模型(Vision Transformer [1])已然是视觉领域的第一热点,近期工作如金字塔 Transformer 模型 PVT [2] ,Swin [3] 聚焦于将其应用于目标检测、分割等稠密任务。将 Vision Transformer 适配下游任务、高效地对计算模式进行重新设计成为当下研究的重点。

美团和阿德莱德大学合作的这篇文章 Twins 提出了两种新的 Transformer 架构,分别起名叫 Twins-PCPVT 和 Twins-SVT。

第一种架构 Twins-PCPVT 通过将 PVT 中的位置编码(和 DeiT一样的固定长度可学习位置编码)进行替换为该团队前不久在 CPVT [4] 中提出的条件位置编码 (Conditional Positional Encodings) ,可以在分类和下游任务上可以直接获得大幅的性能提升,尤其是在稠密任务上,由于条件位置编码 CPE 支持输入可变长度,使得视觉 Transformer 能够灵活处理来自不同空间尺度的特征。该架构说明 PVT 在仅仅通过 CPVT 的条件位置编码增强后就可以媲美或超越 Swin 的性能,这个发现证实 PVT 性能不及 Swin 的原因是使用了不适合的位置编码。可见能够灵活处理变化分辨率的位置编码如 CPE,对于下游任务的影响很大。

图 1: Twins-PCPVT-S 模型结构,使用了CPVT 提出的条件位置编码器(PEG)

第二种架构 Twins-SVT (图2)基于对当前全局注意力的细致分析,对注意力策略进行了优化改进,新的策略融合了局部-全局注意力机制,作者将其类比于卷积神经网络中的深度可分离卷积 (depthwise separable convolution),并命名作空间可分离自注意力(Spatially Separable Self-Attention,SSSA)。与深度可分离卷积不同的是,Twins-SVT 提出的空间可分离自注意力( 图3) 是对特征的空间维度进行分组计算各组的自注意力,再从全局对分组注意力结果进行融合。

图 2: Twins-SVT-L 模型结构,右侧为两个相邻 Encoder 的结合方式

图3. Twins 提出的空间可分离自注意力机制 (SSSA)

空间可分离自注意力使用局部-全局注意力交替(LSA-GSA)的机制,可以大幅降低计算成本,复杂度从输入的平方 O(H2W2d) 降为线性 O(mnHWd),通过将分组计算的注意力进行归纳并作为计算全局自注意力的键值,使得局部的注意力可以传导到全局。SVT 在实现上完全采用现有主流的深度学习框架实现,不需要额外的底层适配。具体的计算方式有公式(1)给定。

文中还给出了这种新型注意力(SSSA)的实现代码。

实验结果

ImageNet-1k 分类任务

Twins 的双胞胎模型 Twins-PCPVT 和 Twins-SVT 在分类任务上同等量级模型均取得 SOTA 结果,吞吐率也占优。

Twins 在下游任务中, 严格对齐了 PVT 的配置,对现有方法进行了公平对比,并在此基础上比肩 Swin。

ADE20K 分割

在语义分割任务上 ADE20K ,Twins 模型做主干网也达到了 SOTA 结果。

COCO 目标检测(Retina 框架)

在经典的 COCO 目标检测任务中,使用 Retina 框架,Twins 模型大幅超过了 PVT,且证明 PVT 在通过 CPVT 的编码方式增强之后,可以超过或媲美 Swin 同量级模型。

COCO 目标检测(Mask-RCNN 框架)

在 Mask-RCNN 框架下,Twins 模型在 COCO 上有较好的性能优势。

参考文献

  1. An image is worth 16x16 words: Transformers for image recognition at scale  https://openreview.net/pdf?id=YicbFdNTTy

  2. Pyramid Vision Transformer: A Versatile Backbone for Dense Prediction without Convolutions https://arxiv.org/pdf/2102.12122.pdf

  3. Swin Transformer: Hierarchical Vision Transformer using Shifted Windows https://arxiv.org/pdf/2103.14030.pdf

  4. Conditional Positional Encodings for Vision Transformers  https://arxiv.org/abs/2102.10882

论文PDF和代码下载

后台回复:Twins,即可下载上述论文和代码

后台回复:CVPR2021,即可下载CVPR 2021论文和代码开源的论文合集

后台回复:Transformer综述,即可下载最新的两篇Transformer综述PDF

重磅!Transformer交流群成立

扫码添加CVer助手,可申请加入CVer-Transformer 微信交流群,方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch和TensorFlow等群。

一定要备注:研究方向+地点+学校/公司+昵称(如Transformer+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群

▲长按加小助手微信,进交流群

▲点击上方卡片,关注CVer公众号

整理不易,请给CVer点赞和在看

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Twins:重新思考视觉Transformer中的空间注意力机制 的相关文章

  • 在 Pandas 中按日期获取有效合约

    我在检测 pandas DataFrame 中的活动合约方面遇到了一些困难 假设每一行都是一个协商 对于每一行 我有两列 initial date 和 end date 我想知道的是按日期划分的活跃合约数量 到目前为止我做了一个非常低效的方
  • 为什么 .setGeometry() 不改变 QWidget 实例的大小?

    我想使用 QWidget 更改 QPushButton 的大小 setGeometry https doc qt io qtforpython 5 PySide2 QtWidgets QWidget html PySide2 QtWidge
  • on_delete=models.PROTECT 和 on_delete=models.CASCADE 在 Django 模型上有什么作用?

    我对 Django 很熟悉 但最近注意到有一个on delete models CASCADE and on delete models PROTECT模型的选项 on delete models CASCADE and on delete
  • 从字符串到类型的词法转换

    最近 我尝试用Python存储和读取文件中的信息 遇到了一个小问题 我想从文本文件中读取类型信息 从 string 到 int 或 float 的类型转换非常有效 但从 string 到 type 的类型转换似乎是另一个问题 当然 我尝试了
  • 如何从 PyCharm 项目中获取我的“exe”[重复]

    这个问题在这里已经有答案了 通过 PyCharm 在 Python 上编写一些项目 我想从中获取一个exe文件 我尝试过 另存为 gt XXX exe 但是 当我尝试执行它时出现错误 此类操作系统不支持该文件 附注 我有win7 x64 它
  • Pandas重置索引未生效[重复]

    这个问题在这里已经有答案了 我不确定我在哪里误入歧途 但我似乎无法重置数据帧上的索引 当我跑步时test head 我得到以下输出 正如您所看到的 数据帧是一个切片 因此索引超出范围 我想做的是重置该数据帧的索引 所以我跑test rese
  • 带图像的简单 GUI [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我试图在简单的 GUI 上显示一些卡
  • 如果字段值在外部列表中,Django 会注释布尔值

    想象一下我有这个 Django 模型 class Letter models Model name models CharField max length 1 unique True 还有这个列表 vowels a e i o u 我想查询
  • 定义函数后对其进行修饰?

    I think答案是否定的 但我似乎找不到明确的说法 我有以下情况 def decorated function function functools wraps function def my function print Hello s
  • Python Kivy - 在本机网络浏览器中打开 url 的应用程序

    我尝试制作一个简单的应用程序 在单击 Screen One 上的按钮后 在 Kivy 中打开一个网页 我使用了这个主题 Python 在应用程序中直接显示网络浏览器 iframe https stackoverflow com questi
  • 如何在python中检索aws批处理参数值?

    流程 Dynamo DB gt Lambda gt 批处理 如果将角色 arn 插入动态数据库 它是从 lambda 事件中检索的 然后使用submit job角色 arn 的 API 被传递为 parameters role arn ar
  • 获取列表中倒数第二个元素[重复]

    这个问题在这里已经有答案了 我可以通过以下方式获取列表的倒数第二个元素 gt gt gt lst a b c d e f gt gt gt print lst len lst 2 e 有没有比使用更好的方法print lst len lst
  • 将 Pandas 列中的列表拆分为单独的列

    这是我在 pandas 数据框中的 特征 列 Feature Cricket 82379 Kabaddi 255 Reality 4751 Cricket 15640 Wildlife 730 LiveTV 13 Football 4129
  • 如何列出 python PDB 中的当前行?

    在 perl 调试器中 如果重复列出离开当前行的代码段 可以通过输入命令返回到当前行 点 我无法使用 python PDB 模块找到任何类似的东西 如果我list如果我自己离开当前行并想再次查看它 似乎我必须记住当前正在执行的行号 对我来说
  • Matplotlib Scatter - ValueError:RGBA 序列的长度应为 3 或 4

    我正在尝试为我的功能绘制图表 但不断收到此错误 ValueError RGBA sequence should have length 3 or 4 每当我只有 6 种形状时 代码就可以完美运行 但现在我将其增加到 10 种 它就不起作用了
  • 将一个列表的元素除以另一个列表的元素

    我有两个清单 比如说 a 10 20 30 40 50 60 b 30 70 110 正如你所看到的 列表 b 由一个列表的元素总和组成 其中 window 2 b 0 a 0 a 1 10 20 30 etc 如何获得另一个列表 该列表由
  • 查找给定节点的最高权重边

    我在 NetworkX 中有一个有向图 边缘的权重从 0 到 1 表示它们发生的概率 网络连通性非常高 所以我想修剪每个节点的边缘 只保留最高概率的节点 我不确定如何迭代每个节点并仅保留最高权重in edges在图中 有没有一个networ
  • Python 3.2 中 **kwargs 和 dict 有什么区别?

    看起来Python的很多方面都只是功能的重复 除了我在 Python 中的 kwargs 和 dict 中看到的冗余之外 还有什么区别吗 参数解包存在差异 许多人使用kwargs 并通过dict作为论据之一 使用参数解包 Prepare f
  • 如何将列表字典写入字符串而不是 CSV 文件?

    This 堆栈溢出问题 https stackoverflow com questions 37997085 how to write a dictionary of lists to a csv file将列表字典写入 CSV 文件的答案
  • Django South - 将 null=True 字段转换为 null=False 字段

    我的问题是 转变的最佳做法是什么null True场变成null False使用 Django South 的字段 具体来说 我正在与ForeignKey 你应该先写一个数据迁移 http south aeracode org docs t

随机推荐

  • 分享ckplayerX2/ckplayerX1/dplayer/video.js/aliplayer/74player/xgplayer等自制网页播放器,高手勿喷,新手一定会喜欢的。你确定不进来看看。

    CKX2player 演示地址 http m3u8 22web org ckx2 index php url https vod2 buycar5 cn 20201007 yPvaZ7C1 index m3u8 下载地址 https 21s
  • AES与DES加密解密算法

    一 AES简介 AES Advanced Encryption Standard 高级加密标准 的出现 是因为以前使用的DES算法密钥长度较短 已经不适应当今数据加密安 全性的要求 因此2000年10月2日 美国政府宣布将比利时密码学家Jo
  • 循环链表的作用

    作用是循环链表是无须增加存储量 仅对表的链接方式稍作改变 即可使得表处理更加方便灵活 循环链表中没有NULL指针 涉及遍历操作时 其终止条件就不再是像非循环链表那样判别p或p next是否为空 而是判别它们是否等于某一指定指针 如头指针或尾
  • Vijava 学习笔记之 VirtualMachine(状态(通电状态))

    package com vmware util import com vmware vim25 mo ServiceInstance import java net URL Created by vixuan 008 on 2015 4 1
  • ubuntu安装新版QQ

    我一直无法解决Ubuntu QQ问题 而最近我重装ubuntu之后在网络上找到与QQ相关的内容 网上有大神开发出了新版的wineQQ 解决了我们对QQ的需求 经过尝试 完成了QQ安装 如图 安装的是wine QQ 那么 1 首先安装wine
  • Ubuntu20.04安装Xmind

    安装思维导图软件MindMaster 安装 安装包下载地址https www edrawsoft cn download mindmaster all 找到Linux下的Ubuntu版本 并点击下载安装包 如下图 是我下载时选择的版本 然后
  • inner class java_Java内部类(Inner Class)详解

    Java内部类 Inner Class 详解 简单的说 内部 inner 类指那些类定义代码被置于其它类定义中的类 而对于一般的 类定义代码不嵌套在其它类定义中的类 称为顶层 top level 类 对于一个内部类 包含其定义代码的类称为它
  • html5随机颜色怎么写,js随机颜色代码的多种实现方式

    JS随机颜色有很多地方要用到 比如大家看到很多标签连接都是五颜六色 那就需要到这个了 下面开始 方法思路总共有二 一是准备一组漂亮的候选颜色 二是随机生成颜色 实现1 var getRandomColor function return f
  • java加密算法之DES篇

    闲话不多说 我们直接上干货 加密 public static String encrypt String datasource try DESKeySpec desKey new DESKeySpec PASSWORD getBytes 创
  • 关于type_info总结

    c 没有反射机制 我们可以经由过程c 的说话特点去实现同样的功能 本文介绍应用type info实现的一些发射特点 1 type info简介 class type info public CRTIMP virtual type info
  • 2003文件服务器配置,win2003文件服务器配置

    win2003文件服务器配置 内容精选 换一换 该操作只在跨AZ部署HA场景下才需要执行 EVS无法实现跨AZ磁盘共享 所以在跨AZ部署HA场景中 需要规划三台弹性云服务器 在每台云服务器上各绑定一块SCSI盘并配置iSCSI用作SBD S
  • 知网查论文时怎么筛选核心期刊?

    在知网检索论文时不知道如何筛选出核心期刊进行查看 解决方法如下图
  • 【数据结构】Stack 栈

    数据结构源码 接口 public interface Stack
  • hisi3521叠加OSD水印

    freetype下载安装 下载 https download savannah gnu org releases freetype 解压 tar xvf freetype 2 4 10 tar gz 进入freetype文件目录 cd fr
  • 编译原理三大经典书籍(龙书 虎书 鲸书)

    1 龙书 Dragon book 英文名 Compilers Principles Techniques and Tools 作者 Alfred V Aho Ravi Sethi Jeffrey D Ullman 中文名 编译原理技术和工具
  • 谐振电路 - 01 介绍

    1 定义 对于包含电容和电感及电阻元件的无源一端口网络 其端口可能呈现容性 感性及电阻性 当电路端口的电压U和电流I 出现同相位 电路呈电阻性时 称之为谐振现象 这样的电路 称之为谐振电路 缩写是 LLC 谐振电路的本质是电容中的电场能与电
  • panosim引入新python库提示——SyntaxError: future feature annotations is not defined

    标题错误原因 根本原因是python的版本冲突 高版本python的下载的库给低版本用 背景 panosim自带python为3 6 引入新库的方式为 将其他python版本下载的库放到 Lib site packages下 我用cmd终端
  • 自学黑客(网络安全),一般人我劝你还是算了吧

    一 自学网络安全学习的误区和陷阱 1 不要试图先成为一名程序员 以编程为基础的学习 再开始学习 我在之前的回答中 我都一再强调不要以编程为基础再开始学习网络安全 一般来说 学习编程不但学习周期长 而且实际向安全过渡后可用到的关键知识并不多
  • 解决 WebStorm 很卡的问题

    1 打开安装WebStorm的位置 找到WebStorm exe vmoptions文件 我的文件位置 2 设置 一般最大的设置为1G已经够了 我原来的设置是7百多 Xmx1024m Xms526m 3 如果还不行 再忽略项目中的node
  • Twins:重新思考视觉Transformer中的空间注意力机制

    点击下方卡片 关注 CVer 公众号 AI CV重磅干货 第一时间送达 Twins Revisiting the Design of Spatial Attention inVision Transformers 单位 美团 阿德莱德大学