当前位置:   article > 正文

Vision Mamba 论文学习精读笔记 Efficient Visual Representation Learning with Bidirectional State Space Model_visionmamba

visionmamba

Vision Mamba

论文地址:Vision Mamba
代码地址:Vim

摘要

总结了论文中提出的Vision Mamba(Vim)模型的动机、设计以及其在视觉任务上的表现。

首先,指出了状态空间模型(SSM)在长序列建模方面的潜力,尤其是Mamba模型在硬件效率方面的优势。纯粹基于 SSM 构建高效且通用的视觉 backbone 是一个有吸引力的方向。

然后提到,尽管在视觉数据表示上存在挑战,例如视觉数据的位置敏感性和视觉理解对全局上下文的需求,但作者成功地展示了不必完全依赖自注意力机制来学习视觉表示

文章介绍了Vim模型,这是一种新的通用视觉基础模型,它利用双向Mamba块(bidirectional Mamba blocks (Vim))和位置嵌入 (position embeddings)来处理图像序列,并在ImageNet分类、COCO对象检测和ADE20K语义分割任务上取得了比现有的视觉Transformer模型(如DeiT)更好的性能。

Vim在处理高分辨率图像时,不仅计算和内存效率显著提高(例如,比DeiT快2.8倍,GPU内存减少86.8%),而且还能够克服Transformer在高分辨率图像理解上的计算和内存限制,显示出成为下一代视觉基础模型的巨大潜力。

1. 引言

状态空间模型(SSM)的发展和在长序列数据建模中的应用,以及它在计算机视觉领域的潜力和挑战

  • SSM的发展: SSM的概念起源于经典的卡尔曼滤波器,这是一种用于估计线性动态系统状态的算法。近年来,SSM在捕捉长距离依赖性方面显示出优越性,并且能够支持并行训练
  • SSM的应用: 文中提到了几种基于SSM的方法,如线性状态空间层(LSSL)、结构化状态空间序列模型(S4)、对角状态空间(DSS)和S4D,它们在处理具有长距离依赖性的序列数据方面表现出色。
  • SSM与其他架构的结合: SSM也与其他架构,如卷积神经网络(CNN)和Transformer结合,用于处理二维数据。例如,2-D SSM、SGConvNeXt和ConvSSM结合了SSM和CNN或Transformer结构。
  • Mamba的创新: Mamba是近期的一个创新,它引入了时间变化参数到SSM,并提出了一个硬件感知的算法,使得训练和推断变得非常高效。Mamba在扩展性能上的优越性表明它是语言建模中Transformer的一个有前景的替代品。
  • 视觉数据处理的挑战: 尽管SSM在处理序列数据方面表现出色,但它在处理视觉数据(如图像和视频)方面还没有一个通用的、纯粹基于SSM的后端网络。这暗示了在视觉领域开发SSM方法还有很大的潜力和挑战。

简而言之,强调了SSM在捕获长范围依赖方面的优势,Mamba模型在此基础上的进一步发展,以及将SSM应用于视觉数据处理的未来潜力

视觉Transformer(ViT)在视觉表示学习中的成功及其优势和挑战

  • ViT的成功:ViT在视觉表示学习方面取得了巨大成功,特别是在大规模自监督预训练和下游任务的高性能表现上。
  • ViT的核心优势
    • 数据/块依赖的全局上下文:ViT能够通过自注意力机制为每个图像块 (patch) 提供依赖于数据或块的全局上下文。这与卷积神经网络(CNN)不同,CNN在所有位置使用相同的参数(即卷积滤波器)。
    • 模态不可知建模:ViT将图像视为一系列块 (patches),不包含 2D 归纳偏置,这种处理方式使得 ViT 成为多模态应用的首选架构,因为它可以更灵活地处理不同类型的数据。
  • ViT的挑战
    • 尽管ViT在提供全局上下文方面非常有效,但其自注意力机制在处理具有长距离视觉依赖的高分辨率图像时,会面临速度和内存使用方面的挑战。这是因为自注意力的计算复杂度与输入长度的平方成正比,导致在处理大型图像或长序列数据时效率降低

总的来说,强调了ViT在全局上下文理解和多模态应用中的优势,同时也指出了它在处理复杂视觉任务时可能遇到的性能瓶颈。

如何将Mamba模型从语言建模领域转移到视觉领域,以及Vision Mamba(Vim)模型的设计理念、挑战和应用

这段话讨论了如何将Mamba模型从语言建模领域转移到视觉领域,并介绍了Vision Mamba(Vim)模型的设计理念、挑战和应用。

  • 从语言到视觉的转移:由于Mamba在语言建模中取得的成功,作者受到启发,希望将这种成功转移到视觉领域,设计一种通用而高效的视觉基础架构 (backbone),使用先进的状态空间模型(SSM)方法。
  • Mamba的挑战
    • 单向建模:Mamba原本用于语言处理,通常是单向的,这意味着它只能捕捉从前到后的序列依赖
    • 位置感知的缺失:Mamba在处理视觉数据时,需要对空间位置有所感知,这是它原本的设计中缺乏的。
  • Vision Mamba (Vim)模型的提出:为了解决这些挑战,提出了Vim模型。Vim引入了双向SSM来进行数据依赖的全局视觉上下文建模并加入位置嵌入来实现位置感知的视觉识别
  • Vim的实现细节
    • 将输入图像切分成块 (patches),然后线性投影成向量,作为Vim的处理单元。
    • 在Vim块中,图像块被视为序列数据,通过双向选择性状态空间高效地压缩视觉表示。
    • Vim块中的位置嵌入增强了模型对空间信息的感知能力,使其在密集预测任务中更为鲁棒。
  • Vim的训练与应用
    • Vim首先在ImageNet数据集上进行监督图像分类任务的训练。
    • 预训练的Vim模型随后用作各种下游密集预测任务(如语义分割、对象检测和实例分割)的 backbone。
    • 类似于Transformer模型,Vim也可以在大规模无监督视觉数据上进行预训练,以实现更好的视觉表示。
    • 由于Mamba的高效性,Vim能够以较低的计算成本实现大规模预训练

简而言之,解释了如何将Mamba的成功应用于视觉领域,提出了解决其在视觉任务中存在的挑战的Vim模型,并描述了Vim的实现和训练过程,以及其在各种视觉任务中的应用。

Vision Mamba(Vim)模型在处理视觉任务方面相比其他基于状态空间模型(SSM)和Transformer模型的优势

Vision Mamba(Vim)模型在处理视觉任务方面相比其他基于状态空间模型(SSM)和Transformer模型的优势,尤其是在图像分类、处理高分辨率图像以及执行密集预测任务方面。

  • Vim与其他SSM模型的比较:Vim是一种纯粹基于SSM的方法,以序列方式建模图像,这使得Vim成为一个通用且高效的 backbone。与其他基于SSM的视觉模型相比,Vim的这一特点更有利于处理各种视觉任务。
  • Vim的独特之处:得益于双向压缩建模和位置感知能力,Vim成为第一个能够处理密集预测任务的纯SSM模型。这表明Vim能够理解和处理图像中的空间关系,为每个图像块提供全局上下文信息。
  • Vim与DeiT的比较:与目前最令人信服的基于Transformer的模型(例如DeiT)相比,Vim在ImageNet图像分类任务上表现更优。此外,在处理高分辨率图像方面,Vim在GPU内存使用和推断时间上都更为高效。
  • 高效的序列视觉表示学习:Vim的内存和速度效率使其能够直接执行序列视觉表示学习,无需依赖于2D先验知识(例如ViTDet中的2D局部窗口),同时在高分辨率视觉理解任务上比DeiT实现更高的准确率。

简言之,Vim通过其独特的双向SSM结构和对空间信息的有效编码,在视觉表示学习的通用性、效率和性能方面超越了现有的SSM和Transformer模型,尤其是在处理复杂视觉任务和高分辨率图像时的表现。

