Vision Mamba:高效视觉表示学习双向状态空间模型,超越Vision Transformer!

DeepVisionary 每日深度学习前沿科技推送&顶会论文分享,与你一起了解前沿深度学习信息!

在这里插入图片描述

Vision Mamba: Efficient Visual Representation Learning with Bidirectional State Space Model

引言:探索视觉领域的新方向

在计算机视觉领域,传统的卷积神经网络(CNN)和最近兴起的视觉变换器(ViT)已经取得了显著的成就。然而,随着图像分辨率的不断提高和计算资源的限制,这些模型在处理高分辨率图像时面临着速度和内存效率的挑战。最近的研究表明,状态空间模型(SSM)提供了一种新的视角来处理长序列数据,展示出处理高维视觉数据的潜力。特别是,Mamba模型通过引入时间变化的参数和硬件感知的设计,显著提高了模型的训练和推理效率。这启发我们探索将SSM应用于视觉领域,尤其是在不依赖自注意力机制的情况下,如何有效地处理图像和视频数据。

在这篇博客中,我们将深入探讨如何通过双向状态空间模型(Bidirectional SSM)和位置嵌入来构建一个新的视觉基础模型——Vision Mamba(Vim)。Vim模型不仅在图像分类、对象检测和语义分割等标准视觉任务上超越了现有的最优视觉变换器模型,如DeiT,而且在处理高分辨率图像时,展现出更高的计算和内存效率。通过这些探索,我们希望为未来的视觉模型提供一种新的方向,使其能够更高效地处理大规模和高分辨率的视觉数据。

论文标题: Vision Mamba: Efficient Visual Representation Learning with Bidirectional State Space Model

机构: Huazhong University of Science and Technology, Horizon Robotics, Beijing Academy of Artificial Intelligence

论文链接: Vision Mamba Paper

项目地址: Code & Models - hustvl/Vim

在这里插入图片描述

简介:从Mamba到Vim的演变

1. Mamba模型的基本原理

Mamba模型是基于状态空间模型(SSM)的一种深度学习模型,它通过时间变化的参数和硬件感知的算法来实现高效的训练和推理。Mamba的优越性能表明它是语言建模中Transformer的一个有前途的替代品。Mamba模型的设计灵感来源于经典的卡尔曼滤波器模型,特别擅长捕捉长范围依赖关系,并且能够从并行训练中受益。

2. Vim模型的创新之处

Vim模型是在Mamba的基础上为视觉数据设计的一种新型视觉主干网络。Vim模型的创新之处在于它采用了双向的状态空间模型来处理图像序列,并通过位置嵌入来增强模型对空间信息的感知能力。这使得Vim模型能够在不依赖自我注意力机制的情况下,有效地进行视觉表示学习。此外,Vim模型在处理高分辨率图像时显示出了更高的计算和内存效率,例如,在处理1248×1248分辨率的图像时,Vim的推理速度是DeiT的2.8倍,且节省了86.8%的GPU内存。

在这里插入图片描述

Vim模型的核心设计

1. 双向状态空间模型的引入

Vim模型的核心设计之一是引入了双向状态空间模型(Bi-directional SSM)。这种模型可以从两个方向(前向和后向)处理输入的图像块序列,从而更全面地捕捉图像中的全局上下文信息。这种双向处理方式不仅增强了模型的数据依赖性,还提高了对复杂视觉场景的理解能力。

2. 位置嵌入的作用

在Vim模型中,位置嵌入被用来增强模型对图像中位置信息的感知。通过将位置嵌入加入到线性投影的图像块向量中,Vim能够有效地处理图像序列中的空间关系,这对于密集预测任务尤为重要。位置嵌入的引入使得Vim在进行图像分类、对象检测和语义分割等任务时,能够展现出更好的性能和鲁棒性。

3. 图像块的处理和特征提取

Vim模型首先将输入的二维图像转换为扁平化的二维块,然后通过线性投影将这些块转换为向量,并加入位置嵌入。这些图像块向量随后被送入Vim编码器的多个层中进行处理。在每一层中,图像块向量会经过双向状态空间模型的处理,有效压缩和提取特征,最终输出用于分类或其他下游任务的特征表示。这种对图像块的有效处理和特征提取是Vim模型高效处理高分辨率图像的关键。

在这里插入图片描述

Vim模型的效率分析

1. 计算效率的提升

