MaxViT: Multi-Axis Vision Transformer

news2024/10/3 8:23:33

论文:https://arxiv.org/abs/2204.01697
代码地址:https://github.com/google-research/maxvit
在这里插入图片描述

在本文中,介绍了一种高效且可扩展的注意力模型,称之为多轴注意力,该模型由两个方面组成:分块的局部注意力和扩张的全局注意力。这些设计选择允许在仅具有线性复杂度的任意输入分辨率上进行全局-局部空间交互。本文还通过有效地将注意力模型与卷积相结合,提出了一种新的架构元素,并相应地提出了一个简单的分层视觉主干,称为MaxViT,通过简单地在多个阶段重复基本构建块。值得注意的是,MaxViT能够在整个网络中“看到”全局,甚至在早期的高分辨率阶段。

一、引言

在本文中,提出了一种新型的Transformer模块,称为多轴自注意力(Max SA),它能够作为基本的架构组件。其可以在单个块中执行局部和全局空间交互。与完全自注意力相比,Max SA具有更大的灵活性和效率,即自然适应具有线性复杂性的不同输入长度;与(平移)窗口/局部注意力相比,Max SA通过提出一个全局感受野,加强的模型能力。此外,仅具有线性复杂性,Max SA可以用作网络任何层的一般独立注意力模块,甚至在早期的高分辨率阶段。
为了证明其有效性和通用性,作者进一步设计了一种简单但有效的视觉主干,称为多轴视觉Transformer(MaxViT),通过分层堆叠由Max SA和卷积组成的重复块。虽然该模型属于混合视觉Transformer的范畴,但MaxViT与以前的方法的区别在于,本文通过设计一个统一卷积、局部和全局注意力的基本块,然后简单地重复它,力求简单。实验表明,MaxViT在各种视觉任务(包括分类、对象检测和分割、图像美学评估和图像生成)的所有数据体制下都显著提高了最先进的(SOTA)性能。本文的贡献包括:
1、一个通用的Transformer主干MaxViT,可以在网络的每个阶段捕获局部和全局空间交互。
2、一种新颖的独立多轴注意力模块,由分块的局部注意力和扩张的全局注意力组成,在线性复杂性中享受全局感知
3、通过广泛的消融研究,展示了大量的设计选择,包括层数、布局、MBConv的使用等,汇聚到最终模块化设计MaxViT块。

二、实现细节

受稀疏方法的启发,本文引入了一种新型的注意力模块,称为阻塞多轴自注意力(Max SA),通过将完全密集的注意力机制分解为两种稀疏形式——窗口注意力和网格注意力,这将普通注意力的二次复杂度降低为线性,而不会损失任何非局部性。顺序设计提供了简单性和灵活性,同时比以前的方法执行得更好——每个单独的模块可以单独使用或以任何顺序组合使用,而并行设计没有这些好处。由于Max SA的灵活性和可扩展性,能够通过简单地将Max SA的替代层与MBConv堆叠在分层结构中来构建一个新的视觉主干,称之为MaxViT,如下图所示。MaxViT受益于整个网络的全局和局部感受野,从浅层到深层,在模型容量和泛化能力方面表现出优异的性能。
在这里插入图片描述

自注意力

自注意力允许整个空间(或序列)所有位置的空间混合,同时还受益于基于标准化成对相似性的内容相关权重。一般的模型中定义的标准自注意力是不知道位置的, 平移不变性是ConvNets中的一个重要归纳偏差。相对自注意力通过在注意力权重中引入相对学习偏差来提高普通注意力,这已被证明在许多视觉任务中始终优于原始注意力。在本文中,主要采用预归一化相对自注意力作为MaxViT中的关键算子。

多轴注意力

