视觉状态空间模型(VMamba)的解读

在计算机视觉领域,设计计算高效的网络架构一直是研究的热点。今天,我想和大家分享一篇发表在 NIPS 2024 上的论文——VMamba:Visual State Space Model,这篇论文提出了一种新的视觉骨干网络,具有线性时间复杂度,展现了在多种视觉感知任务中的出色表现。

源码:GitHub - MzeroMiko/VMamba: VMamba: Visual State Space Models,code is based on mamba

一、亮点解析

(一)2D 选择性扫描(SS2D)模块

作者巧妙地提出了 2D 选择性扫描(SS2D)模块,这一模块通过四向扫描机制,有效地弥合了 1D 选择性扫描与 2D 视觉数据之间的差距。SS2D 确保每个图像块仅通过沿相应扫描路径计算的压缩隐藏状态获得上下文知识,从而将计算复杂度从二次降低到线性。这种创新的设计,犹如在图像的二维世界中开辟了四条 “信息高速通道”,让图像块能够更高效地获取上下文信息,极大地提升了计算效率。

(二)VMamba 架构

基于 VSS 模块,作者精心开发了一系列 VMamba 架构,包括 VMamba-Tiny、VMamba-Small 和 VMamba-Base 等。这些架构通过一系列架构增强和实现优化,实现了加速。VMamba 架构的出现,就像为计算机视觉任务打造了一套 “高性能引擎”,在保持相当性能的同时,计算复杂度呈线性增长,与基于 ViT 的模型在输入 token 数量增加时计算复杂度呈二次增长形成了鲜明对比,为处理大规模视觉数据提供了更高效的选择。下图是只能VMamba整体架构。

二、方法

(一)网络架构的构建

作者开发了三种规模的 VMamba,输入图像首先通过一个 stem 模块分割成 patches,生成一个空间维度为的 2D 特征图。随后,多个网络阶段用于创建分辨率为、和的分层表示。每个阶段(除了第一个阶段)包含一个下采样层,后跟一系列视觉状态空间(VSS)模块。VSS 模块作为 Mamba 模块的视觉对应物,用于表示学习。最终的 VSS 模块由一个包含两个残差模块的单一网络分支组成,模仿了原始 Transformer 模块的架构。

(二)2D 选择性扫描用于视觉数据(SS2D)

视觉数据本质上是非顺序的,包含空间信息。为了解决这一挑战,SS2D 中的数据前向传播涉及三个步骤:交叉扫描、使用 S6 块的选择性扫描和交叉合并。通过采用互补的 1D 遍历路径,SS2D 使图像中的每个像素能够有效地从不同方向整合来自所有其他像素的信息,从而促进在 2D 空间中建立全局感受野。这种设计,仿佛赋予了每个像素 “多角度视野”,让它们能够更全面地感知图像内容。

(三)加速 VMamba 的方法

作者通过在 ImageNet-1K 上的图像分类评估模型,逐步改进 VMamba 的推理速度。例如,通过在 Triton 中重新实现交叉扫描和交叉合并,调整选择性扫描的 CUDA 实现以适应 float16 输入和 float32 输出,将选择性扫描中的相对较慢的 einsum 替换为线性变换等方法,不断提高推理吞吐量。这些优化措施,就像是对 VMamba 进行了一系列 “精细调校”,让它在实际应用中能够更高效地运行。

三、 实验结果

论文评估了视觉状态空间模型 (VMamba) 在各种任务中的作用,包括在ImageNet-1K数据集做图像分类、COCO 数据集做目标检测和在ADE20K 数据集上做语义分割。结果表明,VMamba 实现了强大的性能和效率,性能优于 CNN 和 Vision Transformer (ViTs) 等许多流行模型。

 

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

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

相关文章

Kanass基础教程-创建项目

Kanass是一款国产开源免费的项目管理工具,工具简洁易用,开源免费,之前介绍过kanass的一些产品简介及安装配置方法,本文就从如何创建第一个项目来开始kanass上手之旅吧。 1. 创建项目 点击项目->项目添加 按钮进入项目添加页面…

问题的价值 ( Value of Question ) 公式

一、什么是问题的价值 我们的人生、工作的期间、瞬息万变的商业环境中,我们必然会面对很多问题,也会提出很多问题。 但这些问题是否具有回答的 价值,应该如何 衡量 呢? 简单如,女朋友问今晚应该吃什么、世界如何才能…

Zemax 中带有体素探测器的激光谐振腔

激光谐振腔是激光系统的基本组成部分,在光的放大和相干激光辐射的产生中起着至关重要的作用。 激光腔由两个放置在光学谐振器两端的镜子组成。一个镜子反射率高(后镜),而另一个镜子部分透明(输出耦合器)。…

在GPIO控制器中,配置通用输入,读取IO口电平时,上拉和下拉起到什么作用

上下拉电阻作用 在通用输入的时候,也就是在读某个IO的电平的时候 一定要让IO口先保持一个电平状态,这样才能检测到不同电平状态。 如何保持电平状态? 1. 可以通过芯片内部的上下拉电阻,由于是弱上下拉一般不用 2. 硬件外界一个…

如何使用 DeepSeek 和 Dexscreener 构建免费的 AI 加密交易机器人?