Vision Mamba(Vim)论文的主要贡献

  • Vim的提出:首先,作者提出了Vision Mamba(Vim),这是一种集成了双向状态空间模型(SSM)的新模型,用于数据依赖的全局视觉上下文建模,并加入位置嵌入来实现对空间信息敏感的视觉理解。这表明Vim能够捕获和理解图像中的全局和局部信息,对位置进行编码,从而提高模型对视觉数据的理解能力。

  • Vim的计算和内存效率:Vim的一个显著特点是它不依赖于传统的注意力机制,但仍保持与视觉Transformer(ViT)相当的建模能力同时具有低于二次时间的计算复杂度和线性内存复杂度。具体来说,在处理1248×1248分辨率的图像进行批量推断时,Vim的速度比DeiT快2.8倍,并且节省了86.8%的GPU内存。这一点对于需要处理大量高分辨率图像的应用尤为重要,表明Vim能够在保持高性能的同时大幅降低计算资源消耗。

  • 广泛的实验验证:作者在ImageNet分类任务和多个密集预测下游任务上对Vim进行了广泛测试。实验结果显示,Vim在性能上超过了现有的高度优化的视觉Transformer模型,即DeiT。这证明了Vim不仅在理论上具有创新性,在实际应用中也具有显著的性能优势。

2. 相关工作

CV领域中用于视觉表示学习的不同架构的发展历程

Vision Mamba(Vim)是如何从这些发展中获得灵感并提出一种新的架构的。

  • 早期架构:最初,卷积神经网络(ConvNet)是计算机视觉的标准网络设计,为各种视觉应用提供了视觉基础模型。随后,提出了多种卷积神经网络架构,以提高性能和效率。

  • Vision Transformer(ViT)的创新:ViT改变了传统视觉模型的格局,通过将图像视为一系列扁平化的2D块并直接应用纯Transformer架构,使得在图像分类任务上取得了令人惊讶的结果,促进了许多后续工作的产生。这些工作包括将2D卷积先验引入ViT的混合架构设计,以及改进传统2D卷积网络的工作。

  • Transformer模型的挑战与发展:尽管Transformer模型因其较大的模型容量、统一的多模态表示能力、以及对自监督学习友好等优势而成为首选架构,但其面临的一个主要挑战是处理视觉任务时的计算复杂度问题,这限制了视觉标记的数量。针对这一挑战,已有多种工作尝试寻找解决方案,但很少有工作专注于视觉应用。

  • Vim的灵感与目标:受到Mamba模型在处理序列数据方面高效性的启发,本工作探索了构建一种不使用注意力机制的纯SSM(状态空间模型)基础模型作为通用视觉基础架构的可能性。该模型旨在保留ViT的序列化、模态不可知的建模优点,同时解决Transformer在视觉表示学习中的计算复杂度问题

状态空间模型(SSM)在长序列建模领域的应用及其发展

  • S4模型:首先介绍了结构化状态空间序列(S4)模型,这是一种新的替代传统CNN和Transformer的模型,能够模拟长距离依赖性。S4模型的一个重要特性是,其计算复杂度随序列长度线性增长,这一点对于长序列数据处理尤为重要。

  • S5层:进一步的探索中,提出了S5层,通过引入多输入多输出(MIMO)SSM和高效的并行扫描技术到S4层,以增强模型的处理能力。

  • H3层:另一个重要的发展是H3层的设计,该层几乎填补了SSM和Transformer注意力机制在语言模型中的性能差距,展示了SSM在捕获长距离依赖性方面的潜力。

  • 门控状态空间层:通过在S4基础上引入更多的门控单元构建了门控状态空间层,以提高模型的表达能力。

  • Mamba模型:最近,提出了依赖于数据的SSM层并构建了Mamba模型,这是一个通用的语言模型 backbone,它在处理大规模实际数据时能够超越各种大小的Transformer模型,并且同样享有随序列长度线性增长的计算复杂度

在这项工作中,作者探索了将Mamba模型的成功转移到视觉领域的可能性,即构建一个纯粹基于SSM而非依赖于注意力机制的通用视觉基础架构。这表明,借鉴SSM在语言模型中的成功经验,通过适当的改进和调整,有可能为视觉任务提供一个高效且能够处理复杂依赖性的新型架构。

状态空间模型(SSM)在视觉应用中的不同应用和发展,以及如何基于这些进展提出了一个纯粹基于SSM的模型

  • 1D S4在视频分类中的应用:提到使用一维S4模型来处理视频分类任务中的长期时间依赖问题。

  • 扩展至多维数据:介绍了将1D S4扩展到包括二维图像和三维视频在内的多维数据处理。

  • TranS4mer模型:结合了S4模型和自注意力机制的优势,创建了TranS4mer模型,该模型在电影场景检测任务上取得了最先进的性能。

  • S4的选择性机制:通过引入一种新颖的选择性机制到S4中,显著提高了S4在长视频理解任务上的性能,并大幅降低了内存占用。

  • 更可扩展的SSM基础架构:提出了一种用SSM基础架构替代注意力机制的方法,以生成高分辨率图像并在可承受的计算成本下处理细粒度表示。

  • U-Mamba模型:提出了一个混合的CNN-SSM架构,名为U-Mamba,用于处理生物医学图像分割中的长距离依赖问题。

这段讨论指出,虽然之前的工作要么将SSM应用于特定的视觉应用,要么通过结合SSM与卷积或注意力机制构建混合架构,但与之不同的是,作者构建了一个纯粹基于SSM的模型,旨在作为一个通用的视觉 backbone。这表示Vision Mamba(Vim)模型旨在不依赖于传统注意力机制的情况下,通过利用SSM的优势,提供一个能够高效处理图像和视频中长距离依赖关系的强大工具,这在视觉任务中是非常重要的。

3. 方法

3.1 Preliminaries

在这里插入图片描述
这段内容介绍了状态空间模型(SSM)及其在S4和Mamba模型中的离散化形式,包括它们如何从连续系统的理论启发而来的。

  • 状态空间模型:SSM是一种将一维函数或序列 x ( t ) ∈ R x(t)\in \mathbb{R} x(t)R 通过隐藏状态 h ( t ) ∈ R N h(t)\in \mathbb{R}^{\text{N}} h(t)RN 映射到 y ( t ) ∈ R y(t)\in \mathbb{R} y(t)R 的系统。系统利用演化参数 A ∈ R N × N \mathbf{A}\in \mathbb{R}^{\text{N} \times \text{N}} ARN×N 和投影参数 B ∈ R N × 1 \mathbf{B}\in \mathbb{R}^{\text{N} \times 1} BRN×1 C ∈ R 1 × N \mathbf{C}\in \mathbb{R}^{1 \times \text{N}} CR1×N

  • 连续系统的数学形式:连续系统可以用以下微分方程来表示:

    • h ′ ( t ) = A h ( t ) + B x ( t ) h'(t) = \mathbf{A}h(t) + \mathbf{B}x(t) h(t)=Ah(t)+Bx(t)
    • y ( t ) = C h ( t ) y(t) = \mathbf{C}h(t) y(t)=Ch(t)

      其中, h ′ ( t ) h'(t) h(t) 表示隐藏状态随时间的变化率, A \mathbf{A} A 是隐藏状态的演化矩阵, B \mathbf{B} B 是输入信号 x ( t ) x(t) x(t) 对隐藏状态的影响矩阵, C \mathbf{C} C 是输出矩阵。
  • 离散化的状态空间模型:S4和Mamba模型是连续系统的离散版本,引入了一个时间尺度参数 Δ \Delta Δ 来将连续参数 A \mathbf{A} A B \mathbf{B} B 转换为离散参数 A ‾ \overline{\mathbf{A}} A B ‾ \overline{\mathbf{B}} B

  • 离散化的方法:通常用于变换的方法是零阶保持(Zero-Order Hold, ZOH),定义如下:

    • A ‾ = exp ⁡ ( Δ A ) \overline{\mathbf{A}}= \exp(\Delta \mathbf{A}) A=exp(ΔA)
    • B ‾ = ( Δ A ) − 1 ( exp ⁡ ( Δ A ) − I ) ⋅ Δ B \overline{\mathbf{B}} = (\Delta \mathbf{A})^{-1}(\exp(\Delta \mathbf{A}) - \mathbf{I}) \cdot \Delta \mathbf{B} B=(ΔA)1(exp(ΔA)I)ΔB

    这里, exp ⁡ ( ⋅ ) \exp(\cdot) exp() 表示矩阵指数,是将线性系统的连续时间演化转换为离散时间的标准方法。 Δ A \Delta A ΔA Δ B \Delta B ΔB 是连续演化矩阵和输入影响矩阵的离散等效物。 I I I 是单位矩阵。

这个转换是必要的,因为在实际的数据处理和计算机模拟中,我们通常是在离散时间点上工作,而不是连续时间。这样的离散化使得SSM可以用于数字计算和实时数据处理。