与局部卷积相比,全局交互是自注意力的关键优势之一。然而,直接沿整个空间应用注意力在计算上是不可行的,因为注意力算子需要二次复杂度。为了解决这个问题,本文提出了一种多轴方法,通过简单地分解空间轴,将全尺寸注意力分解为两种稀疏形式——局部和全局。 X ∈ R H × W × C X∈ R^{H×W×C} XRH×W×C是输入特征图。没有将注意力集中在平坦的空间维度HW上,而是将特征分为形状张量 ( H / P × W / P , P × P , C ) (H/P×W/P,P×P,C) H/P×W/PP×PC,表示划分为不重叠的窗口,每个窗口大小为P×P。将自注意力集中在局部空间维度(即P×P)上等同于关注一个小窗口。将利用这一块注意力进行局部交互。 尽管绕开了完全自注意力的繁重计算,但在大规模数据集上,局部注意力模型的表现欠佳。受区块注意力的启发,本文提出了一种简单但有效的方法来获得稀疏的全局注意力,称之为网格注意力。代替使用固定窗口大小来划分特征图,使用固定的G×G均匀网格将张量网格化为形状(G×G,H G×W G,C),从而生成具有自适应大小 H / G × W / G H/G×W/G H/G×W/G的窗口 。在分解的网格轴(即G×G)上使用自注意力对应于令牌的扩展的全局空间混合。通过使用相同的固定窗口和网格大小,可以完全平衡局部和全局操作之间的计算,两者在空间大小或序列长度方面仅具有线性复杂度。请注意,本文提出的Max SA模块可以是Swin注意力模块的替代品,其参数和FLOP的数量完全相同。然而,它具有全局交互能力,而不需要掩码、填充或循环移位,使其更易于实现,比移位窗口方案更可取。例如,可以使用einops轻松实现多轴注意力,而无需修改原始注意力操作。

MaxViT block

如下图所示,将两种类型的注意力顺序叠加,以在单个块中获得局部和全局交互。本文还采用了Transformer中的典型设计,包括LayerNorm、前馈网络(FFN和跳过连接。还在多轴注意力之前添加了一个带有(SE)模块的MBConv块,将MBConv与注意力一起使用进一步提高了网络的泛化和可训练性。在注意力之前使用MBConv层提供了另一个优势,因为深度卷积可以被视为条件位置编码(CPE),使得模型没有显式位置编码层。提出的独立多轴注意力可以一起使用,也可以单独使用,用于不同的目的——局部交互的块注意力,以及全局混合的网格注意力。这些元素可以很容易地插入到许多视觉体系结构中,特别是在高分辨率任务中,这些任务可以通过与可负担计算的全局交互而受益。
在这里插入图片描述

架构变体

本文设计了一系列极其简单的架构变体来探索本文提出的MaxViT块的有效性。使用了类似于常见ConvNet的分层主干,其中输入首先在stem stage(S0)使用Conv3x3层进行下采样。网络主体包含四个层级(S1-S4),每个层级的分辨率为前一级的一半,通道数加倍(隐藏维度)。在网络中,在整个主干中使用相同的MaxViT块。在每个阶段的第一个MBConv块的深度方向Conv3x3层中应用下采样。反向瓶颈和挤压激励(SE)的膨胀率和收缩率默认为4和0.25。将所有注意力块的注意力头部大小设置为32。通过增加每个阶段的块数B和通道尺寸C来放大模型。在下表中总结了MaxViT变体的架构配置:
在这里插入图片描述

三、实验

(一)、分类实验

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)、目标检测

在这里插入图片描述

(3)、消融实验