Vim模型通过采用双向状态空间模型(SSM)和位置嵌入,有效地提高了计算效率。在处理高分辨率图像时,Vim的计算速度是DeiT的2.8倍,同时节省了86.8%的GPU内存。这种效率的提升主要得益于Vim的线性计算复杂性,使其能够处理更长的序列,适用于大规模应用。

2. 内存使用的优化

Vim模型在内存使用上进行了优化,通过重计算中间状态和激活函数输出来降低GPU内存需求。这种方法不仅减少了内存占用,还保持了处理速度,使Vim能够在不牺牲性能的情况下处理更大的数据集和更复杂的模型。

3. 硬件友好的设计

Vim模型的设计充分考虑了现代硬件的特点,通过优化内存输入输出操作和利用SRAM的高带宽特性,减少了对慢速HBM的依赖。这种硬件友好的设计使得Vim在现代GPU上运行更为高效,特别是在处理需要大量并行计算和高内存带宽的视觉任务时。

在这里插入图片描述

实验设置和结果

1. 图像分类任务的实验设置

在ImageNet-1K数据集上,Vim模型采用了标准的数据增强技术和AdamW优化器进行训练。模型训练了300个周期,使用余弦退火调度和初始学习率1×10^-3。此外,Vim还进行了长序列微调,以充分利用其长序列建模能力,进一步提高模型性能。

2. 语义分割和对象检测的性能

在ADE20K和COCO数据集上,Vim模型与常用的UperNet和Cascade Mask R-CNN框架结合使用,展示了其在语义分割和对象检测任务上的优越性能。Vim在不同尺度上均优于DeiT模型,显示了其在处理密集预测任务时的强大能力。

3. 高分辨率图像处理的优势

Vim模型在处理高分辨率图像时展现出显著的速度和内存效率优势。随着图像分辨率的增加,Vim在帧率和GPU内存使用上均优于DeiT,特别是在图像尺寸达到1248×1248时,Vim的表现尤为突出。这一优势使得Vim非常适合用于高分辨率的下游视觉应用,如航空图像、医学图像和计算病理学等领域。

在这里插入图片描述

深入分析:Vim模型的双向SSM设计

1. 双向序列处理的优势

双向序列处理在Vim模型中起到了至关重要的作用。通过在模型中引入双向SSM(State Space Model),Vim能够有效地处理视觉数据中的全局上下文,这是因为双向处理可以同时考虑到图像序列中前后的信息。这种设计使得Vim在进行图像分类、对象检测和语义分割等任务时,能够更准确地捕捉到图像中的细节和上下文信息。

例如,在进行ImageNet分类任务时,Vim模型展示出了优于现有最优视觉Transformer模型DeiT的性能。具体来说,Vim在处理高分辨率图像时,不仅速度提高了2.8倍,还节省了86.8%的GPU内存。这一性能的提升,得益于其双向SSM的设计,使得模型能够更高效地处理长序列数据,从而在不牺牲准确性的情况下提高计算效率。

2. 实验中的表现对比

在多个标准视觉任务中,Vim模型与其他基于SSM的模型以及传统的Transformer模型进行了比较。结果显示,Vim在ImageNet分类任务上超过了DeiT模型,并且在语义分割和对象检测任务中也显示出了更好的性能。具体来说,在ADE20K语义分割任务中,Vim比DeiT高出1.8的mIoU分数;在COCO对象检测任务中,Vim在小型和中型对象检测上也表现更优。

这些实验结果验证了Vim双向SSM设计的有效性,尤其是在需要处理复杂视觉场景和长范围依赖时,Vim能够提供更加精确和全面的视觉理解。
在这里插入图片描述

Vim模型的应用前景

1. 未监督学习和多模态任务

Vim模型的设计允许它在未监督学习环境中进行有效的预训练,这为使用大规模未标记视觉数据提供了可能。此外,由于Vim模型处理视觉数据的方式类似于处理语言数据,这使得它在多模态学习任务中尤其有用,例如可以在视觉-语言预训练(如CLIP风格的预训练)中发挥重要作用。

2. 高分辨率医学图像和远程感测图像的处理

Vim模型在处理高分辨率图像方面显示出显著的优势,这使得它特别适合用于医学图像和远程感测图像的分析。在这些应用中,图像的分辨率通常很高,且需要精确的像素级预测。Vim模型的高效性能可以大大减少处理这些高分辨率图像所需的计算资源和时间,从而在保证分析精度的同时提高处理速度。

总结与未来工作

