17、论文阅读:VMamba:视觉状态空间模型

news2024/11/26 10:19:59

前言

设计计算效率高的网络架构在计算机视觉领域仍然是一个持续的需求。在本文中,我们将一种状态空间语言模型 Mamba 移植到 VMamba 中,构建出一个具有线性时间复杂度的视觉主干网络。VMamba 的核心是一组视觉状态空间 (VSS) 块,搭配 2D 选择性扫描 (SS2D) 模块。通过沿四条扫描路径遍历,SS2D 帮助弥合一维选择性扫描的有序特性与二维视觉数据的非顺序结构之间的差距,从而便于从不同来源和视角收集上下文信息。基于 VSS 块,我们开发了一系列 VMamba 架构,并通过一系列架构和实现上的优化来加速其运算。大量实验证明了 VMamba 在各种视觉感知任务中的优异表现,尤其在输入规模的效率方面,相较于现有的基准模型显示出显著优势。代码链接

介绍

视觉表示学习是计算机视觉中的一个基础研究领域,随着深度学习的兴起,该领域取得了显著进展。为了表示视觉数据中的复杂模式,提出了两类主要的主干网络,即卷积神经网络 (CNN)视觉 Transformer (ViTs),并在多种视觉任务中得到了广泛应用。相比于 CNN,ViTs 由于融合了自注意力机制,通常在大规模数据上的学习能力更强。然而,自注意力机制对于标记数的二次复杂度在处理具有大空间分辨率的下游任务时带来了巨大的计算开销。

为应对这一挑战,已有大量研究致力于提升注意力计算的效率。然而,现有方法要么限制了有效感受野的大小,要么在多任务中表现出明显的性能下降。这促使我们开发一种新的视觉数据架构,保留原始自注意力机制的固有优势,即全局感受野和动态权重参数。

最近,在自然语言处理 (NLP) 领域中,Mamba 作为一种新颖的状态空间模型 (SSM) 出现,为长序列建模提供了一种具有线性复杂度的高效方法。受此进展的启发,我们提出了 VMamba,一种集成基于 SSM 模块的视觉主干网络,用于高效的视觉表示学习。然而,Mamba 的核心算法,即并行化的选择性扫描操作,主要用于处理一维序列数据。当将其应用于视觉数据时遇到挑战,因为视觉数据本质上缺乏顺序排列的组件结构。为了解决这一问题,我们提出了二维选择性扫描 (SS2D) 模块,一种为空间域遍历而设计的四向扫描机制。与自注意力机制相比,SS2D 确保每个图像块仅通过沿相应扫描路径计算的压缩隐藏状态获得上下文信息,从而将计算复杂度从二次降低为线性。

基于 VSS 块,我们开发了一系列 VMamba 架构(即 VMamba-Tiny/Small/Base),并通过一系列架构优化和实现上的改进来加速其运行。与基于 CNN(ConvNeXt)、ViT(Swin 和 HiViT)和 SSM(S4ND 和 Vim)构建的基准视觉模型相比,VMamba 在 ImageNet-1K 上各个模型规模的图像分类准确率均优于基准模型。具体而言,VMamba-Base 达到了 83.9% 的 top-1 准确率,比 Swin 提高了 0.4%,吞吐量也大幅领先 Swin 超过 40%(646 vs. 458)。VMamba 在多种下游任务中表现优越,其中 VMamba-Tiny/Small/Base 在 COCO 上的目标检测(1× 训练)中达到了 47.3%/48.7%/49.2% 的 mAP,分别超越 Swin 4.6%/3.9%/2.3% 和 ConvNeXt 3.1%/3.3%/2.2%。在 ADE20K 上的单尺度语义分割中,VMamba-Tiny/Small/Base 实现了 47.9%/50.6%/51.0% 的 mIoU,分别超越 Swin 3.4%/3.0%/2.9% 和 ConvNeXt 1.9%/1.9%/1.9%。此外,与 ViT 模型在输入标记数增加时复杂度呈二次增长不同,VMamba 在保持类似性能的同时实现了 FLOPs 的线性增长,展现了其在输入规模扩展方面的先进性。