Global grid-attention:本文的主要贡献之一是网格注意力模块,它允许在线性时间进行稀疏的全局交互,使模型能够在所有阶段捕获全局信息。进行了两次消融以了解其增益:
1)在每个阶段完全消除了全局注意力;
2) 将网格关注替换为块关注,以保持相同的参数计数和FLOP。如下表所示,与仅使用局部注意力或卷积相比,在早期阶段启用全局注意力可以进一步提高性能。
在这里插入图片描述
MBConv层:本文还通过移除每个阶段中的所有MBConv来消融MaxViT中MBConv层的使用。请注意,在移除MBConv层时,我们还应考虑参数和FLOP的减少。此外,阶段3有5个块,而其他阶段只有2个块。如下表所示,MaxViT中MBConv层的使用显著提高了性能。
在这里插入图片描述
Block order study:本文提出了三个不同的模块来构建MaxViT块——MBConv、块和网格注意力——它捕获了从局部到全局的空间交互。为了研究组合它们的最有效方法,使用所有6种排列来评估MaxViT-T模型。总是在第一层应用下采样,这可能会导致较小的模型大小差异。我们可以从下表中观察到,在注意力层之前放置MBConv几乎总是优于其他组合。原因可能是,更适合在早期层中获取局部特征/模式,然后全局聚合它们,这与现有的混合模型相一致,这使Conv层成为人们关注的焦点。然而,在生成对抗实验中,我们发现从全局到局部的最佳顺序是:GA-BA-C。对于生成任务来说,首先使用全局处理块(即网格关注层)获得正确的总体结构,然后使用局部处理块(如MBConv)填充更精细的细节可能是有利的。
Sequential vs. parallel:在本文的方法中,也存在采用并行设计的其他模型。在本次消融中,将顺序Max-SA与分别包含块关注和网格关注的并行分支进行比较。使用一个输入投影来增加通道数量,然后分割注意力头来馈送两个分支,以保持与MaxViT相似的复杂性,并使用一个输出投影来减少级联的分支。本文进行了粗略的参数调整,发现初始学习率为 1 0 − 3 10^{−3} 103。如下表所示,本文的顺序方法以更少的参数和计算显著优于并行方法。原因可能是并行设计学习互补的线索,而它们之间的交互较少,而顺序堆栈能够学习局部和全局层之间更强大的融合。 在这里插入图片描述
Vertical layout:我们进一步研究了我们的垂直布局设计,即每个阶段的块数。将本文的设计与Swin/ConvNeXt的选择进行了比较。将MaxViT-T和-S更改为块B=(2,2,6,2),MaxViT-B,-L更改为严格遵循Swin的阶段比的块B=(2, 2, 18, 2)。从下图中可以看出,本文的布局在小型模型中的表现与Swin相当,但在大型模型中的比例明显更好。 在这里插入图片描述

四、附录

MBConv:MaxViT利用MBConv块作为主卷积算子。本文还采用了预激活结构,以促进MBConv和Transformer之间的均匀性。具体地,假设x为输入特征,则无下采样的MBConv块被公式化为:
在这里插入图片描述
其中,Norm是BatchNorm,Conv是扩展通道的Conv1x1,然后是BatchNom和GELU,这是基于Transformer模型的典型选择。DWConv是Depthwise Conv3x3,后面是BatchNorm和GELU。SE是挤压激励层,而Proj是收缩Conv1x1,以向下投影通道数。对于每个阶段中的第一个MBConv块,通过应用步长为2的深度方向的Conv3x3进行下采样,而shortcut分支也应用l了池化层和通道投影:
在这里插入图片描述
Relative Attention:为了简化表达,只使用了多头自注意力的单个头部来演示模型。在实际实现中,总是使用具有相同维度的多头注意力。相对注意力可定义为:
在这里插入图片描述
其中 Q 、 K 、 V ∈ R ( H × W ) × C Q、K、V∈ R^{(H×W)×C} QKVRH×W×C是查询、键和值矩阵,d是隐藏维度。注意力权重由学习的静态变量以及位置感知矩阵B和缩放输入自适应注意力 Q K T / √ d QK^T/√d QKT/d共同决定的, 考虑到2D坐标的差异,相对位置偏差B由矩阵 B ^ ∈ R ( 2 H − 1 ) ( 2 W − 1 ) \hat{B}∈ R^{(2H−1) (2W−1)} B^R(2H1)(2W1)进行参数化的,当以更高分辨率(例如 H ′ × W ′ H^{'}×W{'} H×W)进行微调时,使用双线性插值来映射相对位置偏差从 R ( 2 H − 1 ) ( 2 W − 1 ) R^{(2H−1) (2W−1)} R(2H1)(2W1) R ( 2 H ′ − 1 ) ( 2 W ′ − 1 ) R^{(2H^{'}−1) (2W^{'}−1)} R(2H1)(2W1) 这种相对注意力得益于输入适应性、平移不变性和全局交互,这是二维视觉任务中优于普通自注意力的首选。在本文中,所有注意力操作符默认使用上式中定义的相对注意力。
Multi-Axis Attention:假设上式中的相对注意力遵循1维输入序列的惯例,即始终将输入的第二个最后维度(…,L,C)视为空间轴,其中L,C表示序列长度和通道。所提出的多轴注意力可以在不修改自注意力操作的情况下实现。首先使用参数P定义 B l o c k ( ⋅ ) Block(·) Block操作符作为对输入图像/特征 x ∈ R H × W × C x∈ R^{H×W×C} xRH×W×C的分块分为不重叠的块,每个块的大小为P×P。在窗口分割后,块的尺寸被聚集到空间维度(即-2轴)上:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/7227.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开源作品:引流宝!集活码、短网址等功能为一体的工具!致力于提高引流效率,减少资源流失!