1. Vim模型的创新点和优势

Vim模型作为一种新型的视觉基础模型,其主要创新点在于采用了双向状态空间模型(SSM)来处理视觉数据,并引入位置嵌入来增强模型对空间信息的感知能力。这一设计使得Vim模型在不依赖自注意力机制的情况下,也能有效地进行全局视觉上下文建模。在图像分类、对象检测和语义分割等任务上,Vim显示出了优于现有视觉Transformer模型(如DeiT)的性能。

Vim模型的主要优势包括:

  • 高效率:Vim在处理高分辨率图像时,相比DeiT模型,具有更高的计算和内存效率。例如,在1248×1248分辨率的图像批处理推理中,Vim的速度是DeiT的2.8倍,且节省了86.8%的GPU内存。
  • 强大的性能:在多个标准视觉任务上,Vim均展现出卓越的性能。例如,在ImageNet分类任务上,Vim的表现超过了DeiT和其他基于SSM的模型。
  • 双向建模:Vim的双向SSM设计使其在密集预测任务中表现出更强的鲁棒性和准确性。

2. 未来研究的方向和潜在应用

未来的研究可以围绕以下几个方向进行:

  • 无监督学习和预训练:探索Vim模型在无监督学习和预训练方面的应用,例如通过掩码图像建模预训练来进一步提升模型的视觉表征能力。
  • 多模态学习:基于Vim模型的架构,探索其在多模态任务中的应用,例如结合CLIP风格的预训练来处理视觉和文本的联合表示。
  • 高分辨率图像分析:利用Vim模型在处理高分辨率图像方面的优势,开展医疗图像、遥感图像和长视频等高分辨率图像的分析工作。

通过这些研究方向的探索,Vim模型有望成为下一代高效且功能强大的视觉基础模型,为计算机视觉领域带来更多的创新和应用。

在这里插入图片描述

关注DeepVisionary 了解更多深度学习前沿科技信息&顶会论文分享!

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

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

相关文章

地球行星UE5和UE4

地球行星,包含多种地球风格,可蓝图控制自转和停止,可材质自转. 支持版本4.21-5.4版本 下载位置:https://mbd.pub/o/bread/ZpWZm5lv b站工坊:https://gf.bilibili.com/item/detail/1105582041 _______________________…

luceda ipkiss教程 68:通过代码模板提高线路设计效率