我使用DeepSeek AI和Dexscreener API构建的一个简单的 AI 加密交易机器人实现了这一目标。在本文中,我将逐步指导您如何构建像我一样的机器人。 DeepSeek 最近发布了R1,这是一种先进的 AI 模型。您可以将其视为 ChatGPT 的免费开源版本,但增加…

SAP HCM insufficient authorization, no.skipped personnel 总结归纳

导读 权限:HCM模块中有普通权限和结构化权限。普通权限就是PFCG的权限,结构化权限就是按照部门ID授权,颗粒度更细,对分工明细化的单位尤其重要,今天遇到的问题就是结构化权限的问题。 作者:vivi,来源&…

python-leetcode-二叉树的右视图

199. 二叉树的右视图 - 力扣(LeetCode) # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solut…

冲刺一区!挑战7天完成一篇趋势性分析GBD DAY1-7

Day1. 公开数据库的挖掘太火热了,其中GBD数据库的挖掘又十分的火爆.那我就来挑战一篇GBD、一篇关于趋势性分析的GBD! GBD数据库挖掘是目前的四大刊常客,经常出现在顶级期刊上面。这个数据库亮点就是:可视化,统计学简单、而数据可…

Maven全解析:从基础到精通的实战指南

概念: Maven 是跨平台的项目管理工具。主要服务基于 Java 平台的构建,依赖管理和项目信息管理项目构建:高度自动化,跨平台,可重用的组件,标准化的流程 依赖管理: 对第三方依赖包的管理&#xf…

使用LLaMA-Factory对AI进行认知的微调

使用LLaMA-Factory对AI进行认知的微调 引言1. 安装LLaMA-Factory1.1. 克隆仓库1.2. 创建虚拟环境1.3. 安装LLaMA-Factory1.4. 验证 2. 准备数据2.1. 创建数据集2.2. 更新数据集信息 3. 启动LLaMA-Factory4. 进行微调4.1. 设置模型4.2. 预览数据集4.3. 设置学习率等参数4.4. 预览…

复制粘贴小工具——Ditto

在日常工作中,复制粘贴是常见的操作,但Windows系统自带的剪贴板功能较为有限,只能保存最近一次的复制记录,这对于需要频繁复制粘贴的用户来说不太方便。今天,我们介绍一款开源、免费且功能强大的剪贴板增强工具——Dit…

无人机图传模块 wfb-ng openipc-fpv,4G

openipc 的定位是为各种模块提供底层的驱动和linux最小系统,openipc 是采用buildroot系统编译而成,因此二次开发能力有点麻烦。为啥openipc 会用于无人机图传呢?因为openipc可以将现有的网络摄像头ip-camera模块直接利用起来,从而…

Redis代金卷(优惠卷)秒杀案例-多应用版

Redis代金卷(优惠卷)秒杀案例-单应用版-CSDN博客 上面这种方案,在多应用时候会出现问题,原因是你通过用户ID加锁 但是在多应用情况下,会出现两个应用的用户都有机会进去 让多个JVM使用同一把锁 这样就需要使用分布式锁 每个JVM都会有一个锁监视器,多个JVM就会有多个锁监视器…

国产之光DeepSeek架构理解与应用分析

目录 初步探索DeepSeek的设计 一、核心架构设计 二、核心原理与优化 三、关键创新点 四、典型应用场景 五、与同类模型的对比优势 六、未来演进方向 从投入行业生产的角度看 一、DeepSeek的核心功能扩展 二、机械电子工程产业中的具体案例 1. 预测性维护(Predictive…

基于微信小程序的医院预约挂号系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

架构技能(四):需求分析

需求分析,即分析需求,分析软件用户需要解决的问题。 需求分析的下一环节是软件的整体架构设计,需求是输入,架构是输出,需求决定了架构。 决定架构的是软件的所有需求吗?肯定不是,真正决定架构…

【学习笔记】深度学习网络-正则化方法

作者选择了由 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 三位大佬撰写的《Deep Learning》(人工智能领域的经典教程,深度学习领域研究生必读教材),开始深度学习领域学习,深入全面的理解深度学习的理论知识。 在之前的文章中介绍了深度学习中用…

c/c++高级编程

1.避免变量冗余初始化 结构体初始化为0,等价于对该内存进行一次memset,对于较大的结构体或者热点函数,重复的赋值带来冗余的性能开销。现代编译器对此类冗余初始化代码具有一定的优化能力,因此,打开相关的编译选项的优…

Vue 入门到实战 七

第7章 渲染函数 目录 7.1 DOM树 7.2 什么是渲染函数 7.3 h()函数 7.3.1 基本参数 7.3.2 约束 7.3.3 使用JavaScript代替模板功能 7.1 DOM树 7.2 什么是渲染函数 在多数情况下,Vue推荐使用模板template来创建HTML。然而在一些应用场景中,需要使用J…

小程序-基础加强-自定义组件

前言 这次讲自定义组件 1. 准备今天要用到的项目 2. 初步创建并使用自定义组件 这样就成功在home中引入了test组件 在json中引用了这个组件才能用这个组件 现在我们来实现全局引用组件 在app.json这样使用就可以了 3. 自定义组件的样式 发现页面里面的文本和组件里面的文…