前言 开发这款工具的初衷是为了辅助自己的工作,提供自己日常工作的效率,自己使用了一段时间下来觉得很有用,于是完善之后开源。如今已经开源近2年,第一个版本是在2020年9月份开源,收获了390个star,后来持续…

用ue4怎么制作一个物体故障闪烁的特效

这是一篇关于电子标牌出现故障时可以使用的毛刺效应的文章。本文将其分解为两个简单的效果,将使用 GIF 来解释它们。 噪音效果 第一个组合是噪音效果。 在 Component Mask 中指定 G 矢量并在 Sine 和 Ceil 中调整 G 值。要将线条更改为水平移动,请在 …

操作系统4小时速成:操作系统的基本概念,它是系统软件,管理处理机、存储器、io设备、文件,并发和共享是最基本特征,还有虚拟和异步

操作系统4小时速成:操作系统的基本概念,它是系统软件,管理处理机、存储器、io设备、文件,并发和共享是最基本特征,还有虚拟和异步 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招…

二叉树的存储结构

引言: 对于二叉树的存储,我们可以采取顺序存储和链式存储结构 顺序存储结构 ● 按编号次序存储节点 • 对树中每个节点进行编号 • 其编号从小到大的顺序就是节点在连续存储单元的先后次序。 我们是从编号为1开始,为了保持数组位序和编号保持…

EMS Advanced Data Import高级数据导入选项Crack版

EMS Advanced Data Import高级数据导入选项Crack版 EMS Advanced Data Import是Dolphi和CBuilder应用。允许您一次以著名的MS Excel、MS Access、DBF、XML、TXT、CSV、ODF和HTML格式输入数据文件。 EMS高级数据导入选项: 导入流行格式信息:S Excel 97-20…

什么是shuffle?shuffle的原理及过程

目录 一、什么是shuffle 二、为什么要引入shuffle,有哪些影响 三、shuffle的工作原理 1、shuffle的阶段 2、shuffle的中间文件 3、Shuffle Write 4、Shuffle Read 四、总结回顾 一、什么是shuffle 类比分公司的人与物和 Spark 的相关概念是这样对应的&#…

同时看过 unreal4 和 Unity 源代码的人觉得哪个引擎架构更好?

同时看过 unreal4 和 Unity 源代码的人觉得哪个引擎架构更好? UE VS U3D 技术策略上 U3D技术策略是很保守的,发出来的featurelist测试覆盖率无可非议,开发者无需多少新功能的熟悉测试成本。 UE4的技术策略是激进的,发出来的fea…

嵌入式开发学习之--点亮LED灯(上)

在嵌入式学习里,点亮LED灯的地位就如同编程语言学习里的“hello world”,是每个初学者都必须经历的一关,因为点亮了LED灯,至少可以说明几件事: 1.开发环境没问题,包括软件,硬件都没问题。 2.能…

电脑重装系统前怎么备份,重装系统怎么备份数据

有很多用户想把操作系统升级成为Win11的,但是又不知道怎么备份原来的数据,担心升级操作系统后,电脑中的重要数据全部丢失了。电脑重装系统前怎么备份?”这里小编就给我们详细介绍一下吧! 一、升级Windows 11系统要不要…

