(2024,VMamba,交叉扫描,线性复杂度,全局感受野,动态权重)视觉状态空间模型

VMamba: Visual State Space Model

公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群)

目录

0. 摘要

3. 方法

3.1 基础概念

3.2 2D 选择性扫描

3.3 VMamba 模型

3.3.1 整体架构

3.3.2 VSS块

4. 实验


0. 摘要

卷积神经网络(CNNs)和视觉变压器(Vision Transformers,ViTs)是视觉表示学习的两个最受欢迎的基础模型。虽然 CNNs 在图像分辨率方面具有线性复杂性的显著可扩展性,ViTs 却在拟合能力上超越它们,尽管面临着二次复杂性的挑战。仔细检查发现,ViTs 通过整合全局感受野动态权重实现了卓越的视觉建模性能。这一观察激发了我们提出一种新颖的架构,该架构继承了这些组件同时增强了计算效率。为此,我们从最近引入的状态空间模型(state space model,SSM)中汲取灵感,提出了视觉状态空间模型(Visual State Space Model,表示为 VMamba),它在不牺牲全局感受野的情况下实现了线性复杂性。为了解决遇到的方向敏感问题,我们引入了交叉扫描模块(Cross-Scan Module,CSM)来遍历空间域并将任何非因果视觉图像转换为有序补丁序列。广泛的实验证明,VMamba 不仅在各种视觉感知任务中表现出有希望的能力,而且在图像分辨率增加时还表现出对已建立基准的更为显著的优势。

源代码:https://github.com/MzeroMiko/VMamba

VMamba 成功有效降低注意力复杂性的关键概念继承自选择性扫描空间状态顺序模型(Selective Scan Space State Sequential Model,S6)[12],该模型最初设计用于处理自然语言处理(NLP)任务。与传统的注意力计算方法不同,S6 使得 1-D 数组中的每个元素(例如文本序列)能够通过压缩的隐藏状态与先前扫描的任何样本进行交互,有效地将二次复杂性降低到线性。

然而,由于视觉数据的非因果性质,直接将这种策略应用于补丁化和展平的图像将不可避免地导致受限的感受野,因为无法估计相对于未扫描的补丁的关系。我们将这个问题称为 “方向敏感” 问题,并提出通过新引入的交叉扫描模块(Cross-Scan Module,CSM)来解决它。CSM 不是以单向模式(列向或行向)遍历图像特征映射的空间域,而是采用四向扫描策略,即从特征映射的四个角到相对位置(见图 2(b))。这种策略确保特征映射中的每个元素从不同方向的所有其他位置集成信息,从而产生全局感受野,而不增加线性计算复杂性。 

3. 方法

3.1 基础概念

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

离散化。作为连续时间模型,状态空间模型(SSMs)在集成到深度学习算法中时面临巨大的挑战。为了克服这一障碍,离散化过程变得至关重要。

离散化的主要目标是将常微分方程(ODE)转换为离散函数。这种转换对齐模型与输入数据中所体现的底层信号的采样率至关重要,从而实现计算效率高的操作 [16]。考虑输入 x_k ∈ R^(L×D),即在信号流中采样长度为 L 的向量(遵循 [17]),根据零阶保持规则(zeroth-order hold rule),可以将 ODE(方程1)离散化如下:

其中,B、C ∈ R^(D×N),Δ ∈ R^D。在实践中,根据 [12],我们通过使用一阶泰勒级数来精练对¯B 的近似:

选择性扫描机制。与主要关注线性时不变(linear time-invariant,LTI)SSMs 的普遍方法有所不同,VMamba 通过将选择性扫描机制(S6)[12] 作为核心 SSM 运算符而使自己与众不同。在 S6中,矩阵 B ∈ R^(B×L×N)、C ∈ R^(B×L×N) 和 Δ ∈ R^(B×L×D) 是从输入数据 x ∈ R^(B×L×D) 导出的。这意味着 S6 了解嵌入输入的上下文信息,确保了该机制内部权重的动态性。

3.2 2D 选择性扫描

尽管 S6 具有独特的特性,但它以因果方式处理输入数据,因此只能捕获数据的扫描部分内的信息。这自然地使 S6 与涉及时间数据的 NLP 任务相吻合,但在适应非因果数据(例如图像、图形、集合等)时面临重大挑战。解决这个问题的一种直接方法是沿两个不同方向(即前向和后向)扫描数据,允许它们互相补偿而不增加计算复杂性。

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

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