本研究的贡献总结如下:

  • 我们提出了 VMamba,这是一种基于 SSM 的视觉主干网络,用于视觉表示学习,并具有线性时间复杂度。通过一系列架构设计和实现细节上的改进,提高了 VMamba 的推理速度。
  • 我们引入了二维选择性扫描 (SS2D) 模块以弥合一维数组扫描与二维平面遍历之间的差距,使得选择性 SSM 能够扩展到视觉数据处理
  • 在没有额外技巧的情况下,VMamba 在图像分类、目标检测和语义分割等多种视觉任务中表现出色。同时,它在输入序列长度方面展示了显著的适应性,实现了计算复杂度的线性增长。

相关工作

卷积神经网络 (CNNs)。自 AlexNet 起,大量研究致力于提升 CNN 模型在多种视觉任务中的建模能力和计算效率。提出了更复杂的算子,例如深度卷积和可变形卷积,以增强 CNN 的灵活性和效果。近期,受 Transformer 成功的启发,现代 CNN 通过引入长距离依赖关系和动态权重,在架构设计中表现出色。

视觉 Transformer (ViTs)。作为代表性开创性工作,ViT 探讨了基于原始 Transformer 架构的视觉模型的有效性,揭示了大规模预训练对图像分类性能提升的重要性。为减少 ViT 对超大数据集的依赖,DeiT 引入了教师-学生蒸馏策略,将 CNN 模型中的知识迁移至 ViTs,强调了感知中的归纳偏置的重要性。沿此思路,后续研究提出了层次化 ViTs。

另一研究方向专注于提升自注意力机制的计算效率,这是 ViTs 的核心。通过将自注意力表示为核特征映射的线性点积,线性注意力利用矩阵乘法的结合性来将计算复杂度从二次降为线性。GLA 进一步提出了硬件高效的线性注意力变体,平衡了内存移动与并行化的关系。RWKV 也利用线性注意力机制结合了 Transformer 的可并行训练与 RNN 的高效推理。RetNet 通过添加门控机制提供了并行化计算路径,而 RMT 则将时间衰减机制引入空间域以增强视觉表示学习。

状态空间模型 (SSMs)。尽管 ViT 架构在视觉任务中得到了广泛应用,自注意力的二次复杂度在处理长输入序列(如高分辨率图像)时带来了挑战。为提升扩展效率,SSMs 作为 Transformer 的替代方案引起了研究界的关注。Gu 等人展示了基于 SSM 的模型在长程依赖处理方面的潜力,通过 HiPPO 初始化实现了这一点。为了提高实际可行性,S4 提出了将参数矩阵规范化为对角结构。随后,出现了各种结构化 SSM 模型,分别引入了不同的架构改进,包括复对角结构、多输入多输出支持、对角加低秩操作的分解以及选择机制。这些进展也被集成到更大的表示模型中,进一步展示了结构化状态空间模型在各种应用中的多样性和可扩展性。尽管这些模型主要集中在将 SSM 应用于文本和语音等长序列数据,但关于将 SSM 应用于具有二维结构的视觉数据的探索仍然有限。

准备工作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

VMamba:视觉状态空间模型

网络架构

在这里插入图片描述

在这里插入图片描述

视觉数据的 2D 选择性扫描 (SS2D)

尽管 S6 中扫描操作的顺序性非常适合处理涉及时间数据的 NLP 任务,但在应用于视觉数据时却带来了很大挑战,因为视觉数据本质上是非顺序的,并包含空间信息(例如局部纹理和全局结构)。为了解决此问题,S4ND [45] 通过卷积操作重新定义了 SSM,将核从 1D 直接扩展到 2D,通过外积实现。然而,这种修改导致权重不再与输入无关,从而限制了对上下文信息的捕捉能力。因此,我们仍采用选择性扫描方法 [17] 来处理输入,并提出二维选择性扫描 (SS2D) 模块,以适应视觉数据的 S6,同时保持其优势。

