《VMamba》论文笔记

原文链接:

[2401.10166] VMamba: Visual State Space Model (arxiv.org)

原文笔记:

What:

VMamba: Visual State Space Model

Why:

多年以来CNN和VIT作为视觉特征提取的主流框架

CNN具有模型简单,共享权重,计算效率高(线性复杂度)的优点缺点是不具备全局感受野,能力不足VIT,不擅长处理多模态数据,并且模型已经比较老了,多种模型变体已经使卷积网络接近能力的上限

VIT基于Transformer,具有架构简单,全局感受野,动态权重(当提到"动态权重"时,通常是指注意力机制中用于分配不同输入元素之间关联度的权重。这些权重是根据输入数据的不同情况动态计算得出的。)的优点缺点是计算效率不如卷积神经网络。(二次复杂度)

作者从最近很火的基于SSM模型的Mamba中获取灵感,集合了CNNs与VIT的优点提出了视觉状态空间模型VMamba该模型在不牺牲全局感受野的情况下实现了线性复杂度

Challenge:

1、作者想让这个视觉backbone在线性复杂度的情况下实现全局感受野,这是本研究的主要目的

2、如何将1D的SSM模型融合到2D的Vision任务当中作者将这一难题概括为

方向敏感问题:(然而,由于视觉数据的非因果性质,直接将这种策略应用于打成patch和拉伸后的图像不可避免地会导致感受野受限,因为无法估计与未扫描patch块的关系。我们将此问题称为“方向敏感”问题

Idea:

为解决方向敏感问题作者提出交叉扫描模块(CSM)

(详见原文翻译部分)

Model:

(ps:时间有点紧,这篇整理的略显匆忙,但是这些基于Mamba的模型大差不差,连行文逻辑都很相似,将Mamba用作Vision领域的主要有两个工作一个是Vim一个就是本文VMamba,他们主要的区别都是在1D转2D这个操作上的区别,我将专门基于它们的区别写一篇)

原文翻译:

Abstract

卷积神经网络(CNNs)和Visual Transformer(ViTs)是视觉表示学习的两个最流行的基础模型。虽然 CNN 以线性复杂度在图像分辨率方面表现出显着的可扩展性,但 ViT 在拟合能力方面超过了它们,尽管它具有二次复杂度。仔细检查表明,ViTs通过结合全局感受野动态权重实现了卓越的视觉建模性能。这一观察促使我们提出了一种新颖的架构,该架构继承了这些组件,同时提高了计算效率。为此,我们从最近引入的状态空间模型中获得灵感,提出了视觉状态空间模型(VMamba),该模型在不牺牲全局接受域的情况下实现了线性复杂度。为了解决遇到的方向敏感问题,我们引入了交叉扫描模块(CSM)遍历空间域,并将任何非因果视觉图像转换为顺序补丁序列。大量的实验结果表明,随着图像分辨率的增加,VMamba不仅在各种视觉任务中表现出有希望的能力,而且在已建立的基准上也表现出更明显的优势。源代码可在 https://github.com/MzeroMiko/VMamba 获得。

1 Introduction

视觉表示学习是计算机视觉中最基本的研究课题之一,自深度学习时代开始以来,取得了重大突破。深度基础模型的两个主要类别,即卷积神经网络(CNNs)[38,19,22,29,42]和视觉变形器(ViTs)[10,28,45,56],已广泛应用于各种视觉任务。虽然两者都在计算表达视觉表示方面取得了显着成功,但与 CNN 相比,ViTs 通常表现出卓越的性能,这可以归因于注意力机制促进的全局感受野动态权重

然而,注意机制在图像大小方面要求二次复杂度,导致在处理下游密集预测任务(如目标检测、语义分割等)时产生昂贵的计算开销。为了解决这个问题,通过限制计算窗口的大小或跨步来提高注意力的效率已经付出了大量的努力[43],尽管这是以限制接受域的规模为代价的。这促使我们设计一种新的具有线性复杂性的视觉基础模型同时仍然保留与全局接受域和动态权重相关的优势。

从最近提出的状态空间模型[12,34,47]中汲取灵感,我们引入了用于高效视觉表示学习的视觉状态空间模型(表示为VMamba)。VMamba在有效降低注意力复杂性方面的成功背后的关键概念继承自选择性扫描空间状态序列模型(S6)[12],该模型最初是为解决自然语言处理(NLP)任务而设计的。与传统的注意力计算方法相比,S6使一维数组中的每个元素(例如文本序列)通过压缩的隐藏状态与先前扫描的任何样本交互,有效地将二次复杂度降低到线性。

然而,由于视觉数据的非因果性质,直接将这种策略应用于打成patch和拉伸后的图像不可避免地会导致感受野受限,因为无法估计与未扫描patch块的关系。我们将此问题称为“方向敏感”问题并提出通过新引入的 Cross-Scan 模块 (CSM) 对其进行解决。CSM 不是以单向模式(按列或逐行)遍历图像特征图的空间域,而是采用四向扫描策略,即从特征图中的所有四个角到相反的位置(见图 2(b))。该策略确保特征图中的每个元素都集成了来自不同方向所有其他位置的信息,在不增加线性计算复杂度的情况下呈现全局感受野。

在不同的视觉任务上进行了大量的实验来验证VMamba的有效性。如图1所示,与Resnet[19]、ViT[10]和Swin[28]等基准视觉模型相比,VMamba模型在ImageNet-1K上表现出优越或至少具有竞争力的性能。我们还报告了下游密集预测任务的结果。例如,vambatiny /Small/Base(分别具有22/44/75 M参数)使用MaskRCNN检测器(1倍训练计划)在COCO上实现46.5%/48.2%/48.5% mAP,使用512 × 512输入的UperNet在ADE20K上实现47.3%/49.5%/50.0% mIoU,显示其作为强大基础模型的潜力。此外,当使用更大的图像作为输入时,ViT的FLOPs增长速度明显快于CNN模型,尽管通常仍然表现出优越的性能。然而,令人感兴趣的是VMamba本质上是基于Transformer体系结构的基础模型,它能够在FLOPs稳步增加的情况下获得与ViT相当的性能。

我们总结了本文的主要贡献:

  • 我们提出了一个具有全局接受域和动态权值的视觉状态空间模型vamba,用于视觉表征学习。VMamba为视觉基础模型提供了一种新的选择,超越了cnn和vit的现有选择。
  • 引入了交叉扫描模块(CSM),以弥合一维阵列扫描和二维平面遍历之间的差距,促进S6扩展到视觉数据而不影响接收域。
  • 我们展示了vamba在各种视觉任务(包括图像分类、对象检测和语义分割)上取得了令人满意的结果。这些发现强调了vamba作为一个强大的视觉基础模型的潜力。

2 Related Work

深度神经网络极大地促进了机器视觉感知的研究。视觉基础模型主要有两种,cnn[23,38,41,19,42]和vit[10,28,48,9,6,56]。最近,状态空间模型 (SSM) [12, 34, 47]。说明了它们在高效的长序列建模中的有效性,这在 NLP 和 CV 社区中引起了广泛的关注。我们的研究坚持这一工作路线,并提出了VMamba,这是一种基于SSM的架构,用于视觉领域的数据建模。VMamba和CNN以及VIT同时作为计算机视觉领域的可供替代的基础模型。

卷积神经网络(cnn)是视觉感知史上具有里程碑意义的模型。早期基于cnn的模型[25,23]是为基本任务而设计的,例如识别手写数字[24]和分类字符类别[55]。cnn的独特特征被封装在卷积核中,卷积核利用接收野从图像中捕获感兴趣的视觉信息。在强大的计算设备(GPU)和大规模数据集[7]的帮助下,越来越深入的[38,41,19,22]和高效的模型[20,42,52,36]被提出,以提高跨视觉任务的性能。除了这些努力之外,在提出更先进的卷积算子[4,21,53,5]或更高效的网络架构[59,3,51,20]方面也取得了进展。

Vision Transformers(ViTs)是NLP社区的产物,展示了一种有效的视觉任务感知模型,并迅速发展成为最有前途的视觉基础模型之一。早期基于vit的模型通常需要大规模的数据测试[10],并以朴素的配置出现[54,58,1,31]。后来,DeiT[45]采用训练技术来解决优化过程中遇到的挑战,随后的研究倾向于将视觉感知的归纳偏差纳入网络设计中。例如,社区提出分层vit[28, 9, 48, 31, 56, 44, 6, 8, 57],以逐步降低整个主干的特征分辨率。此外,也有研究提出利用CNN的优势,如引入卷积运算[49,6,46],结合CNN和ViT模块设计混合架构[6,40,31]等。

状态空间模型(ssm)是最近提出的模型,作为状态空间转换引入深度学习[16,15,39]。受控制系统中的连续状态空间模型的启发,结合HiPPO[13]初始化,LSSL[16]展示了处理远程依赖问题的潜力。然而,由于状态表示对计算量和内存的要求过高,LSSL在实际应用中并不可行。为了解决这个问题,S4[15]提出将参数归一化为对角结构。此后,不同结构的结构状态空间模型层出不穷,如复杂对角结构[17,14]、多输入多输出支持[39]、对角分解加低秩运算[18]、选择机制[12]等。然后将这些模型集成到大型表示模型中[34,33,11]。

这些模型主要关注的是如何将状态空间模型应用于语言和语音等远程和随机数据,如语言理解[33,34]、基于内容的推理[12]、像素级一维图像分类[15]等,然而这些模型很少关注视觉识别方面。与我们最相似的工作是S4ND[35]。S4ND是第一个将状态空间机制应用到视觉任务中的工作,并显示了其性能可能与ViT竞争的潜力[10]。然而,S4ND对S4模型进行了简单的扩展,无法以依赖输入的方式有效地捕获图像信息。我们证明了通过mamba[12]引入的选择性扫描机制,所提出的VMamba能够匹配现有流行的视觉基础模型,如ResNet[19]、ViT[10]、swin[27]和convnext[29],显示了VMamba作为强大基础模型的潜力。

3 Method

在本节中,我们首先介绍与VMamba相关的初步概念,包括状态空间模型、离散化过程和选择性扫描机制。然后,我们提供了作为VMamba核心元素的二维状态空间模型的详细规范。最后,我们对整个VMamba体系结构进行了全面的讨论。

3.1 Preliminaries

状态空间模型。状态空间模型(SSMs)通常被认为是将刺激x(t)∈R^L映射到响应y(t)∈R^L的线性时不变系统。在数学上,这些模型通常被表述为线性常微分方程(ode) (Eq. 1),其中参数包括A∈C^N ×N,  B, C∈C^N,状态大小为N,跳跃连接D∈C^1。

离散化。状态空间模型(ssm)作为连续时间模型,在与深度学习算法集成时面临着很大的挑战。为了克服这一障碍,离散化过程变得势在必行。离散化的主要目标是将ODE转化为离散函数。这种转换对于使模型与输入数据中隐含的底层信号的采样率保持一致至关重要,从而实现高效的计算操作[16]。考虑输入Xk∈R^L×D,在长度伟L的信号流内的采样向量如下[17],常微分方程(Eq. 1)可以使用零阶保持规则离散如下:

选择性扫描机制。与主要关注线性时不变(LTI) SSM的流行方法不同,所提出的VMamba通过将选择性扫描机制(S6)[12]作为核心SSM算子而使自己与众不同。在S6中,矩阵B∈RB×L×N,C∈RB×L×N,∆∈RB×L×D由输入数据x∈RB×L×D导出。这意味着S6知道嵌入在输入中的上下文信息,从而确保该机制中的权重的动态性

3.2 2D Selective Scan

尽管S6具有鲜明的特点,但它对输入数据进行因果处理,因此只能捕获数据扫描部分内的信息。这自然使S6与涉及时间数据的NLP任务保持一致,但在适应非因果数据(如图像、图形、集合等)时提出了重大挑战。这个问题的一个直接解决方案是沿着两个不同的方向(即向前和向后)扫描数据,允许它们在不增加计算复杂性的情况下补偿彼此的接受域。

尽管具有非因果性,但图像与文本的不同之处在于它们包含二维空间信息(例如局部纹理和全局结构)。为了解决这个问题,S4ND[35]建议用卷积重新表述SSM,并通过外积直接将核从一维扩展到二维。然而,这种修改阻止了权重的动态性(即,与输入无关),从而导致了基于上下文的数据建模能力的丧失。因此,我们选择通过坚持选择性扫描方法[12]来保持动态权重,不幸的是,这种方法不允许我们遵循[35]集成卷积操作。

为了解决这个问题,我们提出了如图2所示的交叉扫描模块(CSM)。我们选择将图像patch块沿着行和列展开成序列(扫描展开),然后沿着四个不同的方向进行扫描:左上到右下,右下到左上,右上到左下,左下到右上。这样,任何像素(如图2中的中心像素)都可以集成来自不同方向的所有其他像素的信息。然后,我们将每个序列重塑为单个图像,并将所有序列合并为一个新的序列,如图3所示(扫描合并)。

S6与CSM的集成称为S6块,它是构建可视状态空间(VSS)块的核心元素,VSS块构成了VMamba的基本构建块(下一小节将进一步详细介绍)。我们强调,S6块继承了选择性扫描机制的线性复杂性,同时保留了全局接受野,这与我们构建这种视觉模型的动机是一致的。

3.3 VMamba Model

3.3.1 Overall Architecture

vamba - tiny的架构概述如图4 (a)所示。vamba通过使用类似于ViTs的干模块将输入图像划分为patch开始该过程,但没有进一步将补丁平坦化为1-D序列。这种修改保留了图像的二维结构,得到尺寸为H/4 × W/4 × C1的特征图。

然后vamba将几个VSS块堆叠在特征图上,保持相同的维度,构成“阶段1”。vamba中的分层表示是通过patch merge操作对“Stage 1”中的feature map进行降采样来构建的[27]。随后,更多的VSS块参与,导致输出分辨率为H/8 × W/8,形成“第二阶段”。重复此过程以创建分辨率分别为H/16 × W/16和H/32 × W/32的“阶段3”和“阶段4”。所有这些阶段共同构建了类似于流行的CNN模型[19,22,41,29,42]和一些vit[27, 48, 6, 56]的分层表示。所得到的体系结构可以作为具有类似需求的实际应用中其他视觉模型的通用替代品。

我们开发了三种不同的vamba,即vamba - tiny, vamba - small和vamba - ase(分别称为vamba - t, vamba - s和vamba - b)。表1概述了详细的体系结构规范。所有模型的FLOPs都使用224 × 224的输入尺寸进行评估。在未来的更新中将引入其他架构,例如大型模型。

3.3.2 VSS Block

VSS块的结构如图4 (b)所示。输入经过初始线性嵌入层,输出分成两个信息流。在进入核心SS2D模块之前,一个流通过一个3 × 3深度卷积层,然后是一个Silu激活函数[37]。SS2D的输出经过一个层规范化层,然后加入到另一个信息流的输出中,这个信息流经过了一个Silu激活。这种组合产生了VSS块的最终输出。与VisionTransformer不同,由于其因果性,我们避免在VMamba中使用位置嵌入偏差。我们的设计不同于典型的视觉转换器结构,它在一个块中采用了如下的操作顺序:Norm → attention → Norm → MLP,然后丢弃MLP操作,因此VSS块比VIT块更浅,这是我们能够以相似的总模型深度预算堆叠更多块。

4 Experiment

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java基础之运算符(整合)

文章目录 一.运算符算数运算符练习: 二.算术运算符的高级用法""操作的三种情况数字相加字符串相加字符相加 三.自增自减运算符基本用法 四.赋值运算符&关系运算符赋值运算符关系运算符逻辑运算符 五.短路逻辑运算符六.三元运算符 一.运算符 运算符: 对字面量或…

36.HarmonyOS鸿蒙系统 App(ArkUI) 创建第一个应用程序hello world

36.HarmonyOS App(ArkUI) 创建第一个应用程序helloworld 线性布局 1.鸿蒙应用程序开发app_hap开发环境搭建 3.DevEco Studio安装鸿蒙手机app本地模拟器 打开DevEco Studio,点击文件-》新建 双击打开index.ets 复制如下代码: import FaultLogger from ohos.fau…

kaggle竞赛宝典 | 最新时间序列统一大模型,秒杀各类时序任务!

本文来源公众号“kaggle竞赛宝典”,仅用于学术分享,侵权删,干货满满。 原文链接:最新时间序列统一大模型,秒杀各类时序任务 作者:Fareise 最新时间序列统一大模型UniTS,秒杀各类时序任务&…

ubuntu20.04安装截图工具flameshot

ubuntu20.04 自带的截图工具,可以使用快捷键“shift printScreen” ,但是它不能对截图进行编辑。 现在安装截图工具 flameshot,使用以下命令: sudo apt install flameshot 安装完成后,使用以下命令打开: flamesho…

Flutter 开发学习笔记(1):第一个简单的Flutter项目(上)

文章目录 前言相关链接初始化项目设置键盘映射建议使用AnLink链接物理机。 项目配置日志打印官方案例添加依赖主函数更换添加最简单的按钮Flutter 项目结构Flutter项目入口Flutter的MyApp函数 更新视图直接修改浅拷贝父节点数据思考 修改布局子节点重构子节点布局重构多次扩展布…

操作系统--死锁

目录 说明使用互斥锁时死锁是如何发生的。 系统模型: 死锁的特性: 处理死锁的方法: 死锁的预防: 死锁避免: 说明使用互斥锁时死锁是如何发生的。 我们先来看一个例子: 当两列火车在十字路口逼近时&am…

linux忘记mysql的root密码,强制修改

1、登录linux后编辑mysql的配置文件:vi /etc/my.cnf 2、添加如下代码,表示跳过授权表登录mysql 编辑完成后,按Esc键,":wq"退出编辑并保存修改内容。 3、使用命令:service mysqld restart 重启mysql服务. …

【No.21】蓝桥杯组合数学|数位排序|加法计数原理|乘法计数原理|排列数|组合数|抽屉原理|小蓝吃糖果|二项式定理|杨辉三角|归并排序(C++)

组合数学 数位排序 【问题描述】 小蓝对一个数的数位之和很感兴趣,今天他要按照数位之和给数排序。当两个数各个数位之和不同时,将数位和较小的排在前面,当数位之和相等时,将数值小的排在前面。 例如,2022 排在 409 前面, 因为 2022 的数位之和是 6,小于 409 的数位 之和 13。…

【Web应用技术基础】JavaScript(1)——案例:猜数字

上一个博客发了视频。这个博客因为不能插入视频&#xff0c;所以给大家一张一张截图的 点击“重新开始一局游戏” <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"…

Java类与对象:从概念到实践的全景解析!

​ 个人主页&#xff1a;秋风起&#xff0c;再归来~ 文章专栏&#xff1a;javaSE的修炼之路 个人格言&#xff1a;悟已往之不谏&#xff0c;知来者犹可追 克心守己&#xff0c;律己则安&#xff01; 1、类的定义格式 在java中定义类时需要用到…

Spring: 在SpringBoot项目中解决前端跨域问题

这里写目录标题 一、什么是跨域问题二、浏览器的同源策略三、SpringBoot项目中解决跨域问题的5种方式&#xff1a;使用CORS1、自定 web filter 实现跨域(全局跨域)2、重写 WebMvcConfigurer(全局跨域)3、 CorsFilter(全局跨域)4、使用CrossOrigin注解 (局部跨域) 一、什么是跨域…

matlab 点云可视化(6)——点云按强度进行可视化

目录 一、功能概述1、算法概述2、主要函数二、代码示例三、结果展示四、参考链接本文由CSDN点云侠原创原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、功能概述 1、算法概述 点云按强度进行可视化 2、主要函数

Request和Response

Request&#xff08;请求&#xff09;&Response&#xff08;响应&#xff09; Request&#xff1a;获取请求数据 Response&#xff1a;设置响应数据 Request继承体系 1.Tomcat需要解析请求数据&#xff0c;封装为request对象&#xff0c;并且创建request对象传递到servic…

分治实现快速排序和归并排序

本文用于记录个人算法竞赛学习&#xff0c;仅供参考 一.快速排序&#xff08;升序为例&#xff09; 思想&#xff1a;确定分界点x&#xff0c;将小于分界点的值放在分界点的左边&#xff0c;将大于分界定的值放在分界点的右边&#xff0c;再递归处理两边的左右区间。 步骤&am…

HR应用人才测评开展招聘,可以显著提升效率

某汽车零部件武汉有限公司诚聘库管员1名…… 孟X毅&#xff0c;男&#xff0c;29岁,市场营销专业,做过生产主管,求一份白班工作。 王X宸&#xff0c;女&#xff0c;22岁&#xff0c;有一年会计经验&#xff0c;求相似工作。 张汉X&#xff0c;男&#xff0c;31岁&#xf…

Python程序怎么打包成exe文件

前言 pyinstaller可以将.py文件打包成.exe可执行文件&#xff0c;即使别人的电脑上没有搭建Python环境&#xff0c;也是可以直接运行程序的。 pyinstaller安装 首先打开cmd&#xff0c;在里面输入下面这一行命令&#xff0c;回车即可。 pip install pyinstaller 我运行命令…

TR2 - Transformer模型的复现

目录 理论知识模型结构结构分解黑盒两大模块块级结构编码器的组成解码器的组成 模型实现多头自注意力块前馈网络块位置编码编码器解码器组合模型最后附上引用部分 模型效果总结与心得体会 理论知识 Transformer是可以用于Seq2Seq任务的一种模型&#xff0c;和Seq2Seq不冲突。 …

Echarts地图之——如何给地图添加外边框轮廓

有时候我们希望给地图外围加一圈边框来增加美感 但实际情况中&#xff0c;我们需要把国界的边框和各个省份属于国界的边框相吻合&#xff0c;否则就会造成两者看起来是错位的感觉 这就需要我们把echarts registerMap的全国省份json和国界边框json的坐标相一致。 这个json我们可…

WEPE系统安装纯净版window11教程(包含pe内系统安装方法)

目录 一.安装u盘启动盘 1.1制作安装系统引导盘 1.2下载保存windows镜像 1.3根据自己电脑品牌查询进入BIOS设置的方法 1.4我们成功进入了PE 二.重装系统 2.1遇到问题 2.2重新来到这个界面 三.PE中基本软件的作用 四.学习声明 今天不敲代码&#xff0c;今天来讲讲We P…

PetaLinux 去除自动获取 IP 地址

问题&#xff1a;系统启动的时候会自动检测 IP 地址&#xff0c;如不需要这个功能&#xff08;该过程需耗时十几秒&#xff09;。可以自定义 IP 地址&#xff0c;去掉这一步。 操作步骤如下&#xff1a; 所有命令均需在非管理员模式下执行 1. 初始化 PetaLinux 运行环境 运行…