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

news2024/11/24 7:50:47

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

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

相关文章

【RSGIS数据资源】1980-2021年中国土地利用覆盖和变化数据集

文章目录 摘要1. 数据集概况2. 数据集组织形式2.1 1980-2015年中国森林覆盖数据集CFCD2.2 1980-2021年中国土地利用覆盖与变化数据集 3. 数据生产服务单位4. 引用 摘要 通过融合森林资源清查数据和20种遥感土地利用产品,重建生成了1980-2015年中国森林覆盖数据集&a…

JAVA大量数据导出excel

背景:因项目需要导出3万行,90列的数据到excel,使用传统的apache poi 直接导出,导致504连接超时无法导出。然后改造方法,异步导出。 一、准备一个导出类,属性有id,outputstrream,finleName,err,e…

五、Redis五种常用数据结构-SET

Redis的Set结构存储的数据和Java中的HashSet类似,都是无序且不重复的。其底层的数据结构有两种,一是当value为整数时,且数据量不大时采用intset来存储。其他情况使用dict字典存储。集合中最多存储232-1(40多亿)个数据。 1、常用命令 sadd k…

Vue中引入Element组件、路由router、Nginx打包部署

目录 1、Element-ui(饿了么ui) 演示: 怎么打开NPM脚本? Vue路由router Nginx打包部署Vue-Cli项目 1、Element-ui(饿了么ui) element-ui(饿了么ui)是一个非常好用且美观的组件库(插件库),主要用于网站快速成型,由国产团队饿了么…

网工交换基础——VLAN Maping

一、定义 VLAN Maping通过修改报文携带的VLAN Tag来实现不同VLAN的相互映射。 二、应用场景 1、场景一:两个VLAN相同的二层用户网络通过骨干网络互联,为了实现用户之间的二层互通,以及二层协议(例如MSTP等)的统一部署…

如何内网穿透,远程访问内网设备

文章目录 0.前言1.准备工作2.内网穿透原理3.配置公网服务器的frp5.配置访问内网主机6.配置win10的远程桌面访问(win11类似)7.参考资料 0.前言 最近想研究一些新东西,公司的机器不敢乱搞,公司测试的服务器安装软件太多&#xff0c…

React - Input框绑定动态State和监听onChange事件,输入时失去焦点

React - Input框绑定动态State和监听onChange事件,输入时失去焦点 一. 案例复现二. 解决方案 一. 案例复现 案例代码如下: import React, { useState } from react; import { Table, Input } from antd; const Column Table.Column; const mockData …

CSP-j 计算机硬件

计算机系统 计算机系统由计算机硬件和软件两部分组成。硬件包括中央处理器、存储器和外部设备等;软件是计算机的运行程序和相应的文档。计算机系统具有接收和存储信息、按程序快速计算和判断并输出处理结果等功能。 主要技术指标 字长:字长是指CPU能够同…

anaconda虚拟环境pytorch安装

1.先创建conda的虚拟环境 conda create -n gputorch python3.102.激活刚刚创建好的虚拟环境 conda activate gputorch3.设置镜像源 这一步是后面安装pytorch相关包所需要的来源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple4.查看电脑的显卡…

【C++进阶】C++中的map和set

一、关联式容器 在初阶阶段,我们已经接触过STL 中的部分容器,比如: vector 、 list 、 deque, forward_list 等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本…

PyQt5的布局管理

文章目录 1.垂直布局和水平布局垂直布局(QVBoxLayout):水平布局(QHBoxLayout): 2. 布局中的addStrech2.1 我们首先看只有一个Strech的情况,比较容易理解2.2 两个Strech2.3 多个Strech 3.栅格布局…

linux下使用jexus部署aspnet站点

1.运行环境 Centos 7 安装dos2unix工具 yum install dos2unix 安装jexus curl https://jexus.org/release/x64/install.sh|sudo sh2.网站部署 2.1. 将windows下的网站发布包Msc_qingdao_admin.zip上传到linux中, 然后解压后放入/var/www(没有则创建)目录下 r…

二叉树的遍历(前序 中序 后序)

一、前序遍历 顺序为: 根-->左子树---->右子树 先访问根节点,再递归进入根节点的左子树(通过递归不断往下遍历),直到访问的节点没有左子树,此时递归进入其右子树(通过递归进行相同操作&a…

简单问题汇总

一、vector和list 1.vector vector是可变大小数组的序列容器,拥有一段连续的内存空间,并且起始地址不变,因此能高效的进行随机存取,时间复杂度为o(1);但因为内存空间是连续的,所以在进行插入和删除操作时…

机器学习算法应用——关联规则分析(4-4)

关联规则分析(4-4) 关联规则分析(Association Rule Mining)是一种基于频繁项集的分析方法,它以最常出现在一起的元素之间的关系作为分析对象,主要用于发掘大数据中隐藏的关联规则,是数据挖掘技术…

【吃透Java手写】4-Tomcat-简易版

【吃透Java手写】Tomcat-简易版-源码解析 1 准备工作1.1 引入依赖1.2 创建一个Tomcat的启动类 2 线程池技术回顾2.1 线程池的使用流程2.2 线程池的参数2.2.1 任务队列(workQueue)2.2.2 线程工厂(threadFactory)2.2.3 拒绝策略&…

求阶乘n!末尾0的个数溢出了怎么办

小林最近遇到一个问题:“对于任意给定的一个正整数n,统计其阶乘n!的末尾中0的个数”,这个问题究竟该如何解决? 先用n5来解决这个问题。n的阶乘即n!5!5*4*3*2*1120,显然应该为2个数相乘等于10才能得到一个结…

记录minio的bug(Object name contains unsupported characters.)

场景是我将后端服务从121.xxx.xxx.xxx服务器上转移到了另一台服务器10.xxx.xxx.xxx 但图片都还在121.xxx.xxx.xxx服务器上,同样我10.xxx.xxx.xxx也安装了minio并且我的后端服务配置的minio地址也是10.xxx.xxx.xxx 此时有一个业务通过minio客户端获取图片&#xf…

自动化中遇到的问题归纳总结

1、动态元素定位不到 解决方法:尽量使用固定元素定位,如没有固定元素,则采用绝对路径进行定位,因为元素路径是唯一且不变的 2、自动化脚本执行速度较慢 尽量使用css方法定位元素,使用等待时,少用sleep方…

websocket最大数量的限制问题

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: h…