如图 2 所示,SS2D 的数据传递包括三个步骤:交叉扫描、使用 S6 块的选择性扫描和交叉合并对于给定的输入数据,SS2D 首先沿四条不同的遍历路径展开输入块序列(即交叉扫描),然后并行地使用单独的 S6 块处理每个块序列,最后将结果序列重新整形并合并形成输出图(即交叉合并)。通过采用互补的一维遍历路径,SS2D 使图像中的每个像素能够有效地从不同方向整合所有其他像素的信息,从而在二维空间中建立全局感受野。

加速 VMamba

在这里插入图片描述

实验

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

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

相关文章

用 Python 从零开始创建神经网络(三):添加层级(Adding Layers)

添加层级(Adding Layers) 引言1. Training Data2. Dense Layer Class 引言 我们构建的神经网络变得越来越受人尊敬,但目前我们只有一层。当神经网络具有两层或更多隐藏层时,它们变成了“深度”网络。目前我们只有一层&#xff0c…

推荐一款功能强大的视频修复软件:Apeaksoft Video Fixer

Apeaksoft Video Fixer是一款功能强大的视频修复软件,专门用于修复损坏、不可播放、卡顿、画面失真、黑屏等视频问题。只需提供一个准确且有效的样本视频作为参考,该软件就能将受损视频修复到与样本视频相同的质量。该软件目前支持MP4、MOV、3GP等格式的…

Web前端开发--HTML语言

文章目录 前言1.介绍2.组成3.基本框架4.常见标签4.1双标签4.1.1.标题标签4.2.2段落标签4.1.3文本格式化标签4.1.4超链接标签4.1.5视频标签4.1.6 音频标签 4.2单标签4.2.1换行标签和水平线标签4.2.2 图像标签 5.表单控件结语 前言 生活中处处都有网站,无论你是学习爬…

[ DOS 命令基础 2 ] DOS 命令详解-网络相关命令

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

gitlab无法创建合并请求是所有分支都不显示

点击Merge Requests ------> New merge request 创建新的合并请求时,在Source branch和Target branch中一个分支都不显示 排查思路: 1.怀疑是权限问题。 发现只有我的一个账号出现,检查了账号的权限,尝试了master、develop角色…

【温度表达转化】

【温度表达转化】 C语言代码C代码Java代码Python代码 💐The Begin💐点点关注,收藏不迷路💐 利用公式 C5∗(F−32)/9 (其中C表示摄氏温度,F表示华氏温度) 进行计算转化。 输出 输出一行&#x…

「QT」几何数据类 之 QPoint 整型点类

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

[Linux]:高级IO

1. IO 理解 1.1 IO 的基本概念 I/O即输入/输出(input/output),是计算机系统中极为关键的操作环节。 在经典的冯诺依曼体系结构框架下,其核心在于数据的传输流向界定了输入与输出的概念。具体而言,当把数据从诸如键盘…

【GeoJSON在线编辑平台】(2)吸附+删除+挖孔+扩展

前言 在上一篇的基础上继续开发,补充上吸附功能、删除矢量、挖孔功能。 实现 1. 吸附 参考官方案例:Snap Interaction 2. 删除 通过 removeFeature 直接移除选中的要素。 3. 挖孔 首先是引入 Turf.js ,然后通过 mask 方法来实现挖孔的…

【ReactPress】React + antd + NestJS + NextJS + MySQL 的简洁兼时尚的博客网站

ReactPress 是使用React开发的开源发布平台,用户可以在支持React和MySQL数据库的服务器上架设属于自己的博客、网站。也可以把 ReactPress 当作一个内容管理系统(CMS)来使用。 前言 此项目是用于构建博客网站的,包含前台展示、管理…

