VMamba:视觉SSM

论文标题:VMamba: Visual State Space Model
论文地址:https://arxiv.org/pdf/2401.10166

摘要
VMamba 是一个视觉骨干网络,基于状态空间模型(SSM),其复杂度是线性的。该架构的核心是视觉状态空间(VSS)模块和 2D 选择性扫描(SS2D)模块。通过四条扫描路径的遍历,SS2D 实现了从不同方向获取上下文信息的能力,同时降低了计算成本。
论文的贡献主要包括:

  • VMamba 作为一种新型的 SSM 基础视觉网络,以线性时间复杂度处理视觉表示学习任务。
    提出了 2D 选择性扫描(SS2D),实现了从1D数组扫描向2D平面遍历的扩展。
  • VMamba 在图像分类、目标检测和语义分割任务中表现出色,且在输入尺度扩展方面表现出优势。

架构

VMamba 的架构依赖于 Visual State Space (VSS) Block 模块,通过 SS2D 模块来完成高效的图像表示学习。下图描述了 VMamba 的基本网络结构,其核心思想是将输入图像分割成补丁,并通过多个下采样阶段和 VSS 模块逐步提取层级特征。
在这里插入图片描述
主要步骤:

  1. 将输入的图像 H x W x 3分成块(图中stem步骤,与patch partition相同),生成空间尺寸为H/4 x H/4 x C_1 的特征图。
  2. 层及特征提取:多个网络阶段用来生成分辨率逐步降低的低级特征表示,特征分辨率为 H/8 x W/8H/16 x W/16, H/32 x W/32。这些阶段,除了第一个阶段,每个阶段包含下采样层,并有多个VSS模块。
  3. VSS Block: VSS模块被设计为视觉数据中对应Mamba模块的部分,用来学习图像的特征表示。在VSS模块中,SS2D模块被用来替换S6模块。SS2D可以扫描不同方向的信息来有效提取上下文特征,并且维持线性计算复杂度。

为了提高计算效率,VSS模块中的整个乘法部分被移除掉了,因为选择性机制已经通过SS2D实现了。最终的VSS模块包含一个单一的网络分支,采用两个残差模块,类似Transformer的基本块结构。
在这里插入图片描述

SS2D (2D-Selective-Scan)

在这里插入图片描述

  1. 交叉扫描 (Cross-Scan)
    输入的图像被划分成多个非重叠的补丁(patch),然后沿着四个不同的扫描路径展开(如图所示的红色箭头),每个扫描路径形成一个序列,将图像的 2D 数据转化为一维的序列进行处理。

  2. 选择性扫描 (Selective Scanning with S6 Blocks)
    每条扫描路径经过独立的 S6 Block 进行特征提取。S6 模块负责处理这些展开的序列,通过应用状态空间模型(SSM)的公式(如图中右侧部分展示的公式)进行特征提取。该过程允许在不同的方向上整合信息,保留重要的上下文信息并滤除不相关的内容,从而在保持线性复杂度的同时实现全局感受野。

  3. 交叉合并 (Cross-Merge)
    选择性扫描后,四个扫描方向的序列被重新组合,通过逆向操作将一维序列还原成二维图像补丁。最终输出的补丁包含了从不同方向整合的上下文信息,完成全局上下文的整合。

VMamba 模型的加速优化

VMamba 是一种用于图像分类的视觉模型。这个模型在未经优化的情况下,尽管精度很高(82.2%),但其推理速度(吞吐量 426 张图像/秒)较慢,同时计算复杂度(5.6 GFLOPs)较高。这些瓶颈会影响它在实际部署中的效率。因此,研究人员对模型进行了逐步优化,以提高其速度和减少计算负担,同时尽量保持较高的分类精度。
在这里插入图片描述

优化过程详解:
实现层面的优化:

Step (a) - CSM in Triton:

目标: 改进 Cross-Scan 和 Cross-Merge 操作的实现。
效果: 推理速度提高了 41 张图像/秒,但分类精度不变。通过更高效的内存处理,提高了数据处理速度。
Step (b) - f16 in & f32 out:

目标: 改用 float16 数据格式作为输入,并以 float32 输出,旨在提高训练效率。
效果: 训练时加速效果显著,但测试时速度略有波动(-3 张图像/秒)。精度仍保持不变。
Step © - Einsum → Linear Tensor Layout:

目标: 将模型中慢速的 einsum 操作替换为更高效的线性变换(linear transformation)。同时调整张量布局,减少数据重排操作。
效果: 推理速度提高了 174 张图像/秒,精度保持不变。这大幅加快了推理速度。
架构层面的优化:

Step (d) - MLP and Fewer Layers:

目标: 引入多层感知器(MLP)以取代部分复杂操作,减少层数以降低 FLOPs。
效果: 尽管推理速度提升了 175 张图像/秒,但分类精度略微下降了 0.6%。
Step (e) - No Skip Branch, More Layers:

目标: 删除模型中的乘法分支,并提高模型的层数配置,同时减少 FLOPs。
效果: 速度显著提高了 366 张图像/秒,精度反而提高了 0.6%,这是一个重要的改进。
Step (f) - Reduce d_state, Reintroduce DWConv:

目标: 将 d_state(SSM 状态维度)从 16 降低到 1,并重新引入深度卷积层(DWConv)。
效果: 推理速度提高了 161 张图像/秒,分类精度增加了 0.3%。
Step (g) - Further Reduce ssm-ratio, More Layers:

目标: 进一步降低 ssm-ratio,并增加模型层数配置。
效果: 推理速度再次提高了 346 张图像/秒,精度提高了 0.1%。

实验评估

图像分类

数据集: 使用了 ImageNet-1K 数据集。
性能比较: 在相似的 FLOPs 下,VMamba-T 的 top-1 准确率达到了 82.6%,比 DeiT-S 高 2.8%,比 Swin-T 高 1.3%。
VMamba 在 Small 和 Base 级别上也保持了性能优势。VMamba-B 的 top-1 准确率为 83.9%,比 DeiT-B 高 2.1%,比 Swin-B 高 0.4%。
推理效率: VMamba-T 的吞吐量为 1,686 张图像/秒,性能远超 SSM 模型,如比 S4ND-Conv-T 高 1.47 倍。

下游任务

物体检测与实例分割:
数据集: MSCOCO2017 数据集。
方法: 使用 Mask-RCNN 和 UperNet 进行物体检测和分割。
结果:
在 12 轮 fine-tuning 训练中,VMamba-T/S/B 的物体检测 mAP 达到 47.3%/48.7%/49.2%,分别比 Swin-T/S/B 高 4.6%/3.9%/2.3% mAP。
实例分割任务中,VMamba 的 mAP 同样超越 Swin 和 ConvNeXt。
在 36 轮的 fine-tuning 训练中,VMamba 继续表现出色,显示了其在密集预测任务中的潜力。
语义分割:

数据集: ADE20K 数据集。
结果:
在单尺度设置下,VMamba-T 的 mIoU 比 Swin-T 高 3.4%,比 ConvNeXt-T 高 1.9%。
在小模型和大模型级别上,VMamba-S/B 在多个设置下也优于其他方法。

结果分析:

VMamba 展示了其在物体检测、实例分割和语义分割中的适应性。
相较于 ViT 模型,VMamba 在处理更大空间分辨率的输入时,表现出 线性增长的 FLOPs 和较小的准确率下降,使其在处理大输入时更加高效。
通过这些实验,VMamba 展现了其在多任务中的强大适应能力,尤其是在处理高分辨率输入和密集预测任务时,具有很好的表现和效率。

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

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

相关文章

听泉鉴宝在三个月前已布局商标注册!

近日“听泉鉴宝”以幽默的风格和节目效果迅速涨粉至2500多万,连线出现“馆藏文物”和“盗墓现场”等内容,听泉鉴宝早在几个月前已布局商标注册。 据普推知产商标老杨在商标局网站检索发现,“听泉鉴宝”的主人丁某所持股的江苏灵匠申请了三十…

Java的买家秀探秘:API数据的优雅捕获

在编程世界的某个角落,Java特工正坐在他的高科技办公室里,沉浸在代码的海洋中。今天,他接到了一个有趣的任务:获取买家秀的API数据。这不仅是一次技术的挑战,更是一次深入了解买家心声的机会。Java特工,这位…

宇音天下最新力作 | VTX356语音识别合成芯片问世

北京宇音天下科技有限公司,依托在语音技术领域的丰富经验和技术积累,成功推出了一款具有里程碑意义的语音识别合成芯片——VTX356。这款芯片的问世,不仅彰显了公司在智能语音处理领域的专业实力,也预示着智能家居、车载电子、智能…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第十五集:制作更多地图,更多敌人,更多可交互对象

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、第一个代表性场景 1.制作更多敌人2.制作更多可交互对象二、第二个代表性场景 1.制作更多敌人2.制作更多可交互对象三、第三个代表性场景 1.制作更多敌人2.制…

Java生死簿管理小系统(简单实现)

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把手教你开发炫酷的vbs脚本制作(完善中……) 4、牛逼哄哄的 IDEA编程利器技巧(编写中……) 5、面经吐血整理的 面试技…

