视觉Mamba:基于双向状态空间模型的高效视觉表征学习

2024-01-30 23:04

本文主要是介绍视觉Mamba:基于双向状态空间模型的高效视觉表征学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘要

https://arxiv.org/pdf/2401.09417v1.pdf
最近,具有高效硬件感知设计的状态空间模型(SSMs),例如Mamba,在长序列建模方面展现出了巨大潜力。纯粹基于SSMs构建高效和通用的视觉骨干网络是一个吸引人的方向。然而,由于视觉数据的空间敏感性和视觉理解的全局上下文需求,用SSMs表示视觉数据是一项挑战。本文表明,视觉表示学习对自注意力的依赖不是必需的,并提出了一个新的通用视觉骨干网络,该网络使用双向Mamba块(Vim),通过位置嵌入标记图像序列,并使用双向状态空间模型压缩视觉表示。在ImageNet分类、COCO目标检测和ADE20k语义分割任务上,Vim与DeiT等完善的视觉变换器相比性能更高,同时还显著提高了计算和内存效率。例如,Vim比DeiT快2.8倍,在执行批量推理以提取分辨率为1248×1248的图像特征时节省了86.8%的GPU内存。结果表明,Vim能够克服在执行高分辨率图像的Transformer风格理解时的计算和内存限制,并且有潜力成为下一代视觉基础模型的骨干网络。
在这里插入图片描述

1. 引言

最近的研究进展引发了对状态空间模型(SSM)的极大兴趣。源自经典的状态空间模型[30],现代的SSM在捕捉长距离依赖方面表现出色,并受益于并行训练。一些基于SSM的方法,如线性状态空间层(LSSL)[22]、结构化状态空间序列模型(S4)[21]、对角线状态空间(DSS)[24]和S4D[23],被提出用于处理各种任务和模式的序列数据,特别是在建模长距离依赖方面。由于卷积计算和近线性计算,它们在处理长序列时效率很高。2-D SSM [2]、SGConvNeXt [37]和ConvSSM [52]将SSM与CNN或Transformer架构相结合,用于处理2-D数据。最近的工作,Mamba [20],将时间变化参数纳入SSM,并提出了一个硬件感知算法,以实现高效的训练和推理。Mamba的优良扩展性能表明,它是语言建模中Transformer的有前途的替代品。然而,针对视觉任务的纯SSM基础骨干尚未被探索。

视觉Transformer(ViTs)在视觉表示学习方面取得了巨大成功,在大规模自监督预训练和下游任务的高性能方面表现出色。与卷积神经网络相比,其核心优势在于ViT可以通过自注意力为每个图像块提供与数据/补丁相关的全局上下文。这不同于使用相同参数(即卷积滤波器)的所有位置的卷积网络。另一个优势是模态无关的建模,将图像视为一系列没有2D归纳偏置的补丁,使其成为多模态应用的优选架构[3, 36, 40]。同时,Transformer中的自注意力机制在处理长距离视觉依赖关系时,例如处理高分辨率图像时,在速度和内存使用方面带来了挑战。

受到Mamba在语言建模方面取得成功的启发,我们可以将这一成功从语言转移到视觉,即设计一个使用先进SSM方法的通用且高效的视觉骨干网络,这非常吸引人。然而,Mamba面临两个挑战:单向建模和缺乏位置意识。为了解决这些挑战,我们提出了Vision Mamba(Vim)块,该块结合了双向SSM来进行数据依赖的全局视觉上下文建模,并使用位置嵌入进行位置感知的视觉识别。我们首先将输入图像分割成补丁,并将其线性投影为向量传递给Vim。在Vim块中,图像补丁被视为序列数据,通过提出的双向选择性状态空间有效地压缩视觉表示。此外,Vim块中的位置嵌入提供了对空间信息的感知,使Vim在密集预测任务中更加鲁棒。在目前阶段,我们在ImageNet数据集上使用监督图像分类任务训练Vim模型,然后使用预训练的Vim作为骨干来执行下游密集预测任务的视觉表示学习,例如语义分割、目标检测和实例分割。与Transformers一样,Vim可以在大规模无监督视觉数据上进行预训练以获得更好的视觉表示。由于Mamba的效率更高,Vim的大规模预训练可以以更低的计算成本实现。

与针对视觉任务的其他基于SSM的模型相比,Vim是一种纯SSM方法,以序列方式对图像进行建模,这对于通用且高效的骨干网络来说更有前途。由于具有位置意识的双向压缩建模,Vim是第一个用于处理密集预测任务的纯SSM基础模型。与最令人信服的基于Transformer的模型(即DeiT [60])相比,Vim在ImageNet分类方面取得了优越的性能。此外,Vim在GPU内存和推理时间方面更加高效,对于高分辨率图像而言,这使得Vim能够直接进行顺序视觉表示学习,而无需依赖于2D先验(例如ViTDet [38]中的2D局部窗口)来完成高分辨率视觉理解任务,同时实现了比DeiT更高的准确性。

我们的主要贡献可以总结如下:

• 我们提出了Vision Mamba(Vim),该模型结合了双向SSM进行数据依赖的全局视觉上下文建模,并使用位置嵌入进行位置感知的视觉理解。