梯度多云管理技术架构的优势

随着云计算模式的日渐成熟,作为私有云和公有云的混合形态,混合云迎来了爆发期。在混合云的建设过程中,多云管理能力成为关键,梯度多云管理平台是多云时代下的服务管理利器。梯度多云管理平台是对多个公有云、私有云及各种异构资源…

视频声音怎么翻译?这几个办法教你实现视频声音翻译成中文

现如今刷视频已经成为我们的日常生活中不可缺少的一部分了,例如有时我们看到一些有用的教学视频,可能会想要把这些视频保存下来,但有些视频却都是英文的,有些小伙伴可能英语基础不好,查看起来不方便,这个时…

MySQL运算符

算术运算符 算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行加()、减(-)、乘(*)、除(/)和取模(%&#…

【math】Hiden Markov Model 隐马尔可夫模型了解

文章目录Introduction to Hidden Markov ModelIntroductionMarkov chainHidden Markov Model(HMM)Three QuestionsQ1: evaluate problem -- Forward algorithmQ2: decode problem -- Viterbi algorithmQ3: learn problem -- Baum-Welch algorithmApplicationIntroduction to Hi…

重装Windows系统教程(U盘制作+重装系统)

一、U盘制作 找一个不用的U盘,大小建议在15G以上,因为后面要存储下载好的电脑系统。U盘在被制作成系统盘的时候会被格式化,注意使用前将有用的信息提前保存以免丢失。 第一步:用能够正常联网的电脑打开U盘制作网站,打开…

MySQL解决group by分组后未排序问题

MySQL解决group by分组后未排序问题一、遇见问题1、错误SQL2、正确SQL一、遇见问题 当我们要实现SQL分组后取第一条数据则需要进行排序结果作为子查询后分组 CREATE TABLE op_joke (id int(11) NOT NULL AUTO_INCREMENT,name1 varchar(255) DEFAULT NULL,name2 varchar(255) D…

Spring

Spring[TOC](Spring)1、概述1.1、优点1.2、组成2. IOC概述2.1 什么是IOC2.1.1 推导过程2.1.2 IOC本质2.2 HelloSpring2.2.1 导入Jar包2.2.2 编写代码2.2.2 思考2.3 IOC过程2.4 IOC 接口3. Bean 管理3.1 基于xml方式——set方法注入3.2 FactoryBean3.3 bean 作用域3.4 bean 生命…

mannose-Biotin|甘露糖-生物素|甘露糖-聚乙二醇-生物素|生物素-PEG-甘露糖

mannose-Biotin|甘露糖-生物素|甘露糖-聚乙二醇-生物素|生物素-PEG-甘露糖 PEG接枝修饰甘露糖,mannose-PEG-Biotin 甘露糖-聚乙二醇-生物素,生物素-PEG-甘露糖 中文名称:甘露糖-生物素 英文名称:mannose-Biotin 别称&#xff…

工具分享-Ajax Interceptor

前言 资源地址: https://gitee.com/LjLoveMlh/tech_share/raw/master/%E8%B5%84%E6%BA%90/Ajax%20Interceptor/1.3.1_011.zip 给大家分享个好东西 Ajax Intercepto 帮助开发,测试人员Mock数据,更快,更安全 解决的痛点&#xff1a…

Vue3+Vite3+Vant初体验及踩过的一些坑

需要帮人做移动端的几个页面,带表单那种,说最好能用vant做,于是边学边弄记录下。 首先用 npm create vitelatest 就报错了,于是默默看了眼node包版本比官网说的低,就先升级node,升级之后再运行一次命令 …

sketch入门选手如何避坑

Sketch它是为图标设计和界面设计而生的。它是一个优秀的人。UI一站式应用Sketch画布将是无限大小的,每层都支持多种填充模式。Sketch为您提供真正合作设计过程所需的所有工具。从早期创意到像素完美的艺术品,原型清晰,与开发人员交接。Sketch…