然后对连续时间状态空间模型的离散化版本进行了说明。当 A \mathbf{A} A B \mathbf{B} B 被离散化后,原本连续时间的动态方程被转换为离散时间的方程,以适应在数字计算中的使用。这里的 A ‾ \overline{\mathbf{A}} A, B ‾ \overline{\mathbf{B}} B, 和 C \mathbf{C} C 是离散化版本的参数。

  • 离散化的状态方程:离散时间版本的方程如下所示:
    • h t = A ‾ h t − 1 + B ‾ x t h_t = \overline{{\mathbf{A}}}h_{t-1} + \overline{\mathbf{B}}x_t ht=Aht1+Bxt
    • y t = C h t y_t = \mathbf{C}h_t yt=Cht

这里:

  • h t h_t ht 代表在时间步长 t t t 时的隐藏状态。
  • x t x_t xt 代表在时间步长 t t t 时的输入。
  • y t y_t yt 代表在时间步长 t t t 时的输出。
  • A ‾ \overline{\mathbf{A}} A 是状态转移矩阵,它定义了隐藏状态如何随时间演化。
  • B ‾ \overline{\mathbf{B}} B 是控制矩阵,它定义了当前输入如何影响当前的隐藏状态。
  • C \mathbf{C} C 是输出矩阵,它将当前的隐藏状态转换为输出。

离散时间的状态空间模型是为了在数字系统中模拟连续系统的行为。在计算机视觉等数字信号处理应用中,这种模型特别有用,因为它可以捕捉输入数据序列随时间的动态变化。在Vision Mamba论文中,这种离散化的状态空间模型被用作视觉任务的建模工具,特别是处理序列数据,例如视频或者由序列组成的图像。
离散时间的状态空间模型是为了在数字系统中模拟连续系统的行为。在计算机视觉等数字信号处理应用中,这种模型特别有用,因为它可以捕捉输入数据序列随时间的动态变化。在Vision Mamba论文中,这种离散化的状态空间模型被用作视觉任务的建模工具,特别是处理序列数据,例如视频或者由序列组成的图像。