• 无需注意力机制,提出的Vim具有与ViT相同的建模能力,同时具有亚二次时间复杂度和线性内存复杂度。具体来说,我们的Vim比DeiT快2.8倍,在执行批量推理以提取分辨率为1248×1248的图像特征时,可节省86.8%的GPU内存。

• 我们对ImageNet分类和下游密集预测任务进行了大量实验。结果表明,与完善的优化普通视觉Transformer(即DeiT)相比,Vim实现了优越的性能。

• 由于Mamba的高效硬件感知设计,Vim在处理高分辨率计算机视觉任务(例如视频分割、航空图像分析、医学图像分割和计算病理学)时比基于自注意力的DeiT更加高效。

2、相关研究

通用视觉骨干网络架构。在早期阶段,ConvNet [34]成为计算机视觉的默认标准网络设计。许多卷积神经架构[25, 26, 33, 50, 51, 56–58, 63, 72]已被提出作为各种视觉应用的视觉骨干网络。具有开创性的工作,Vision Transformer(ViT) [14]改变了这一领域。它将图像视为一系列平坦的2D补丁,并直接应用纯Transformer架构。ViT在图像分类及其扩展能力方面的出色结果激发了许多后续工作 [16, 59, 61, 62]。一方面的工作专注于通过将2D卷积先验引入ViT来设计混合架构 [9, 13, 15, 69]。PVT [66]提出了一个金字塔结构Transformer。Swin Transformer [42]在移位窗口内应用自注意力。另一方面的研究工作侧重于通过更先进的设置改进传统的2D ConvNets [41, 67]。ConvNeXt [43]回顾了设计空间并提出了纯ConvNets,这些ConvNets可以像ViT及其变种一样可扩展。RepLKNet [12]提出了将现有ConvNets的核大小扩大,以带来改进。

尽管这些主导的后续工作通过引入2D先验在ImageNet [10]和各种下游任务[39, 74]上展示了优越的性能和更高的效率,但随着大规模视觉预训练[1, 5, 17]和多模态应用[3, 29, 35, 36, 40, 49]的兴起,原始的Transformer风格模型重新回到了计算机视觉的中心舞台。较大的建模能力、统一的多元表示、对自监督学习的友好性等的优势,使其成为首选架构。然而,由于Transformer的二次复杂性,视觉令牌的数量有限。有许多工作[7, 8, 11, 32, 48, 55, 65]来解决这一长期存在的突出挑战,但其中很少关注视觉应用。最近,LongViT [68]通过膨胀注意力为计算病理学应用构建了一个高效的Transformer架构。LongViT的线性计算复杂性允许它编码极长的视觉序列。在这项工作中,我们受到Mamba [20]的启发,探索构建一个基于纯SSM的模型作为通用视觉骨干网,而无需使用注意力,同时保留了ViT的顺序、模态无关建模优点。

对于长序列建模的状态空间模型。 [21] 提出了一种结构化状态空间序列(S4)模型,这是CNN或Transformer之外的一种新颖替代方案,用于建模长距离依赖关系。线性序列长度扩展的有前途的特性吸引了进一步的探索。 [53] 通过引入MIMO SSM和高效的并行扫描,提出了一种新的S5层。 [18] 设计了一个新的SSM层H3,几乎填补了SSM和Transformer注意力在语言建模方面的性能差距。 [46] 通过引入更多的门控单元来提高表达性,在S4上构建了门控状态空间层。最近,[20] 提出了一种数据依赖的SSM层,并构建了一个通用的语言模型骨干网Mamba,它在大型真实数据上对各种规模的Transformer具有更好的性能,并享有线性序列长度扩展。在本工作中,我们探索将Mamba的成功转移到视觉领域,即构建一个基于SSM的通用视觉骨干网,而无需使用注意力。

视觉应用中的状态空间模型。 [27] 使用1D S4处理视频分类中的长时序依赖关系。 [47] 将1D S4进一步扩展到处理包括2D图像和3D视频在内的多维数据。 [28] 结合S4和自注意力的优点构建了TranS4mer模型,在电影场景检测方面达到了最先进的性能。 [64] 向S4引入了一种新颖的选择性机制,在长格式视频理解方面大幅提高了S4的性能,同时大大降低了内存占用。 [73] 用更可扩展的基于SSM的骨干网取代了注意力机制,以生成高分辨率图像并在可负担的计算下处理精细的表示。 [45] 提出了U-Mamba,这是一种混合CNN-SSM架构,用于处理生物医学图像分割中的长时序依赖关系。上述工作要么将SSM应用于特定的视觉应用,要么通过将SSM与卷积或注意力相结合来构建混合架构。与它们不同,我们构建了一个基于纯SSM的模型,它可以作为一个通用的视觉骨干网。

3、方法

Vision Mamba(Vim)的目标是将先进的SSM(即Mamba [20])引入计算机视觉。本节首先介绍了SSM的预备知识。随后概述了Vim。接着详细介绍了Vim块如何处理输入令牌序列,并继续说明了Vim的架构细节。最后对所提Vim的效率进行了分析。

3.1、预备知识