将 S6 与 CSM 集成,称为 S6 块,作为构建视觉状态空间(Visual State Space,VSS)块的核心元素,构成了 VMamba 的基本构建块(在下一小节中进一步详细说明)。我们强调 S6 块继承了选择性扫描机制的线性复杂性,同时保留了全局感受野,这与我们构建这样一个视觉模型的动机一致。

3.3 VMamba 模型

3.3.1 整体架构

VMamba-Tiny 的架构概览如图 4(a)所示。VMamba 从使用一个干节点将输入图像划分为补丁开始,类似于 ViTs,但没有将补丁进一步展平成 1-D 序列。这种修改保留了图像的 2D 结构,导致具有 H / 4 × W / 4 × C_1 维度的特征映射。

然后,VMamba 在特征映射上堆叠多个 VSS 块,保持相同的维度,构成 “Stage 1”。在 VMamba中,通过补丁合并操作 [27] 在 “Stage 1” 中对特征映射进行下采样来构建分层表示。随后,涉及更多的 VSS 块,导致输出分辨率为 H / 8 ×W / 8,形成 “Stage 2”。此过程重复以创建分辨率为 H / 16 × W / 16 和 H / 32 × W / 32的 “Stage 3” 和 “Stage 4”。所有这些阶段共同构建了类似于流行的CNN 模型[19, 22, 41, 29, 42] 和一些 ViTs [27, 48, 6, 56] 的分层表示。生成的架构可以在实际应用中作为对其他视觉模型的多功能替代品。

我们在三个不同的尺度上开发 VMamba,即 VMamba-Tiny、VMamba-Small 和 VMamba- Base(分别称为 VMamba-T、VMamba-S 和 VMamba-B)。详细的架构规格见表 1。所有模型的FLOP 都是使用 224×224 的输入大小评估的。将在未来的更新中引入其他架构,如大规模模型。

3.3.2 VSS块

VSS块的结构如图 4(b) 所示。输入经过初始线性嵌入层,输出分为两个信息流。一个流通过一个 3 × 3 的深度卷积层,然后通过 Silu 激活函数 [37] 进入核心 SS2D 模块。SS2D 的输出通过一层标准化层,然后加到另一个信息流的输出上,该信息流经过 Silu 激活。这种组合产生了 VSS 块的最终输出。

与视觉 transformer 不同,由于 VMamba 的因果性质,我们不使用位置嵌入偏差。我们的设计与典型的视觉 transformer 结构不同,后者在一个块中采用以下操作顺序:Norm→attention→Norm→MLP,并丢弃 MLP 操作。因此,VSS 块比 ViT 块更浅,这使我们能够在相似的总模型深度预算下堆叠更多的块。

4. 实验

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

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

相关文章

大数据开发之Kafka(broker、消费者、eagle监控、kraft模式)

