当前位置: 首页 > news >正文

ScalableViT网络模型

文章目录

  • 前言
  • 思路构建
  • 网络结构
    • Scalable Self-Attention
    • Interactive Window-based Self-Attention
    • Position Encoding
  • 结论

前言

论文地址:https://arxiv.org/abs/2203.10790
论文代码:https://github.com/Yangr116/ScalableViT

普通的自注意机制依赖于预定义和固定的计算维度。这样限制了模型不能具有面向上下文的泛化,从而带来更多的上下文线索(局部的)和全局表征(全局的)。因此,本文提出了一种可伸缩的自我注意(Scalable Self-Attention,SSA)机制,该机制利用两个伸缩因子来释放查询、键和值矩阵的维度,同时解除它们与输入的绑定。此外,我们提出了一种基于窗口的交互式自注意( Interactive Window-based Self-Attention,IWSA),通过重新合并独立的值标记和聚集相邻窗口的空间信息来建立非重叠区域之间的交互。通过交替叠加SSA和IWSA,Scalable Vision Transformer (ScalableViT)在通用视觉任务上实现了优于SOTA的性能。

关键词:ViT、自我注意机制、分类、检测、语义分割

思路构建

CNNs在过去几年里占据CV的主导地位,这归因于它们在从局部到全局感知建模真实图像的能力。但在整体视觉感知方面仍存在缺陷。这种全局视图对于下游任务至关重要,如目标检测和语义分割。最近,ViT 及其变种使用了transformer编码器来处理图像任务。

transformer的全局感知计算昂贵,因为自我关注是在整个序列上的二次计算。

因此,为了缓解这个问题,提出了Swin transformer模型。典型的Swin Transformer 采用了基于windows的Self-Attention (WSA),它将特征映射划分为许多不重叠的子区域,并使其能够处理线性复杂度的大规模图像。还提出了一种基于移动窗口的自我注意(SWSA),以弥补潜在的长期依赖的损失。

为了深入了解WSA,本文在第二个块之后可视化特征图。如图一所示,WSA捕获的特征是分散的,它们更倾向于局部,而不是面向全局。
在这里插入图片描述

图一

作者任务之所以WSA捕获的特征是分散的是在于它可能归因于一个不变固定的维度,导致限制了学习能力,因此模型的最终性能的高度取决于输入数据的难度

为此,作者提出了Scalable Self-Attention (SSA),它同时在空间和通道维度引入两个尺度因子(rn和rc)

它同时将两个尺度因子(rn和rc)引入到空间维度和通道维度中。也就是说,SSA有选择性地将这些因子应用于查询矩阵、键矩阵和值矩阵(Q、K和V),以确保维度更具弹性,不再受输入的深度约束。

在图1的第三行中,我们可以发现,空间可伸缩性可以为对象带来几乎连续的视觉建模,但一些上下文线索仍然丢失。

因此,作者扩展通道维度来学习更图形化的表示。如图1最后一行所示,通过通道可扩展性,SSA在保持面向上下文泛化的同时,成功地获得了完整的对象特征图。

同时,作者还提出了Interactive Window-based Self-Attention (IWSA),它由一个常规WSA和一个local interactive module (LIM)组成。IWSA通过重新合并独立的值标记和聚合相邻窗口的空间信息来建立信息连接。

为了实现更有效的一般视觉任务的主干,我们采用了层次设计,并提出了一种新的视觉变压器架构,称为ScalableViT,它在每个阶段交替安排IWSA和SSA模块。

主要贡献

  • 对于全局自注意,我们建议SSA在普通的自注意块中提供面向上下文的泛化,这在不牺牲上下文表达性的情况下显著降低了计算开销。
  • 对于局部自我注意,我们设计了LIM来增强WSA的全局感知能力。

网络结构

在这里插入图片描述

ScalableViT网络架构

接下来,我们详细介绍ScalableViT的架构,主要关注SSAIWSA机制。SSA同时在空间维度和通道维度中引入不同的尺度因子,以保持面向上下文的泛化,同时减少计算开销。IWSA通过从一组离散的values(v)值中聚集信息来增强局部自我注意的感受野域。两者都具有线性的计算复杂度,并且可以在单个层中学习长期的依赖关系。

Scalable Self-Attention

自我注意是变压器中的一个关键机制,普通的自我注意可以计算为:

在这里插入图片描述
一般来说,在自然图像中有很多同源信息,但普通的自我注意仍然计算它们的相似性。值得注意的是,并不是所有的信息都是计算视觉转换器中的自我注意力所必需的。因此,作者提出Scalable Self-Attention (SSA),其中两个尺度因子(rn和rc)分别被引入空间和通道维度,导致一个比普通的更有效的中间计算。