pikachu靶场CSRF-post测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、抓包使用burp生成csrf脚本 四、源代码分析 五、结论 一、测试环境 1、系统环境 渗透机:本机(127.0.0.1) 靶 机:本机(127.0.0.1) 2、使用工具/软件 Burp sui…

华为OD机试 - 篮球比赛 - 递归(Java 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(E卷D卷A卷B卷C卷)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加…

Nginx超简洁知识:负载均衡-反向代理,动静分离,配置文件

首先介绍一下为什么需要nginx? 在低并发场景下(也就是用户量特别少的情况下),我们只需要部署一台服务器就能满足用户数量少的需求。 但是如果用户量逐渐增多,只有一台服务器是不够的。于是我们需要部署多台服务器。 …

juzigei/基于Java语言的充电桩系统(充电桩小程序+充电桩管理平台)

简述 SpringBoot 框架,充电桩平台充电桩系统充电平台充电桩互联互通协议云快充协议1.5新能源汽车电动自行车公交车-四轮车充电充电源代码充电平台源码Java源码无加密项目 介绍 云快充协议云快充1.5协议云快充协议开源代码云快充底层协议云快充桩直连桩直连协议充…

长短期记忆网络(Long Short-Term Memory,LSTM)

简介:个人学习分享,如有错误,欢迎批评指正。 长短期记忆网络(Long Short-Term Memory,简称LSTM)是一种特殊的循环神经网络(Recurrent Neural Network,简称RNN)架构&#…

【Qt】Windows下Qt连接DM数据库

环境信息:W11 Qt5.12及以上 dm8 QODBC达梦 Windows环境创建ODBC数据源 使用 ODBC 方法访问 DM 数据库服务器之前,必须先配置 ODBC 数据源 在控制面板Windows工具中显示ODBC数据源管理器 ODBC数据源管理器标签 用户 DSN:添加、删除或配置本…

安达发|氢能源产业与APS生产排程软件的结合

氢能产业,作为一种科技与资本密集型行业,覆盖新材料、电力装备、新能源汽车、航空航天以及国防军工等多个领域,对于推动传统产业的转型升级及新兴产业链的形成具有显著作用。氢能的应用领域广泛,主要可划分为交通、工业、发电和储…

软件设计模式------抽象工厂模式

抽象工厂模式(Abstract Factory Pattern),又称Kit模式,属于对象创建型模式。 一:先理解两个概念: (1)产品等级结构: 即产品的继承结构。 通俗来讲,就是不同品…

php中的错误和异常捕获

目录 一: 异常(Exceptions) 二: 错误(Errors) 三:实际项目的异常和错误处理 在PHP中,异常(Exceptions)和错误(Errors)是两个不同的…

vuex的store应用

1.在pakage.json加一行 2.和main同级别加一个js文件 import Vue from vue import Vuex from vuexVue.use(Vuex)export default new Vuex.Store({state: {langFlag: new Date().getTime()},mutations: {setLangFlag(state) {state.langFlag new Date().getTime()}} })3.在mai…

NewStarCTF2024-Week2-Misc-WP

目录 1、wireshark_checkin 2、wireshark_secret 3、字里行间的秘密 4、你也玩原神吗 5、Hertas Study 6、用溯流仪见证伏特台风 7、热心助人的小明 1、wireshark_checkin 直接字符串搜 flag flag{ez_traffic_analyze_isnt_it} 2、wireshark_secret 查看原始数据 导出十…

「C/C++」C++ STL容器库 之 std::map 键值对的集合容器

✨博客主页何曾参静谧的博客📌文章专栏「C/C」C/C程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…

鸿蒙网络编程系列25-TCP回声服务器的实现

1. TCP回声服务器实现可行性 在前文鸿蒙网络编程系列2-UDP回声服务器的实现中,介绍了什么是回声服务器,并且基于UDP协议实现了一个简单的回声服务器,本节将基于TCP协议实现一个类似的回声服务器。在鸿蒙API10以后,提供了TCPSocke…

【C++】使用vscode进行 C/C++ 开发,内含c_cpp_properties.json、launch.json 和 tasks.json解释

在 Visual Studio Code (VSCode) 中进行 C/C 开发时,这三个 .json 文件(c_cpp_properties.json、launch.json 和 tasks.json)分别用于配置编译、调试和代码提示等功能。它们是 VSCode 配置环境的一部分,由 C/C 扩展生成&#xff0…

将java项目jar包打包成exe服务

1.结构展示 2.注意事项 前提: 环境准备:jdk8 和 .net支持 { 1.控制面板》程序和功能》启用和关闭windows功能》.net的勾选》2.jdk8自行百度安装环境3.其他项目必须的软件环境安装等(数据库...) }第一次准备: 1.将打包好的jar包放到premiumServices.exe…