第 4 章:Kafka Broker 4.1 Kafka Broker工作流程 4.1.1 Zookeeper存储的Kafka的信息 1、查看zookeeper中的kafka节点所存储的信息 启动Zookeeper客户端 [atguiguhadoop104 zookeeper-3.5.7]$ bin/zkCli.sh 通过ls命令列出kafka节点内容 [zk: localhost:2181(CO…

Windows11添加美式(纯英文)输入法

打开设置,选择“时间和语言” 选择“语言和区域” 检查语言中否有英语(美国),如果没有,请单击“添加语言” 单击英语(美国)右方的更多选项按钮,选择“语言选项” 找到下方“键盘…

对象数组变成一维数组,导出txt文件

假设对象数组格式为此 arr1: [{id: 1,title: 我是1目录,children: [{id: 11,title: 我是1-1目录,children: [{id: 111,title: 我是1-1-1目录,children: [],},],},],},{id: 2,title: 我是2目录,children: [{id: 21,title: 我是2-1目录,children: [],},],},], 页面如下 先在页面…

【Spring 篇】MyBatis中的CRUD魔法:数据之美的四重奏

MyBatis,这个数据持久化的魔法师,以其优雅的SQL映射和简洁的配置文件,为我们呈现出一场CRUD(Create, Read, Update, Delete)的奇妙之旅。在这篇博客中,我们将深入探讨MyBatis中的增、删、改、查操作&#x…

linux基础学习(5):yum

yum是为了解决rpm包安装依赖性而产生的一种安装工具 1.yum源 1.1配置文件位置 yum源的配置文件在/etc/yum.repos.d/中 *Base源是网络yum源,也就是需要联网才能使用的yum源。默认情况下,系统会使用Base源 *Media源是光盘yum源,是本地yum源…

std::atomic

一、概述 std::atomic 是C11引入的一个模板类,用于提供原子操作的类型。在多线程编程中,当多个线程同时访问同一块数据时,可能会导致数据竞争和不确定的行为。std::atomic 可以用来创建原子类型的变量,保证对该变量的操作是原子的…

【leetcode】下一个排列 双指针算法

/*** param {number[]} nums* return {void} Do not return anything, modify nums in-place instead.*/ var nextPermutation function(nums) {const len nums.length;let i len -2;//找到第一个当前项比后一项小的位置iwhile(i>0&&nums[i]>nums[i1]) i--;if(…

章鱼网络 Community Call #17|打造全新 Omnity 跨链协议

香港时间2024年1月8日12点,章鱼网络举行第17期 Community Call。 对于 Octopus Community 而言,2023年是一个分水岭。我们如期兑现我们的承诺,成功上线了包括 $NEAR Restaking 和 Adaptive IBC 在内的完整的 Octopus 2.0。 自从我们在2023年…

9.2 工厂模式(❤)

9.2 工厂模式(❤) 1. 工厂模式介绍1.1 工厂模式1.2 简单工厂1.2.1 案例讲解: 购买电脑2. 工厂模式用途和特点3. 工厂模式项目应用1. 工厂模式介绍 1.1 工厂模式

万界星空科技mes系统可以为企业带来什么好处

随着信息技术的不断发展,MES生产制造系统的作用不断凸显。万界星空科技MES生产制造可以为企业带来四个方面的好处:提升生产效率、降低生产成本、优化生产过程、提高生产质量。本文将从这四个方面分别进行详细阐述,旨在通过对MES生产制造系统的…

动态规划汇总

作者推荐 视频算法专题 简介 动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的&#x…

C#调用C++ dll异常排查

基本情况 最近在做的一款程序,长时间运行总会出现莫名的问题。有时是自动关闭,有时程序报错,有时调用的dll异常…… 提出假设——dll内存泄漏 由于开始与C组合作时,使用其提供的dll出现过数据读写时异常(内存操作异常…

线程的创建与回收

目录 一、线程的创建 进程: 线程: 线程特点: 一个进程中的多个线程共享以下资源: 每个线程私有的资源包括: Linux线程库: 线程创建-pthread_create 二、线程的参数传递 线程结束-pthread_exit 线程查…

【论文解读】LERF:语言嵌入的辐射场(ICCV 2023 Oral)

来源:投稿 作者:橡皮 编辑:学姐 论文链接:https://arxiv.org/abs/2303.09553 项目主页:https://lerf.io](https://lerf.io 图 1:语言嵌入辐射场 (LERF)。 LERF 将 CLIP 表示建立在密集、多尺度的 3D 场中。…

Oracle SQL Developer执行sql脚本文件

文件过于大,无法打开,直接在界面执行。 ①将文件放置到D盘,文件名 daochu5.sql ② 在工具执行SQL界面输入 d:\daochu5.sql;,点击运行按钮运行

Shell 脚本实现自动启动程序、日志管理和定时任务监控

简介 本篇将通过Shell 脚本实现自动启动Java程序、日志管理和定时任务监控。脚本启动程序具灵活定制、可移植性和扩展性强的优点,可以根据需要添加额外的功能、配置选项和自定义行为,从而满足更具体的要求。 脚本编写 vim start_program.sh#!/bin/bas…

Swift抓取某网站律师内容并做排名筛选

有个很要好的朋友,今天找我说他的朋友欠他钱,因为工程上面的事情,所以一直没拿到款。想让我找个靠谱的律师帮他打官司,因为这个也不是我的强项,也没有这方面的经验。随即从律师网站爬取对应律师口碑以及成功案例&#…

【第七在线】利用大数据与AI,智能商品计划的未来已来

随着科技的快速发展,大数据和人工智能(AI)已经成为各行各业变革的重要驱动力。在服装行业,这两大技术的结合正在深刻改变着传统的商品计划方式,引领着智能商品计划的未来。 一、大数据与AI在智能商品计划中的角色 大数据为智能商品计划提供了…

【设计模式】腾讯二面:自动贩卖机/音频播放器使用了什么设计模式?

状态模式是什么? 状态模式,也被称作状态对象模式,是一种行为设计模式。 当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。 它让对象在其内部状态改变时改变自己的行为。外部调用者无需了…

【设计模式】什么是外观模式并给出例子!

什么是外观模式? 外观模式是一种结构型设计模式,主要用于为复杂系统、库或框架提供一种简化的接口。这种模式通过定义一个包含单个方法的高级接口,来隐藏系统的复杂性,使得对外的API变得简洁并易于使用。 为什么要使用外观模式&a…