在用ipkiss设计器件或者线路时,经常需要输入: from ipkiss3 import all as i3那么有什么办法可以快速输入这段代码呢?这里就可以利用Pycharm的 live template功能,只需要将文件:ipkiss.xml (luceda ipkiss教程 68&…

浏览器a标签下载txt、json文件自动打开预览的问题

背景 由于浏览器的特性.txt .pdf .json 等等文件放在a标签的href属性中会被浏览器直接打开,这时可以给a添加download属性强制下载,但是当执行 跨域下载 文件时download属性就会失效。 解决办法 跨域会导致download属性失效,使用xhr下载方式…

Vue3:项目创建

Vue 3 相对于 Vue 2 带来了许多改进和优点,这些改进主要是为了提高性能、开发体验和可维护性。但是对于创建项目,Vue3也可以采用跟Vue2相同的方式。 使用CLI创建 1. 安装Vue CLI 首先,确保你已经安装了Node.js(建议使用LTS版本…

金蝶向左,用友向右

【科技明说 | 科技热点关注】 科技明说分析指出,金蝶和用友作为国内数一数二的财务软件巨头,两者不仅是竞争对手,也是很好的发展队友,在云计算时代、AI时代都相继进行了不同程度的产品与服务创新。与时俱进的好处&…

如何将图片表格转成excel?分享3种好用的软件!

在信息爆炸的时代,我们每天都会接触到大量的图片表格。这些表格中可能包含着我们需要的各种数据和信息,但是如何将它们快速、准确地转化为Excel格式,以便我们进行编辑、分析呢?今天,就让我们一起来探讨一下如何将图片表…

图形网络的自适应扩散 笔记

1 Title Adaptive Diffusion in Graph Neural Networks(Jialin Zhao、Yuxiao Dong、Ming Ding、Evgeny Kharlamov、Jie Tang)【NIPS 2021】 2 Conclusion The neighborhood size in GDC is manually tuned for each graph by conductin…

AXI4写时序在AXI Block RAM (BRAM) IP核中的应用

在本文中将展示描述了AXI从设备(slave)AXI BRAM Controller IP核与Xilinx AXI Interconnect之间的写时序关系。 1 Single Write 图1是一个关于32位宽度的BRAM(Block RAM)的单次写入操作的例子。这个例子展示了如何向地址0x1000h…

MySQL——变量的浮点数问题处理

新建链接,自带world数据库,里面自带city表格。 DQL #MySQL变量的浮点数问题处理 set dx3.14,dy3.25; select dxdy;#计算显示异常,会有很多00000的提示set resultdxdy; select result; 查询结果

Jetson AGX Orin平台搭建whisper语音转写实时录音

1:下载whisper C版本 whisper.cpp 编译WHISPER_CUDA1 make -j 错误 A: 平台不支持,修改Makefile,查看支持的计算ARCH_FLAG nvcc fatal : Value all is not defined for option gpu-architecture make: *** [Makefile:290: ggml-cuda.o…

C++青少年简明教程:C++中的常量、变量、表达式和语句

C青少年简明教程:C中的常量、变量、表达式和语句 在C编程中,常量、变量、表达式和语句是基本的编程概念。 常量(Constants):在程序中具有固定值的数据称为常量。常量可以是字面值,如整数、浮点数、字符或…

Linux 第二十六章

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C,linux 🔥座右铭:“不要等到什么都没有了…

【挑战30天首通《谷粒商城》】-【第一天】【10 番外篇】 解决docker 仓库无法访问 + MobaXterm连接VirtualBox虚拟机

文章目录 课程介绍 1、解决docker 仓库无法访问 2、 MobaXterm连接VirtualBox虚拟机 Stage 1:下载MobaXterm选择适合你的版本 Stage 2:vagrant ssh 连接,开启ssh访问 Stage 2-1:su获取root账号权限,输入密码(默认vagra…

Linux技能

文章目录 Linux2024心得优秀博客 Linux2024 心得 会一些基本的命令,解决生产的问题有时候会用的到 优秀博客 02、Linux相关工具及操作03、Linux实用指令 cat xxx | grep “xx xx” 这个应用在从大量的日志文件中找到报错的信息 04、Linux高级部分05、JavaEE定制…

【Web】CTFSHOW 七夕杯 题解

目录 web签到 easy_calc easy_cmd web签到 CTF中字符长度限制下的命令执行 rce(7字符5字符4字符)汇总_ctf中字符长度限制下的命令执行 5个字符-CSDN博客7长度限制直接梭了 也可以打临时文件RCE import requestsurl "http://4ae13f1e-8e42-4afa-a6a6-1076acd08211.c…

C++ Builder XE EnumWindowsProc遍历所有窗口的名称

BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) { // 这里可以添加你的处理逻辑 // 例如,将句柄添加到列表中或者其他操作 // 这里我们仅仅输出到调试窗口 OutputDebugString(L"枚举窗口句柄: "); char windowHandle[10];…

ICode国际青少年编程竞赛- Python-4级训练场-while语句入门

ICode国际青少年编程竞赛- Python-4级训练场-while语句入门 1、 while Flyer.disappear():wait() Dev.step(2)2、 Dev.step(1) while Flyer.disappear():wait() Dev.step(5)3、 while Flyer[0].disappear():wait() Dev.step(3) Dev.step(-1) while Flyer[0].disappear():…

准实时数仓搭建指南:以仓储式会员商超为模拟场景

在电商和新零售持续冲击传统零售商超的今天,仓储式会员店反而成功逃脱曾经的“水土不服”预测,业绩一路向好。与此同时,随着人工智能、大数据、智慧物流等技术的不断革新,零售批发的消费场景也进一步拓展,对数据分析的…

Linux部署安装

Linux部署安装 Linux中有两种软件安装包 一、源码包 软件的源代码是软件的原始数据,但是源代码不能直接在计算机中直接运行安装。 需要通过编译将源代码转换为计算机可以识别的机器语言,之后才可以进行安装。 源码包安装的方式可以在安装过程中发根据…

RERCS系统-WDA+BOPF框架实战例子 PART 1-新建List UIBB(列表组件)并分配Feeder Class和Node Element

需求背景: 已有的项目主数据功能,新增一个列表UIBB显示主数据额外的关联数据明细。 1、Fiori页面通过右键-技术帮助打开对应的组件配置; 2、双击对应的组件配置,调整对应的页面新建UIBB; 3、填写对应的UIBB属性字段&a…