最后,模型通过全局卷积从状态空间模型(SSM)中计算输出:
K ‾ = ( C B ‾ , C A B ‾ , … , C A ‾ M − 1 B ‾ \mathbf{\overline{K}} = (\mathbf{C\overline{B}}, \mathbf{C\overline{AB}}, \ldots, \mathbf{C\overline{A}^{M-1}\overline{B}} K=(CB,CAB,,CAM1B y = x ∗ K ‾ \mathbf{y} = \mathbf{x} *\mathbf{\overline{K}} y=xK
具体来说,它定义了一个结构化的卷积核 K ‾ \mathbf{\overline{K}} K 并展示了如何使用这个核与输入序列 x \textbf{x} x 进行卷积以生成输出 y \textbf{y} y

  • 卷积核 K ‾ \mathbf{\overline{K}} K:它是通过连接不同时间步上的参数 C \mathbf{C} C A ‾ \overline{\textbf{A}} A B ‾ \overline{\textbf{B}} B 的乘积来构造的。 K ‾ \mathbf{\overline{K}} K 的每个元素 C A ‾ i B ‾ \mathbf{C\overline{A}^{i}\overline{B}} CAiB(其中 i i i 是从 0 到 M − 1 \text{M}-1 M1 的指数)代表了状态空间模型在不同时间步上的影响。这表示输出不仅取决于当前的输入和状态,而且还受到前 M − 1 \text{M}-1 M1 步的影响。

  • 全局卷积:一旦卷积核 K ‾ \mathbf{\overline{K}} K 被构建,就可以将其应用于整个输入序列 x \textbf{x} x 上。这里的卷积操作 ∗ * 指的是全局卷积,其中 K ‾ \mathbf{\overline{K}} K 作用于 x \textbf{x} x 的每一段以生成输出序列 y \textbf{y} y

其中, M \text{M} M 是输入序列 x \mathbf{x} x 的长度, K ‾ ∈ R M \mathbf{\overline{K}} \in \mathbb{R}^\text{M} KRM 是构造的结构化卷积核。通过全局卷积操作,模型可以在整个序列上捕捉长距离依赖,这对于时间序列数据或其他顺序数据(如视频或文本)特别有用。在视觉模型中,这样的全局卷积可以帮助模型捕捉图像内的复杂空间关系。

3.2 Vision Mamba

Vision Mamba(Vim)的处理流程:

在您提供的图片中,描述了Vision Mamba(Vim)的处理流程,这是一个针对视觉任务设计的模型。这个过程包括以下几个主要步骤:

  1. 输入图像转换:首先,将二维图像 t ∈ R H × W × C t \in \mathbb{R}^{H \times W \times C} tRH×W×C 转换为扁平化的二维图像块 x p ∈ R J × ( P 2 ⋅ C ) x_p \in \mathbb{R}^{J \times (P^2 \cdot C)} xpRJ×(P2C),其中 H H H W W W 是输入图像的大小, C C C 是通道数, P P P 是图像块的大小, J J J 是图像块的数量。

  2. 线性投影:接着,将这些图像块线性投影到一个更高维度的空间中,尺寸为 D D D,并为这些投影后的向量添加位置嵌入 E p o s ∈ R ( J + 1 ) × D \mathbf{E}_{pos} \in \mathbb{R}^{(J+1) \times D} EposR(J+1)×D

  3. 类标记:受ViT和BERT的启发,使用一个额外的类标记 t c l s \mathbf{t}_{cls} tcls,表示整个图像块序列。将类标记与投影后的图像块一起,形成序列 T 0 \mathbf{T}_0 T0

  4. 通过Vim模型处理:然后,将这个序列 T l − 1 \mathbf{T}_{l-1} Tl1 送入Vim编码器的第 l l l 层,并获得输出 T l \mathbf{T}_l Tl。这里, Vim \textbf{Vim} Vim 是提出的视觉mamba块。

  5. 标准化和预测:最后,将输出的类标记 T 0 L \mathbf{T}_0^L T0L 标准化,并通过多层感知机( MLP \textbf{MLP} MLP)头部获得最终的预测 p ^ \hat{p} p^

整个过程可以用以下数学表达式描述:

T 0 = [ t c l s ; t p 1 W ; t p 2 W ; … ; t p J W ] + E p o s     ( 5 ) \mathbf{T}_0 = [\mathbf{t}_{cls}; \mathbf{t}^1_p\mathbf{W}; \mathbf{t}^2_p\mathbf{W}; \ldots ; \mathbf{t}^J_p\mathbf{W}] + \mathbf{E}_{pos}\ \ \ (5) T0=[tcls;tp1W;tp2W;;tpJW]+Epos   (5) T l = Vim ( T l − 1 ) + T l − 1 \mathbf{T}_l = \textbf{Vim}(\mathbf{T}_{l-1}) +\mathbf{T}_{l-1} Tl=Vim(Tl1)+Tl1 f = Norm ( T 0 L )      ( 6 ) \textbf{f} = \textbf{Norm}(\mathbf{T}_0^L) \ \ \ \ (6) f=Norm(T0L)    (6) p ^ = MLP ( f ) \hat{p} = \textbf{MLP}(\mathbf{f}) p^=MLP(f)

这里 T 0 \mathbf{T}_0 T0 是初始的输入序列, T l \mathbf{T}_l Tl 是通过Vim模块处理后的序列, W \mathbf{W} W 是学习到的线性投影矩阵, Norm \textbf{Norm} Norm 是标准化层, MLP \textbf{MLP} MLP 是多层感知机,用于生成最终的输出或预测。这种架构允许模型学习图像的综合表示,并能够应用于各种视觉任务,如分类、检测和分割。

3.3 Vim Block

The original Mamba block is designed for the 1-D sequence, which is not suitable for vision tasks requiring spatial-aware understanding. In this section, we introduce the Vim block, which incorporates the bidirectional sequence modeling for the vision tasks. The Vim block is shown in Fig. 2.

在这里插入图片描述

Specifically, we present the operations of Vim block in Algo. 21. The input token sequence T l − 1 \mathbf{T}_{l-1} Tl1 is first normalized by the normalization layer. Next, we linearly project the normalized sequence to the x \mathbf{x} x and z \mathbf{z} z with dimension size E E E. Then, we process the x \mathbf{x} x from the forward and backward directions. For each direction, we first apply the 1-D convolution to the x \mathbf{x} x and get the x o ′ \mathbf{x}'_o xo . We then linearly project the x o ′ \mathbf{x}'_o xo to the B o \mathbf{B}_o Bo, C o \mathbf{C}_o Co, Δ o \mathbf{\Delta}_o Δo, respectively. The Δ o \mathbf{\Delta}_o Δo is then used to transform the A ‾ o \mathbf{\overline{A}}_o Ao, B ‾ o \mathbf{\overline{B}}_o Bo, respectively. Finally, we compute the y f o r w a r d \mathbf{y}_{forward} yforward and y b a c k w a r d \mathbf{y}_{backward} ybackward through the SSM. The y f o r w a r d \mathbf{y}_{forward} yforward and y b a c k w a r d \mathbf{y}_{backward} ybackward are then gated by the z \mathbf{z} z and added together to get the output token sequence T l \mathbf{T}_l Tl.

这段话介绍了Vision Mamba(Vim)模型的关键构件——Vim block的设计和功能,特别是针对视觉任务调整的部分。逐步解析这一段的意义:

  1. Mamba block的局限性:原始的Mamba block是为一维(1-D)序列设计的,不适合需要空间感知的视觉任务。这是因为传统的一维序列建模通常不会考虑输入数据中的空间结构。

  2. Vim block的引入:为了适应视觉任务的空间需求,提出了Vim block。这个模块利用双向序列建模来捕捉视觉数据中的前后文关系和空间信息。

  3. Vim block的操作:接下来,详细描述了Vim block的操作过程:

    • 输入的 t o k e n token token 序列 T l − 1 \mathbf{T}_{l-1} Tl1 首先通过一个标准化层进行标准化。
    • 标准化后的序列被线性投影到维度为 E E E 的两个向量 x \mathbf{x} x z \mathbf{z} z
    • 对向量 x \mathbf{x} x 进行前向和后向处理。每个方向上,首先对 x \mathbf{x} x 进行一维卷积得到 x o ′ \mathbf{x}'_o xo
    • 接着将 x o ′ \mathbf{x}'_o xo 线性投影到 B o \mathbf{B}_o Bo, C o \mathbf{C}_o Co, Δ o \mathbf{\Delta}_o Δo
    • 使用 Δ o \mathbf{\Delta}_o Δo 转换 A ‾ o \mathbf{\overline{A}}_o Ao, B ‾ o \mathbf{\overline{B}}_o Bo
    • 通过状态空间模型(SSM)计算 y f o r w a r d \mathbf{y}_{forward} yforward y b a c k w a r d \mathbf{y}_{backward} ybackward
    • 然后,利用 z \mathbf{z} z y f o r w a r d \mathbf{y}_{forward} yforward y b a c k w a r d \mathbf{y}_{backward} ybackward 进行门控,并将它们加在一起得到输出的 t o k e n token token 序列 T l \mathbf{T}_l Tl
  4. Vim block的目的:这种设计允许Vim block同时考虑图像序列中每个位置的前后信息,从而为视觉任务提供一个更为丰富和精确的信息表示。通过将信息从两个方向传递并整合,Vim能够更好地理解和利用视觉数据中的空间关系。

总之,Vim block是为了在视觉任务中处理二维数据而设计的,它通过双向处理和空间信息的集成来克服原始Mamba模型在处理图像时的限制。通过这样的结构,Vim block可以有效地作为处理图像和视频数据的视觉基础模型。

在这里插入图片描述
图片中提供的算法是Vision Mamba(Vim)的一个核心组成部分——Vim Block的处理流程。这个算法详细描述了如何在Vision Mamba模型中处理输入的token序列,并生成输出的token序列。以下是算法的逐步解释:

  1. 输入与输出

    • 输入: t o k e n token token 序列 T l − 1 \mathbf{T}_{l-1} Tl1,维度为 ( B, M, D ) (\text{B, M, D}) (B, M, D),其中 B \text{B} B 是批次大小, M \text{M} M 是序列长度, D \text{D} D 是特征维度。
    • 输出:更新的 t o k e n token token 序列 T l \mathbf{T}_{l} Tl
  2. 步骤1:使用标准化层(Norm)对输入的 t o k e n token token 序列 T l − 1 \mathbf{T}_{l-1} Tl1 进行标准化。

  3. 步骤2-3:将标准化后的 t o k e n token token 序列分别通过两个线性变换层 Linear X \textbf{Linear}^X LinearX Linear Z \textbf{Linear}^Z LinearZ 来生成两个新的序列 x \mathbf{x} x z \mathbf{z} z

  4. 步骤4-15:对于序列 x \mathbf{x} x,分别从前向和后向进行处理:

    • 使用 S i L U \mathbf{SiLU} SiLU(Sigmoid Linear Unit)激活函数和一维卷积 C o n v 1 d \mathbf{Conv1d} Conv1d x \mathbf{x} x 进行处理,得到 x o ′ \mathbf{x}'_o xo
    • x o ′ \mathbf{x}'_o xo 经过三个线性变换层 Linear o B \textbf{Linear}^B_o LinearoB Linear o C \textbf{Linear}^C_o LinearoC,和 Linear o Δ \textbf{Linear}^\Delta_o LinearoΔ
    • Δ o \Delta_o Δo 使用软加(softplus)激活函数确保其为正,这是通过对 Linear o Δ ( x o ′ ) \textbf{Linear}^\Delta_o(\mathbf{x}'_o) LinearoΔ(xo) 加上预设参数 P a r a m e t e r Δ \mathbf{Parameter}^\Delta ParameterΔ 并应用软加函数 l o g ( 1 + e x p ( ⋅ ) ) log(1 + exp(\cdot)) log(1+exp()) 实现的。
    • 使用 Δ o \Delta_o Δo 转换参数 A ‾ o \overline{\mathbf{A}}_o Ao B ‾ o \overline{\mathbf{B}}_o Bo,这里使用了哈达马积(逐元素乘法)。
    • 使用参数 A o \mathbf{A}_o Ao B o \mathbf{B}_o Bo C o \mathbf{C}_o Co 和输入 x o ′ \mathbf{x}'_o xo 通过状态空间模型(SSM)计算 y o \mathbf{y}_o yo
  5. 步骤16-20:处理完前向和后向序列后,通过 z \mathbf{z} z y f o r w a r d \mathbf{y}_{forward} yforward y b a c k w a r d \mathbf{y}_{backward} ybackward 进行门控,并将它们加在一起来生成输出序列 T l \mathbf{T}_l Tl

  6. 步骤21:将 y f o r w a r d + y b a c k w a r d \mathbf{y}_{forward} + \mathbf{y}_{backward} yforward+ybackward通过一个线性层 L i n e a r T \mathbf{Linear}^T LinearT,与原始输入 T l − 1 \mathbf{T}_{l-1} Tl1 进行残差连接(加和),以得到最终的输出 T l \mathbf{T}_l Tl

这个算法突出了Vim Block如何利用双向序列建模来处理视觉任务,它允许模型捕捉序列数据中的前后依赖关系,并增加了对空间细节的感知能力,这在处理图像这类高维度数据时特别重要。此外,算法中的门控机制允许模型根据上下文动态地调整每个方向上信息的贡献,从而提高模型对复杂视觉模式的理解。

配图 2 的解释

配图 2 从高层次展示了 Vision Mamba (Vim) 模型的工作流程。这个图解阐明了 Vim 模型如何处理输入图像并产生预测的步骤:

在这里插入图片描述

  1. 输入图像:模型首先接收一个输入图像。

  2. 图像分割与投影:这个图像被分割成多个块,每个块被称作一个“patch”。每个 patch 通过一个投影层转换成一个嵌入向量,这些向量被称作 patch tokens。

  3. 位置嵌入:为了让模型理解各个 patch 在原始图像中的位置,给每个 patch token 加上位置嵌入。

  4. 类标记:除了 patch tokens,还引入一个额外的 learnable token,称为类标记 (class token),它在模型最后用于分类预测。

  5. 展平和线性投影:接下来,这些带有位置信息的 patch tokens 和类标记被展平(flatten)并通过线性变换得到嵌入的 patches。

  6. Vision Mamba 编码器:这些嵌入的 patches 作为 token 序列输入到 Vim 编码器。编码器的结构如右侧所示,主要包含以下部分:

    • 标准化 (Norm):编码器内部首先对 token 序列进行标准化。
    • 激活:对序列进行激活函数处理,这里没有具体指明使用哪种激活函数,但通常是非线性激活函数,如 ReLU 或者 SiLU。
    • 双向处理:模型中的每个 token 被送往两个方向处理:
      • 前向卷积 (Forward Conv1d):处理序列的前向部分。
      • 后向卷积 (Backward Conv1d):处理序列的后向部分。
    • 状态空间模型 (SSM):前向和后向处理的结果分别通过状态空间模型,这可以帮助捕获长距离的依赖关系。
  7. 门控机制和残差连接:前向和后向的输出被结合起来,并且与输入序列的残差连接相加,得到最终的 token 序列 ( T_l )。

  8. 多层感知机 (MLP) 和预测:处理后的 token 序列被送入 MLP,MLP 头部用于对类标记进行分类预测。

这个图示说明了 Vim 的整个流程,从输入图像到生成最终的分类预测。通过这种结构,Vim 能够有效捕获图像的空间信息,并对长序列数据进行建模。

3.4 结构细节

Vision Mamba(Vim)架构的超参数以及如何设置这些参数来构建模型的细节。

  • 超参数

    • L:模型中block的数量。
    • D:隐藏状态的维度。
    • E:扩展状态的维度。
    • N:状态空间模型(SSM)的维度。
  • 模型构建

    • 模型首先使用16x16的核大小投影层来从图像中提取16x16像素的块,并将其转换为一维序列的非重叠块嵌入。
    • 然后,将 L L L 个Vim block堆叠在一起构建模型。
    • 默认情况下,block的数量 L L L 设置为24,SSM的维度 N N N 设置为16。
    • 为了与DeiT模型的尺寸对齐,隐藏状态维度 D D D 设置为192,扩展状态维度 E E E 设置为384,这是针对“tiny-size”变体的设置。
    • 对于“small-size”变体, D D D E E E 分别设置为384和768。

通过这些设置,可以构建不同大小的模型,以适应不同的计算需求和任务复杂性。小型变体可能适用于资源受限的情况,而大型变体可能在需要处理更复杂任务时使用。这些超参数的设置对模型的性能和效率有直接影响。例如,增加隐藏状态的维度 D D D 可能会增强模型捕捉特征的能力,但也会增加模型的参数数量和计算需求。同样,SSM的维度 N N N 对模型处理序列数据的能力至关重要。

3.5 效率分析

传统的基于ssm的方法利用快速傅里叶变换来增强卷积运算,如式(4)所示。对于依赖于数据的方法,如Mamba, 上面图中的 Algo. 第11行SSM操作不再等同于卷积。为了解决这个问题,Mamba和提出的Vim选择了一种现代硬件友好的方式来确保效率。这种优化的关键思想是避免现代硬件加速器(gpu)的io限制和内存限制。

IO效率

讨论了模型的I/O效率,特别是在使用GPU进行计算时如何优化内存的读写操作。这里的目标是减少在高带宽内存(HBM)和静态随机存取内存(SRAM)之间传输的数据量,因为这些操作可能成为模型运行中的瓶颈。

I/O效率的关键点包括

  1. 内存组件

    • HBM:高带宽内存,具有大的内存大小,适合存储大量数据。
    • SRAM:静态随机存取内存,带宽更大,但内存大小较小,访问速度快。
  2. 标准实现

    • 在标准实现中,Vim的状态空间模型(SSM)操作需要从HBM读取大量数据,具体是 O ( B M E N ) O(BMEN) O(BMEN) 字节,其中 B B B 是批次大小, M M M 是序列长度, E E E 是扩展状态的维度, N N N 是SSM维度。
  3. 优化方法

    • 受到Mamba模型的启发,Vim首先从慢速的HBM中读取较小的数据 O ( B M E + E N ) O(BME + EN) O(BME+EN) 字节到快速的SRAM中,具体是参数 Δ o \Delta_o Δo A o A_o Ao B o B_o Bo C o C_o Co
    • 然后在SRAM中对离散化后的 A ‾ o \overline{A}_o Ao B ‾ o \overline{B}_o Bo 进行操作。
    • 最后,Vim在SRAM中执行SSM操作,并将输出数据大小为 ( B , M , E ) (B, M, E) (B,M,E) 的写回HBM。
  4. 效果

    • 这种方法可以将内存I/O需求从 O ( B M E N ) O(BMEN) O(BMEN) 减少到 O ( B M E + E N ) O(BME + EN) O(BME+EN),从而提高整体的I/O效率。

总体而言,通过在快速的SRAM中执行大多数计算,并减少对大容量但慢速HBM的依赖,可以显著提高模型的性能,特别是在大规模数据处理的情况下。这对于训练和部署大型深度学习模型来说是一个重要的考量,因为内存访问速度往往会影响总体的运算速度。

存储效率

讨论了Vision Mamba(Vim)模型在提高内存效率方面的策略。主要内容如下:

  1. 避免内存不足问题:为了避免处理长序列时出现的内存不足问题,Vim采用了与Mamba相同的重新计算方法。

  2. 中间状态的重新计算

    • Vim在网络的反向传播阶段重新计算大小为 ( B , M , E , N ) (B, M, E, N) (B,M,E,N) 的中间状态来计算梯度,其中 B B B 是批量大小, M M M 是序列长度, E E E 是扩展状态维度, N N N 是状态空间模型(SSM)的维度。
    • 这种做法减少了在前向传播中存储所有中间状态的需要,这些状态可能会占用大量的GPU内存。
  3. 激活函数和卷积的中间激活

    • 对于诸如激活函数和卷积的中间激活,Vim也选择重新计算,以优化GPU内存需求。
    • 这是因为激活值通常占用大量内存,但在需要时可以快速重新计算。

这种方法在深度学习训练中是一种常见的优化技术,称为激活重新计算或检查点技术。它的核心思想是,在模型训练的反向传播阶段,不存储某些中间激活(这些通常会在正向传播期间计算并存储以便于后续的梯度计算),而是在需要时重新计算它们。这样可以在增加一些计算负担的同时大幅减少内存占用,特别是在处理长序列或大批量数据时尤为重要,因为这些情况下内存需求尤其高。通过这种方式,模型可以在有限的硬件资源下训练更大的模型或更长的序列,提高了内存的使用效率。

计算效率

SSM in Vim block (Line 11 in Algo.21) and self-attention in Transformer both play a key role in providing global context adaptively. Given a visual sequence T ∈ R 1 × M × D \mathbf{T} ∈ \mathbb{R}^{1×M×D} TR1×M×D and the default setting E = 2 D E = 2D E=2D, the computation complexity of a global self-attention and SSM are:

Ω ( self-attention ) = 4 MD 2 + 2 M 2 D , \Omega(\text{self-attention}) = 4\text{MD}^2 + 2\text{M}^2\text{D}, Ω(self-attention)=4MD2+2M2D, Ω ( SSM ) = 3 M ( 2 D ) N + M ( 2 D ) N \Omega(\text{SSM}) = 3\text{M}(2\text{D})\text{N} + \text{M}(2\text{D})\text{N} Ω(SSM)=3M(2D)N+M(2D)N

where self-attention is quadratic to sequence length M, and SSM is linear to sequence length M (N is a fixed parameter, set to 16 by default).
The computational efficiency makes Vim scalable for gigapixel applications with large sequence lengths.

这段话讲述了在Vision Mamba(Vim)模型中,状态空间模型(SSM)的计算复杂度与Transformer中的自注意力(self-attention)机制的复杂度相比较的情况。

  1. 全局上下文提供

    • SSM在Vim块中(算法21的第11行所提及)和Transformer中的自注意力机制都是提供全局上下文的关键部分。
    • 它们的目的是使模型能够根据输入序列的不同部分适应性地调整其响应,这对于理解图像的整体含义非常重要。
  2. 计算复杂度对比

    • 对于给定的视觉序列 T ∈ R 1 × M × D \mathbf{T} \in \mathbb{R}^{1×M×D} TR1×M×D,其中 M M M 是序列长度, D D D 是特征维度,自注意力的计算复杂度是 Ω ( self-attention ) = 4 MD 2 + 2 M 2 D \Omega(\text{self-attention}) = 4\text{MD}^2 + 2\text{M}^2\text{D} Ω(self-attention)=4MD2+2M2D,它是序列长度 M M M 的二次函数。
    • SSM的计算复杂度是 Ω ( SSM ) = 3 M ( 2 D ) N + M ( 2 D ) N \Omega(\text{SSM}) = 3\text{M}(2\text{D})\text{N} + \text{M}(2\text{D})\text{N} Ω(SSM)=3M(2D)N+M(2D)N,它是序列长度 M M M 的线性函数,其中 N N N 是固定参数,默认设置为16。
  3. 效率与可扩展性

    • 由于SSM的计算复杂度与序列长度线性相关,而自注意力的复杂度与序列长度平方相关,SSM提供了更高的计算效率。
    • 这种计算上的高效性使得Vim模型适用于处理具有大序列长度的应用,比如处理千万像素级别的图像。

综上所述,由于自注意力机制的计算复杂度较高,处理长序列时可能会非常耗时和内存密集。相比之下,SSM由于其线性复杂度特性,可以更高效地扩展到大型图像和其他高分辨率应用,这是Vim在处理大规模视觉数据时具有潜在优势的原因。这样的效率对于在实际应用中实现实时或近实时的图像分析尤为重要。

4. 实验

整体比较

在这里插入图片描述
该图展示了不同图像分辨率下小型版本的 Vim 和 DeiT 模型之间的每秒帧数 (FPS) 和 GPU 内存使用情况的比较。

  1. 速度效率(图1(b))

    • 在最小分辨率 (512x512) 下,Vim 和 DeiT 具有相似的 FPS,表明它们以相似的速度处理图像。
    • 随着分辨率增加到 1248x1248,Vim 的速度优势变得明显,处理图像比 DeiT 快 2.8 倍。 这表明 Vim 的架构在处理更大的图像时更有效。
  2. 内存效率(图1(c))

    • 在 512x512 分辨率下,Vim 使用与 DeiT 相似数量的 GPU 内存,这表明在较低分辨率下内存效率相当。
    • 然而,在 1248x1248 分辨率下,与 DeiT 相比,Vim 节省了 86.8% 的 GPU 内存。 内存使用量的大幅减少凸显了 Vim 的效率,特别是对于内存需求通常较高的高分辨率图像。
  3. 线性缩放

    • Vim 的效率归因于其相对于序列长度的线性缩放,这与 DeiT 的二次缩放相反。 随着序列长度的增加(与更高的图像分辨率相关),Vim 的计算和内存需求呈线性而非二次方增加,从而使其效率更高。
  4. 对应用的影响

    • Vim 的线性缩放效率使其成为高分辨率下游视觉应用的合适模型,例如处理十亿像素图像或详细的医疗扫描,其中快速处理和低内存使用至关重要。
    • 此外,它表明 Vim 非常适合长序列多模态应用,可能包括涉及视觉和语言处理的任务,因为它可以高效地处理较长序列,而不会显着增加计算需求或内存使用量。

总之,文中强调 Vim 的架构对于处理高分辨率图像或长数据序列特别有利,使其成为复杂且要求苛刻的视觉应用的有前途的模型。
在这里插入图片描述
配图 1 展示了 Vision Mamba (Vim) 模型和 DeiT 模型在不同视觉任务和性能指标上的比较。图表分为三个部分:准确性比较、速度比较和GPU内存比较。

准确性比较 (a):

  • 分类 (Classification):Vim-Ti 在 ImageNet 数据集上的分类任务中的 top-1 准确率高于 DeiT-Ti。
  • 语义分割 (Sem. Seg.):Vim-Ti 在语义分割任务中的 mIOU(平均交并比)指标上优于 DeiT-Ti。
  • 对象检测 (Detection):Vim-Ti 在对象检测任务中的 mAP(平均精确度)指标上也高于 DeiT-Ti。
  • 实例分割 (Ins. Seg.):在实例分割任务中,Vim-Ti 的 mAP 同样超过 DeiT-Ti。

速度比较 (b):

  • 图表展示了两个模型在不同分辨率下的帧率(FPS,每秒帧数)。Vim-Ti 在所有分辨率上的处理速度都快于 DeiT-Ti。特别是在最高分辨率(1248x1248像素)时,Vim-Ti 比 DeiT-Ti 快 2.8 倍。

GPU内存比较 (c):

  • 展示了在处理不同分辨率图像时两个模型的GPU内存使用情况。随着分辨率的增加,DeiT-Ti 的内存需求迅速增加,特别是在分辨率为1248x1248像素时,DeiT-Ti 出现了内存不足(OOM)的问题。相比之下,Vim-Ti 的内存增长幅度较小,并且在最高分辨率时节省了 86.8% 的GPU内存。

总结

  • 总的来说,这张图显示 Vim 在各种计算机视觉基准任务上的性能均优于 DeiT,尤其在处理高分辨率图像时,Vim 在速度和内存效率方面都表现得更好。
  • 这些结果证明了 Vim 模型不仅在准确性上具有竞争力,而且在处理高分辨率图像时,其速度和内存使用上的优势可能使其更适合需要实时处理和资源受限环境的应用。

4.1 图像分类

Vision Mamba(Vim)在图像分类任务中的实验设置和微调过程。

  1. 实验设置

    • Vim在ImageNet-1K数据集上进行了基准测试,该数据集包含大约128万训练图像和5万验证图像,分布在1000个类别中。
    • 所有模型都在训练集上训练,并且报告了在验证集上的top-1准确率。
    • 为了公平比较,训练设置主要遵循了DeiT模型的配置。具体包括:
      • 随机裁剪、随机水平翻转、标签平滑、Mixup数据增强以及随机擦除。
      • 在224×224像素输入图像上,使用AdamW优化器,动量为0.9,批量大小为1024,权重衰减为0.05。
      • 训练过程持续300个epoch,采用余弦退火学习率调度和指数移动平均(EMA)。
      • 在测试阶段,对验证集的图像应用中心裁剪以获取224×224的图像。
      • 实验在8块A800 GPU上完成。
  2. 长序列微调

    • 为了充分利用Vim的长序列建模能力,在ImageNet预训练之后,对Vim进行了额外的30个epoch的长序列设置微调。
    • 微调时,保持原来的patch大小不变,设置patch提取步长为8。
    • 微调过程中使用恒定的学习率 1 0 − 5 10^{-5} 105和权重衰减 1 0 − 8 10^{-8} 108

结果

在这里插入图片描述

对 Vision Mamba(Vim)模型在多个方面与其他流行架构进行比较,

  1. 与ResNet的比较

    • Vim 与基于卷积神经网络的 ResNet 相比,展示了更优的性能。具体来说,当参数数量大致相同时,VimSmall 的 top-1 准确率达到了80.5%,比 ResNet-50 高出4.3个百分点。
  2. 与ViT的比较

    • Vim 在参数数量和分类准确率上均显著超过了传统的基于自注意力的 Vision Transformer (ViT)。
  3. 与DeiT的比较

    • Vim 在与参数数量相当的不同规模上均超过了高度优化的 Transformer 变体 DeiT:
      • VimTiny 比 DeiT-Tiny 高出3.9个百分点。
      • Vim-Small 比 DeiT-Small 高出0.7个百分点。
  4. 与基于SSM的S4ND-ViTB的比较

    • Vim 在拥有3倍少的参数情况下,比基于状态空间模型的 S4ND-ViTB 实现了更高的 top-1 准确率。
  5. 长序列微调后的性能

    • 经过长序列微调后,Vim-Tiny†和Vim-S†的表现均有所提高。
    • 特别是 Vim-S† 在某些情况下甚至达到了与 DeiT-B 相似的结果。
  6. 对于长序列建模的适应性

    • 这些结果表明 Vim 能够轻松适应更长序列的建模,并且能够提取更强大的视觉表示。这意味着 Vim 不仅适用于处理标准长度的图像分类任务,而且在需要处理更长的视觉数据序列时,例如在高分辨率图像或视频中,也能维持或提高性能。

4.2 语义分割

在这里插入图片描述

讨论了在ADE20K数据集上进行的语义分割任务的实验设置和结果。

  1. 实验设置

    • 在ADE20K数据集上对语义分割任务进行实验,使用UperNet作为分割框架。具体设置在文章的第B节中详细提供。
  2. 实验结果

    • 如表2所示,Vim在不同规模上均一致超越了DeiT。
    • Vim-Ti版本比DeiT-Ti版本的平均交并比(mIoU)高1.8个百分点。
    • Vim-S版本比DeiT-S版本的mIoU高0.9个百分点。
    • 与ResNet-101骨架相比,Vim-S在参数量几乎减少一半的情况下达到了相同的分割性能。
  3. 后续任务的效率评估

    • 为了进一步评估下游任务(即分割、检测和实例分割)的效率,结合了常用的特征金字塔网络(FPN)模块和骨架来基准测试它们的FPS和GPU内存。
    • 尽管在骨架上增加了重量级的FPN,效率曲线(如图4和图3所示)展示了与纯骨架(图1)的类似比较结果。
    • Vim卓越的线性扩展性能归因于提出的高效骨架Vim,它为在端到端方式中学习千万像素级别的视觉表示奠定了基础,无需进行多阶段编码(例如航空图像、医学图像和计算病理学图像)。

总之,这段话强调了Vim在视觉表示学习方面的高效性和优势,特别是在处理具有大量像素的高分辨率图像时。Vim的线性扩展能力使其适合于需要处理长序列数据的复杂视觉任务,例如在高分辨率的医学和航空图像分析中。

在这里插入图片描述

这张图表(图 3)展示了 Vision Mamba(Vim)和 DeiT 在不同图像分辨率下的GPU内存效率比较。

  1. 内存使用对比

    • 在较低的分辨率(例如512x512像素)时,Vim和DeiT的GPU内存使用量非常接近。Vim在512x512分辨率下的内存使用量为5.04 GB,而DeiT的为5.52 GB。
    • 当输入图像的分辨率提高时,两者在内存使用上的差异开始显现。在分辨率为1248x1248像素时,DeiT的内存使用量激增至40.03 GB,导致内存溢出(OOM)。而Vim的内存使用量仅为22.59 GB,比DeiT在同一分辨率下节约了约17.44 GB的GPU内存,降低了约43.2%。
  2. 性能优势

    • 随着分辨率的增加,Vim展示了出色的内存效率,这意味着它更适合处理高分辨率图像。Vim在保持相对较低的内存使用量的同时能够处理更大的图像,这使得它在资源受限的环境中特别有用。
  3. 适用性

    • 图表表明,Vim适用于那些需要处理高分辨率图像的应用,如医学成像或卫星图像分析,因为它在GPU内存使用上的效率可以支持更大规模的数据处理。

总结来说,这张图表凸显了 Vim 在高分辨率图像处理方面相较于 DeiT 的明显优势,尤其是在GPU内存使用效率上。这一点对于开发能够有效利用有限硬件资源的视觉识别系统是非常重要的。

在这里插入图片描述
配图 4 显示了在不同分辨率下,DeiT-Ti和Vim-Ti两种模型的帧率(FPS)对比。FPS是衡量图像处理速度的一个指标,高FPS意味着模型能够更快地处理图像。

从图中可以看到:

  1. 在512×512分辨率下,Vim和DeiT的FPS相似,这表明在较低分辨率时两者处理速度接近。

  2. 随着分辨率的提高,Vim的FPS始终高于DeiT。特别是在1248×1248的高分辨率下,Vim的处理速度是DeiT的2.8倍。

  3. FPS的对数标度:图表的Y轴采用对数标度,这有助于在范围较大时更清晰地展示性能差异。

  4. 性能随分辨率的变化:图中的曲线展示了性能随着分辨率增加而变化的趋势。随着输入图像分辨率的增加,Vim能够维持较高的FPS,说明它在处理高分辨率图像时具有更好的速度效率。

总的来说,这张图表突出了Vim模型在高分辨率图像处理方面的速度优势,特别是在对大量数据进行批量推理时。这种速度优势使得Vim在需要实时或近实时图像处理的应用中非常有价值,如视频监控分析、在线图像识别服务等场景。

4.3 目标检测和实例分割

讨论了在COCO 2017数据集上进行的对象检测和实例分割任务的实验设置和结果。

  1. 实验设置

    • 在COCO 2017数据集上进行对象检测和实例分割实验。
    • 使用了ViTDet作为基本框架。
    • 实验的详细设置在论文的第B节中提供。
  2. 实验结果

    • 在表格3中,Vim-Ti与DeiT-Ti进行了比较,使用了流行的Cascade Mask R-CNN框架。
    • Vim-Ti在检测任务中的表现超过了DeiT-Ti,具体来说,在框检测平均精度(AP)上高出1.3,在掩码检测平均精度(mask AP)上高出1.1。
    • 对于中等和大尺寸的对象,Vim-Ti在框检测AP上比DeiT-Ti高出1.6,在掩码检测AP上高出1.4到1.8,这展示了Vim在学习长距离上下文方面的优势。
  3. 准确性优势的强调

    • 准确性的提升是非平凡的,因为DeiT采用了窗口注意力机制,而Vim则以纯序列建模的方式工作。
    • 在处理高分辨率图像(例如1024x1024)的表征学习时,论文修改了DeiT的骨架,加入了2D窗口注意力,这在一定程度上破坏了Transformer的序列建模特性。
    • Vim模型,得益于之前展示的效率(第3.5节、图1和图3),可以直接应用于1024x1024的高分辨率图像,学习序列化视觉表征,用于对象检测和实例分割,无需在骨架中加入2D先验。

这说明了Vim模型在处理复杂视觉任务时的有效性,特别是在不需要额外的2D结构先验的情况下,它能够学习丰富的视觉特征,并在高分辨率图像分析中取得很好的效果。这使得Vim非常适合于高分辨率的视觉应用,如医学图像分析和卫星图像处理。

在这里插入图片描述

在这里插入图片描述
这张图5是一幅可视化比较图,展示了DeiT-Ti和Vim-Ti在Cascade Mask R-CNN框架下的性能差异。通过三个不同的图像,可以看到:

  1. GT (Ground Truth):显示了真实情况,即标准的标注结果,其中“airplane”和“person”都被正确标记。

  2. DeiT-Ti:这是DeiT-Ti模型的预测结果,从图像中可以看出它没有检测到整个飞机,这表明DeiT-Ti可能没有学习到捕获大型物体的长距离上下文信息。

  3. Vim-Ti:而Vim-Ti的预测结果中,飞机被准确检测并标记了出来,且置信度为86%。这表明Vim-Ti能够更好地捕捉图像中的大型物体,这可能归因于其在捕捉长距离上下文方面的优势。

图5表明,与DeiT-Ti相比,Vim-Ti在处理长距离上下文信息,尤其是在检测图像中的大型物体时表现更佳。这种能力是Vim-Ti特有的,因为它利用了状态空间模型(SSM)的长范围上下文学习能力,这是其设计的一部分。此结果强调了Vim-Ti在复杂视觉任务中的实际应用潜力。

4.4 消融实验

在这里插入图片描述

图表4是Vision Mamba论文中的消融研究部分,旨在评估双向状态空间模型(SSM)设计对性能的影响。研究中考虑了多种不同的双向策略,通过在ImageNet-1K分类和ADE20K数据集上进行的语义分割来测试它们的有效性。

消融研究分析

  1. 无双向策略:直接使用Mamba模块,仅处理视觉序列的前向方向。分类准确度为73.2%,ADE20K的mIoU为32.3。

  2. 双向序列:在训练期间,随机翻转视觉序列,相当于数据增强。这种方法对分类的影响较大,导致分类准确度下降了约7个百分点,但在语义分割上比单向Mamba块表现出1.3 mIoU的提升。

  3. 双向模块:成对堆叠块,每对的第一个块处理视觉序列的前向方向,第二个块处理后向方向。

  4. 双向SSM:为每个模块添加一个额外的SSM以处理视觉序列的后向方向。

  5. 双向SSM + Conv1d:在双向SSM的基础上,进一步在后向SSM之前添加一个后向的一维卷积(Conv1d)。

结果

  • 如表4所示,直接采用Mamba模块在分类任务上表现良好,但在下游密集预测任务中存在挑战。
  • 通过添加额外的后向SSM和Conv1d,实现了更优越的分类准确度(73.9%相对于73.2%的top-1准确度)和出色的分割优势(35.9 mIoU相对于32.3 mIoU)。
  • 研究中将双向SSM + Conv1d策略作为Vim块的默认设置。

结论

这项消融研究证明了在Vim模型中引入双向处理(特别是结合SSM和Conv1d)可以显著提高模型在分类和语义分割任务上的性能。选择双向SSM + Conv1d作为默认设置表明,在解决高分辨率图像的复杂视觉任务时,双向处理对提升模型性能至关重要。这种设计使Vim模型能够更有效地捕获长距离上下文信息,从而在视觉任务中表现出更好的理解和预测能力。

这段内容讲述了Vision Mamba(Vim)在ImageNet-1K数据集上的分类设计消融研究。研究测试了不同的分类策略,以了解哪种策略能最有效地使用Vim模型进行图像分类。

消融研究的分类策略

  1. 平均池化(Mean pool)

    • 对最后一个Vim模块输出的特征进行平均池化,然后在这个池化后的特征上进行分类。
  2. 最大池化(Max pool)

    • 首先对视觉序列中的每个token应用分类头,然后对序列执行最大池化以获得分类预测结果。
  3. 头部类别标记(Head class token)

    • 参照DeiT,将类别标记(token)连接在视觉序列的头部,并在这个标记上进行分类。
  4. 双类别标记(Double class token)

    • 基于头部类别标记策略,额外在视觉序列的尾部添加一个类别标记。
  5. 中间类别标记(Middle class token)

    • 在视觉序列的中间添加一个类别标记,然后在最终的中间类别标记上进行分类。

实验结果

  • 如表5所示,实验显示中间类别标记策略能够充分利用SSM的循环特性以及ImageNet中的中心对象先验,展示了最高的top-1准确率76.1%。

这表明在视觉序列的中间引入一个分类用的类别标记,可能比在序列的头部或尾部添加类别标记更能有效地提取和利用图像特征。这种设计可能有助于捕获图像中的中心对象,并在分类任务中实现更好的性能。总体而言,这项消融研究强调了在设计视觉表示学习模型时,探索不同的分类策略对优化模型性能的重要性。
在这里插入图片描述

5. 结论和未来工作

概述了Vision Mamba(Vim)模型的提出背景、设计特点、性能优势以及未来的应用前景。

  1. 提出背景

    • Vim被提出用来探索最近的高效状态空间模型,即Mamba,以作为通用视觉基础架构。这意味着Vim的设计是为了广泛适用于各种视觉任务,而不是仅限于某一特定应用。
  2. 设计特点

    • Vim与之前针对视觉任务的状态空间模型不同,它不使用混合架构或等效的全局2D卷积核。这表明Vim避免了特定于图像的归纳偏见,这些偏见通常在传统的卷积神经网络(CNN)中被编码。
    • Vim以序列建模的方式学习视觉表示,这可能是指Vim将图像处理为一系列数据,如同处理自然语言或音频序列一样。
  3. 性能优势

    • Vim借助双向状态空间建模,实现了数据依赖的全局视觉上下文,意味着Vim能够根据输入数据的特点捕捉全局信息。
    • Vim的建模能力与Transformer相当,但计算复杂度更低。这是一项重要的技术进步,因为Transformer模型通常因计算复杂度而难以扩展到高分辨率图像。
    • 借助Mamba的硬件感知设计,Vim在处理高分辨率图像时具有比视觉Transformer模型(ViT)更快的推理速度和更低的内存使用率。
  4. 验证结果

    • Vim在标准计算机视觉基准测试上的实验结果验证了其建模能力和高效性,表明Vim有成为下一代视觉基础架构的潜力。
  5. 未来应用

    • Vim的双向SSM建模和位置嵌入非常适合无监督任务,例如遮罩图像建模预训练,这可能指的是如何使用Vim进行像BERT那样的无监督或自监督学习。
    • Vim的架构与Mamba相似,可以用于多模态任务,例如CLIP风格的预训练,这是指结合文本和图像数据的学习。
    • Vim预训练权重的进一步应用探索包括高分辨率医学图像分析、遥感图像处理以及长视频处理,这些都可以被视为下游任务,意味着在特定应用领域内利用Vim模型的能力。

总结来说,这段话强调了Vim模型在视觉建模领域的革新性,展示了其在多个标准任务上的有效性,并提出了多个未来的研究和应用方向。

Section. B Additional Setting

这段文字是Vision Mamba论文中附加设置部分的内容,描述了用于语义分割和对象检测与实例分割的具体实验设置。

语义分割设置

  • 实验在ADE20K数据集上进行,该数据集含有150种细粒度的语义类别,分别包含20K、2K、3K张图像用于训练、验证和测试。
  • 使用UperNet作为基础框架。
  • 训练中使用了AdamW优化器,权重衰减设置为0.01,批量大小为16。
  • 训练计划采用初始学习率 6 × 1 0 − 5 6 \times 10^{-5} 6×105,线性学习率衰减,线性预热1,500次迭代,总共160K次迭代。
  • 数据增强方法包括随机水平翻转、比例范围内的随机缩放(0.5至2.0之间)和随机光度失真。
  • 在评估阶段,图像被缩放到短边为512像素。

对象检测与实例分割设置

  • 实验在COCO 2017数据集上进行,包含118K张图像用于训练,5K张用于验证,20K张用于测试。
  • 基础框架为经典的Cascade Mask R-CNN。
  • 对于ViT基础的骨架,应用了额外的配置(例如交错窗口和全局注意力)以处理高分辨率图像,这是根据ViTDet方法。
  • 对于基于SSM的Vim模型,直接使用而无需任何修改。
  • 在训练过程中,使用AdamW优化器,权重衰减为0.1,批量大小为64。
  • 训练计划采用初始学习率 1 × 1 0 − 4 1 \times 10^{-4} 1×104,线性学习率衰减,总共380K次迭代。
  • 数据增强包括大尺度抖动增强到1024x1024的图像。
  • 评估时,图像被缩放到短边为1024像素。

这些详细的设置说明了论文作者在进行实验时采取的具体方法和策略,这对于重现实验结果和理解模型性能至关重要。通过这些设置,可以确保在不同视觉任务中的实验是在公平和一致的条件下进行的。

作者将序列建模中的Mamba应用到视觉领域,为什么要提出bidirectional modeling?如果对视觉采用unidirectional modeling会有哪些不足?

在这篇论文中,作者提出了将序列建模中的Mamba模型应用到视觉领域,并特别强调了双向建模(bidirectional modeling)的重要性。这是因为视觉数据通常包含丰富的空间信息,而这些信息在图像的不同部分之间可能有复杂的相互依赖关系。使用双向建模可以更有效地捕捉和利用这些依赖关系,以提高模型对图像的整体理解能力。

如果使用单向建模(unidirectional modeling)来处理视觉数据,主要存在以下不足:

  1. 空间上下文的有限捕获:单向建模通常只能从一个方向(如从左到右或从上到下)处理数据,这可能导致模型无法充分理解图像中的空间关系。例如,在处理图像时,单向模型可能会错过图像右侧或下侧的上下文信息,这些信息可能对整体识别和理解至关重要。

  2. 不对称的信息处理:在单向模型中,序列的早期元素会影响后续元素的处理,但后续元素对早期元素的影响却被忽略。这种不对称的信息流可能导致模型在处理具有复杂内部结构的图像(如场景图像中的多个互动对象)时表现不佳。

  3. 局限的表示能力:单向模型在某些情况下可能不足以捕获所有相关特征,尤其是在图像的不同部分需要相互作用以识别整体模式的情况下。

因此,双向建模通过同时从两个方向处理数据,可以更全面地捕捉图像中的空间上下文和关系,从而提高模型的表现力和准确性。这种方法特别适用于视觉任务,因为视觉数据的内部结构和关系往往是多方向和高度交互的。

结合图像patches,解释论文中的这组equations

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

为什么Vision Mamba需要positonal embeddings?

这是因为与语言数据不同,图像数据中的元素(像素或者 patches)有其固有的空间关系。在自然语言处理(NLP)中,序列模型如 Transformer 依赖位置嵌入来理解单词在句子中的顺序,因为Transformer模型本身并不具备处理序列顺序的能力。在图像中,每个 patch 的位置同样非常重要,因为它决定了该 patch 如何与其他 patch 相互关联。

如果没有位置信息,模型将无法区分不同位置的相同内容,这会导致如下问题:

  1. 丢失空间信息:在图像中,物体的位置和布局是理解图像内容的关键部分。没有位置嵌入,模型就不能捕捉到这些关键的空间关系

  2. 交换性问题:神经网络的许多操作,特别是全连接层或者卷积层,本质上是交换性的(permutation invariant),这意味着如果你交换了输入序列的元素,输出将保持不变。但在处理图像时,如果你交换了 patches,图像的含义可能完全不同。位置嵌入是打破这种交换性,使模型能够识别不同位置上的相同内容的一种方法。

  3. 顺序和方向:在视觉任务中,对象的相对顺序和方向也很重要。例如,一个人的头部通常位于身体的上方。位置嵌入能够帮助模型识别这种空间层次结构。

在 Vim 模型中,位置嵌入是通过直接加到每个 patch 的表示上来实现的,这样每个 patch 不仅包含了自身的视觉信息,还包含了其在整个图像中位置的信息。通过这种方式,Vim 能够学习到不同位置的 patches 如何共同构成整个图像的视觉内容。

为什么使用 z z z 进行门控?

在这里插入图片描述

在 Vision Mamba (Vim) 的架构中,使用 声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】

推荐阅读
相关标签