在这里插入图片描述

SSA示例图

这些比例因子还可以恢复输出维度与输入对齐,使后续的FFN层和剩余连接可行。因此,中间维度更有弹性,不再与输入x深度绑定。

模型可以获得面向上下文的泛化,同时显著减少计算开销。SSA可以写成:

在这里插入图片描述

Interactive Window-based Self-Attention

除了有效的自注意外,早期的研究还开发了局部自注意,以避免具有token数的二次计算复杂度。WSA将一个图像(H×W×C)划分为多个包含M×M标记的部分窗口。对每个窗口计算注意力。

然而,这种计算效率高的WSA产生了一个具有完整形状但孤立激活的特征图(见图1),这归因于在单个层中缺失的整体感受野。这远不是自我关注的最初目标。

因此,作者提出了 Interactive Window-based Self-Attention (IWSA)。IWSA是将a local interactive module(LIM)合并到WSA中。具体结构如下所示。
在这里插入图片描述

在获得离散值的集合V之后,LIM将它们reshape为M×M×C,接着将其合并形状完整的value图(H×W×C)。紧接着,使用一个函数F (x)来建立相邻的Vn之间的连接。最终,输出的Y = F (V)是一个具有全局信息的完整全局特征图。
最后,在Z上添加这个特征图作为最终的输出Z‘。公式如下:在这里插入图片描述

Position Encoding

除了LIM引入的位置信息外,作者还利用由固定权值的卷积层组成的位置编码生成器(PEG)来获取隐式的位置信息。如ScalableViT网络架构所示,它被插在两个连续的Transformer块之间,每个级的前面只有一个。在PEG之后,输入的tokens被发送到随后的块,位置偏差可以使Transformer实现输入排列。

结论

在本文中,我们提出了一个名为ScalableViT的视觉变压器主干,它由两种高效的自注意机制(SSA和IWSA)组成。SSA在空间维度和通道维度上采用两个协同的尺度因子来进行面向情境的泛化,从而保持更多的上下文线索并学习图形表示。IWSA开发了一个本地交互式模块来建立独立窗口之间的信息连接。它们都拥有在单个层中建模长期依赖关系的能力。提出的尺度性交替建立这两个自我注意模块。它将整个框架推入一个更有效的权衡状态,并在各种视觉任务上实现了最先进的性能。

相关文章:

  • Nginx配置流数据转发指导
  • 【单细胞高级绘图】10.KEGG富集结果的圆圈图
  • 怎样在应用中实现自助报表功能?
  • 生成指定位数的随机验证码
  • 线性布局和相对布局
  • 高级数据结构——红黑树
  • Python语言学习:Python语言学习之数据类型/变量/字符串/操作符/转义符的简介、案例应用之详细攻略
  • CentOS下安装及配置MySQL
  • 开发者说论文|人工智能为设备磨损“把脉”:依托飞桨开展的铁谱图像智能故障诊断研究...
  • 学习笔记4--自动驾驶汽车感知系统
  • rpy2: Unable to determine R library path:
  • kali超详细安装CUDA,安装java,安装go, docker
  • 虚拟机双网卡设置(外网+内网)
  • 基于蒲公英优化算法的函数寻优算法
  • Dubbo是如何完成服务导出的?
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 345-反转字符串中的元音字母
  • const let
  • Debian下无root权限使用Python访问Oracle
  • Docker入门(二) - Dockerfile
  • ES2017异步函数现已正式可用
  • JavaScript-Array类型
  • Java教程_软件开发基础
  • MaxCompute访问TableStore(OTS) 数据
  • Netty源码解析1-Buffer
  • ng6--错误信息小结(持续更新)
  • php面试题 汇集2
  • redis学习笔记(三):列表、集合、有序集合
  • SQLServer之创建数据库快照
  • 复杂数据处理
  • 今年的LC3大会没了?
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • "无招胜有招"nbsp;史上最全的互…
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (11)MSP430F5529 定时器B
  • (13):Silverlight 2 数据与通信之WebRequest
  • (6)设计一个TimeMap
  • (k8s中)docker netty OOM问题记录
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (三)c52学习之旅-点亮LED灯
  • (转)Oracle 9i 数据库设计指引全集(1)
  • .Net 8.0 新的变化
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET Framework与.NET Framework SDK有什么不同?
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET轻量级ORM组件Dapper葵花宝典
  • .Net中wcf服务生成及调用
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • @Controller和@RestController的区别?
  • @vue/cli脚手架
  • [BZOJ1060][ZJOI2007]时态同步 树形dp
  • [BZOJ4010]菜肴制作
  • [C#]无法获取源 https://api.nuge t.org/v3-index存储签名信息解决方法