基于SSM的模型,即结构化状态空间序列模型(S4)和Mamba,受到了连续系统的启发,该系统通过隐藏状态h(t)将1-D函数或序列x(t)映射到y(t)。这个系统使用 A ∈ R N × N {A} \in \mathbb{R}^{\mathrm{N} \times \mathrm{N}} ARN×N作为演化参数,使用 B ∈ R N × 1 {B} \in \mathbb{R}^{\mathbb{N} \times 1} BRN×1 C ∈ R 1 × N \mathbf{C} \in \mathbb{R}^{1 \times \mathrm{N}} CR1×N​作为投影参数。
h ′ ( t ) = A h ( t ) + B x ( t ) , y ( t ) = C h ( t ) . \begin{aligned} h^{\prime}(t) & =\mathbf{A} h(t)+\mathbf{B} x(t), \\ y(t) & =\mathbf{C} h(t) . \end{aligned} h(t)y(t)=Ah(t)+Bx(t),=Ch(t).

S4和Mamba是连续系统的离散版本,包括时间尺度参数 Δ \Delta Δ,用于将连续参数 A , B A,B A,B转换为离散参数 A , B A,B A,B。常用的转换方法是零阶保持(ZOH),其定义如下:
A ‾ = exp ⁡ ( Δ A ) , B ‾ = ( Δ A ) − 1 ( exp ⁡ ( Δ A ) − I ) ⋅ Δ B . \begin{array}{l} \overline{\mathbf{A}}=\exp (\boldsymbol{\Delta} \mathbf{A}), \\ \overline{\mathbf{B}}=(\boldsymbol{\Delta} \mathbf{A})^{-1}(\exp (\boldsymbol{\Delta} \mathbf{A})-\mathbf{I}) \cdot \boldsymbol{\Delta} \mathbf{B} . \end{array} A=exp(ΔA),B=(ΔA)1(exp(ΔA)I)ΔB.
在离散化 A , B A,B A,B之后,使用步长 Δ \Delta Δ的方程(1)的离散化形式可以重写为:
h t = A ‾ h t − 1 + B

这篇关于视觉Mamba:基于双向状态空间模型的高效视觉表征学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/661836

相关文章

在Java中基于Geotools对PostGIS数据库的空间查询实践教程

《在Java中基于Geotools对PostGIS数据库的空间查询实践教程》本文将深入探讨这一实践,从连接配置到复杂空间查询操作,包括点查询、区域范围查询以及空间关系判断等,全方位展示如何在Java环... 目录前言一、相关技术背景介绍1、评价对象AOI2、数据处理流程二、对AOI空间范围查询实践1、空间查

MySQL表空间结构详解表空间到段页操作

《MySQL表空间结构详解表空间到段页操作》在MySQL架构和存储引擎专题中介绍了使用不同存储引擎创建表时生成的表空间数据文件,在本章节主要介绍使用InnoDB存储引擎创建表时生成的表空间数据文件,对... 目录️‍一、什么是表空间结构1.1 表空间与表空间文件的关系是什么?️‍二、用户数据在表空间中是怎么

Python Pandas高效处理Excel数据完整指南

《PythonPandas高效处理Excel数据完整指南》在数据驱动的时代,Excel仍是大量企业存储核心数据的工具,Python的Pandas库凭借其向量化计算、内存优化和丰富的数据处理接口,成为... 目录一、环境搭建与数据读取1.1 基础环境配置1.2 数据高效载入技巧二、数据清洗核心战术2.1 缺失

CentOS7增加Swap空间的两种方法

《CentOS7增加Swap空间的两种方法》当服务器物理内存不足时,增加Swap空间可以作为虚拟内存使用,帮助系统处理内存压力,本文给大家介绍了CentOS7增加Swap空间的两种方法:创建新的Swa... 目录在Centos 7上增加Swap空间的方法方法一:创建新的Swap文件(推荐)方法二:调整Sww

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

使用Python和SQLAlchemy实现高效的邮件发送系统

《使用Python和SQLAlchemy实现高效的邮件发送系统》在现代Web应用中,邮件通知是不可或缺的功能之一,无论是订单确认、文件处理结果通知,还是系统告警,邮件都是最常用的通信方式之一,本文将详... 目录引言1. 需求分析2. 数据库设计2.1 User 表(存储用户信息)2.2 CustomerO

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Java中的StringBuilder之如何高效构建字符串

《Java中的StringBuilder之如何高效构建字符串》本文将深入浅出地介绍StringBuilder的使用方法、性能优势以及相关字符串处理技术,结合代码示例帮助读者更好地理解和应用,希望对大家... 目录关键点什么是 StringBuilder?为什么需要 StringBuilder?如何使用 St

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

MySQL重复数据处理的七种高效方法

《MySQL重复数据处理的七种高效方法》你是不是也曾遇到过这样的烦恼:明明系统测试时一切正常,上线后却频频出现重复数据,大批量导数据时,总有那么几条不听话的记录导致整个事务莫名回滚,今天,我就跟大家分... 目录1. 重复数据插入问题分析1.1 问题本质1.2 常见场景图2. 基础解决方案:使用异常捕获3.