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

news2024/11/13 8:00:52

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.coloradmin.cn/o/1399015.html

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

相关文章

如何用H5+CSS+JS写一个简单的招聘网站

大家好,我是猿码叔叔,一个 Java 语言开发者。应网友要求,写一个简单的招聘页面。由于技术原因,页面相对简单,朋友们可以选择性的阅读,如果对您有帮助,也可直接拿去使用,因为接下来除…

Linux ---- 小玩具

目录 一、安装: 1、佛祖保佑,永不宕机,永无bug 2、小火车 3、艺术字和其它 天气预报 艺术字 4、会说话的小牦牛 5、其他趣味图片 我爱你 腻害 英雄联盟 帅 忍 龙 你是猪 福 好运连连 欢迎 加油 想你 忘不了你 我错了 你…

介绍几个免费的国内chatgpt网站

概述:水点文章。 第一:chataa网站 chataa (chat778.com) 进去之后注册一下,即可免费使用。 第二:AlchatOS网站 AIchatOS 第三:ChatGPT在线聊天 ChatGPT在线聊天 (zxf7460.cn) 第四:说我真帅&#xff0…

重构改善既有代码的设计-学习(一):封装

1、封装记录(Encapsulate Record) 一些记录性结构(例如hash、map、hashmap、dictionary等),一条记录上持有什么字段往往不够直观。如果其使用范围比较宽,这个问题往往会造成许多困扰。所以,记录…

pytest + allure(windows)安装

背景 软硬件环境: windows11,已安装anaconda,python,pycharm用途:使用pytest allure 生成报告allure 依赖java,点击查看java安装教程 allure 下载与安装 从 allure下载网址下载最新版本.zip文件 放在自…

火速收藏!2024 新年微信红包封面领取全攻略

2024“龙”重登场!今年有哪些令人期待的红包封面? 前方大批精美红包封面来袭,全新品牌氛围红包封面上线,支持品牌定制特色氛围元素,沉浸感受浓浓年味儿,收获满满惊喜! 新年开好运,微…

7 python快速上手

数据类型(下) 数据类型(下)1.集合(set)1.1 定义1.2 独有功能1.3 公共功能1.4 转换1.5 其他1.5.1 集合的存储原理1.5.2 元素必须可哈希1.5.3 查找速度特别快1.5.4 对比和嵌套 强插:None类型2.字典…

CloudPanel file-manager/backend/makefile接口存在远程命令执行漏洞CVE-2023-35885

@[toc] 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. CloudPanel 简介 微信公众号搜索:南风漏…

Vulnhub靶机:EvilBox-One

一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.15) 靶机:EvilBox-One(10.0.2.25) 目标:获取靶机root权限和flag 靶机下载地址:https://www.vulnhub.com/entry/e…

python中Pytest常用的插件

前言 除了框架本身提供的功能外,Pytest还支持上百种第三方插件,良好的扩展性可以更好的满足大家在用例设计时的不同需求。本文将为大家详细介绍下面5项常用的插件。 1. 用例依赖 编写用例的时候,我们会注意用例之间的独立性,但部…

Python爬虫IP池

目录 一、介绍 1.1 为什么需要IP池? 1.2 IP池与代理池的区别 二、构建一个简单的IP池 三、注意事项 一、介绍 在网络爬虫的世界中,IP池是一个关键的概念。它允许爬虫程序在请求网页时使用多个IP地址,从而降低被封禁的风险,提高…

【2024最新】如何有效搭建自动化测试框架?

前言 最近好多小伙伴都在说接口自动化测试,那么究竟什么是接口自动化测试呢?让我们一起往下看就知道了,首先我们得先弄清楚下面这个问题。 为什么要做(自动化)接口测试? 1、由于现在各个系统的复杂度不断…

Jenkins环境配置篇-更换插件源

作为持续集成的利器 Jenkins 已经得到了广泛地应用,仅仅作为一个工具,Jenkins 已然有了 自己的生态圈,支持其的 plugin 更是超过 1300。在实际中如何使用以及如何更好地使用 jenkins,一直是大家在实践并讨论的。本系列文章将会从如…

正则表达式第三四个作用:替换、切割

目录 方法二 replaceAll: 方法三:spilt: 方法一之前已经见过了: 方法二 replaceAll: 形参中: 参数regex表示一个正则表达式。可以将当前字符串中匹配regex正则表达式的字符串替换为newStr。 代码演示 S…

容器技术1-容器与镜像简介

目录 1、容器与虚拟化 2、容器发展历程 3、镜像简介 4、镜像原理 (1)分层存储 (2)写时复制 (3)内容寻址 (4)联合挂载 1、容器与虚拟化 容器技术在操作系统层面实现了对计算机…

全志D1-H芯片Tengine支持

简介 ​ Tengine 是 OPEN AI LAB 推出的边缘 AI 计算框架,致力于解决 AIoT 产业链碎片化问题,加速 AI 产业化落地。Tengine 为了解决 AIoT 应用落地问题,重点关注嵌入式设备上的边缘 AI 计算推理,为海量 AIoT 应用和设备提供高性…

makefile里面的变量使用,系统变量

文章目录 makefile里面的变量使用 makefile里面的变量使用 calc:add.o sub.o multi.ogcc add.o sub.o multi.o calc.cpp -o calcadd.o:add.cppgcc -c add.cpp -o add.osub.o:sub.cppgcc -c sub.cpp -o sub.omulti.o:multi.cppgcc -c multi.cpp -o multi.oclean:rm -rf *.o cal…

每日一练【最大连续1的个数】

一、题目描述 给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1 的最大个数 。 二、题目解析 本题同样是利用滑动窗口的解法。 首先进入窗口,如果是1,就直接让right,但是如果是…

【奶奶看了都会】用AI工具制作微信动态红包封面保姆级教程,附动态红包封面领取

AI一天,人间一年。我是卷福同学,一个在福报厂修过福报的程序员 今年微信红包封面新出了动态封面,点开红包之后是个动图,而且有的还能加上音乐,可以说逼格非常高。假如你在朋友之间发红包用上这么一个封面,朋…

CodeWave学习笔记--采购管理系统

1.CodeWave是什么? CodeWave是一款智能低代码开发平台,基于网易自研拥有大规模参数和深度学习能力的智能模型底座产品架构,为企业级应用提供更加智能化研发的软件生产方式。IT人员可以轻易实现从“智能生成”到“可视化拖拽调整”的全栈低代…