ZISUOJ 2024算法基础公选课练习一(1)

前言、 又是一年算法公选课&#xff0c;与去年不同的是今年学了一些纯C&#xff08;而不是带类的C&#xff09; 一、我的C模板 1.1 模板1 #include <bits/stdc.h> using i64 long long;int main() {std::cin.tie(nullptr)->sync_with_stdio(false);return 0; } 1…

【1】虚拟机安装

1.安装VMware WorkStation Pro VMware下载地址&#xff1a; 密钥&#xff1a;YF390-0HF8P-M81RQ-2DXQE-M2UT6 2.新建虚拟机 centos7下载地址&#xff1a;centos-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿里云

【SpringBoot】SpringBoot自带的Jackson入门使用

导入依赖 springboot自带的&#xff0c;挨个点进去&#xff0c;就能找到 自定义对象转换器 import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModu…

软件工程概论项目(一),git环境的配置和平台代码的拉取

距离软工概论项目答辩还有五个周的时间&#xff0c;需要做一个项目&#xff0c;把心得体会都做一个记录。以便以后进行回顾和反思 这里写目录标题 一、环境的配置gitbash 一、环境的配置 gitbash 安装gitbash&#xff0c;简单说两句&#xff0c;git用于多人协作和代码托管&am…

分布式数据库中间件mycat

MyCat MyCat是一个开源的分布式数据库系统&#xff0c;它实现了MySQL协议&#xff0c;可以作为数据库代理使用。 MyCat(中间件)的核心功能是分库分表&#xff0c;即将一个大表水平分割为多个小表&#xff0c;存储在后端的MySQL服务器或其他数据库中。 它不仅支持MySQL&#xff…

万字长文解读深度学习——循环神经网络RNN、LSTM、GRU、Bi-RNN

&#x1f33a;历史文章列表&#x1f33a; 深度学习——优化算法、激活函数、归一化、正则化深度学习——权重初始化、评估指标、梯度消失和梯度爆炸深度学习——前向传播与反向传播、神经网络&#xff08;前馈神经网络与反馈神经网络&#xff09;、常见算法概要汇总万字长文解读…

一文了解什么是腾讯云开发

关于云开发的猜想 说到云开发&#xff0c;作为开发者的大家是否大概就有了想法。比如说过去的开发工作都是在自己本地电脑的开发工具&#xff0c;比如IDEA开发工具进行开发的&#xff0c;开发完成后再部署到服务器测试以及上线。那么腾讯云开发&#xff0c;是不是就是不用本地…

双指针算法的妙用:提高代码效率的秘密(2)

双指针算法的妙用&#xff1a;提高代码效率的秘密&#xff08;2&#xff09; 前言&#xff1a; 小编在前几日讲述了有关双指针算法两道题目的讲解&#xff0c;今天小编继续进行有关双指针算法习题的讲解&#xff0c;老规矩&#xff0c;今天还是两道题目的讲解&#xff0c;希望…

【Python】从入门开始抓取你想要的电影,一周可掌握基础,附完整源码

Python学习很简单&#xff0c;只是你走进了误区。 为什么你一定要先掌握枯燥的基础点后&#xff0c;再去做实际操作呢&#xff1f; 其实&#xff0c;你根本坚持不了那么长时间&#xff0c;但实际上你可以直接去做python项目。 不信&#xff1f;看看我做这个项目的思路&#x…

逐梦代码深林:Linux编译之舞,链接之诗——自举、动静态库的浪漫旅程

文章目录 问题引入&#xff0c;为什么要进行编译->汇编?一、详细解释编译器自举1. 从最初的二进制编程到汇编2. 第一代汇编编译器的诞生3. 编译器自举的出现&#xff1a;从汇编到更高级的编译器4. 自举的延续&#xff1a;从汇编到高级编程语言5. 为什么要进行编译器自举&am…