当前位置: 首页 > news >正文

论文阅读:MambaVision: A Hybrid Mamba-Transformer Vision Backbone

论文地址:arxiv

摘要

作者提出了一种新型的混合 Mamba-Transformer 主干网络。通过重新设计 Mamba 公式,增强了其高效建模视觉特征的能力。

此外,作者还通过对 ViT 与 Mamba 消融研究,实验结果表明了:在最后几层为 Mamba 架构配备几个自注意力模块,可以极大地提高捕获长程空间依赖关系的建模能力。

最后,作者根据他们的发现,设计了一系列具有层次结构的 MambaVision 模型,最终取得了最佳的性能。

正文

Transformer 模型在视觉领域中已经成为了标准架构,但是其计算成本很高。之后 Mamba 模型改进了这个问题,它实现了线性的时间复杂度,并在不同的领域中超越过匹敌 Transformer。

但是基于 Mamba 架构的骨干网络对于需要全局感受野的计算机视觉任务依然有着一定的问题:

  1. 图像像素是二维的,所以不存在与顺序数据相同的顺序依赖性。同时,由于图像是二维的,所以需要更并行与集成的方式考虑。作者认为这导致了在处理空间数据时的低效性。
  2. Mamba 这样的自回归模型是逐步处理数据的,这限制了其在一次前向传播中捕捉与利用全局上下文的能力。但是视觉任务通常需要在理解整体图像的基础上对局部区域做准确的预测。

针对以上的问题,提出了 MambaVision 模型,其核心思想是通过重新设计 Mamba 模块并结合 Transformer 模块,形成一种混合的架构,从而来提升视觉任务的性能。该模型包含多分辨率架构,并利用基于卷积神经网络的残差模块快速提取较大分辨率特征。

经过实验,这个模型在 ImageNet-1 k 数据集上效果很好。

贡献

  • 重新设计了更适合视觉的 Mamba 模块,提高了 Mamba 架构的准确性与图像吞吐量。
  • 证明了在最后的阶段加入自注意力模块可显著提高模型捕捉全局上下文与长距离空间依赖的能力。
  • 提出了 MambaVision 模型,这是一个混合了 Mamba 与 Transformer 的模型。

模型架构

MambaVision 有四个不同的阶段组成,前两个阶段由基于 CNN 的层组成,用于在较高输入分辨率下的快速提取特征。而第三与第四阶段是由 MambaVision 与 Transformer 块组成。

对于尺寸为 H × W × 3 的图像,会先被转换为重叠的补丁,尺寸为 H/4 × W/4 × C,然后通过一个由两个连续的 3*3 的 CNN 层(步幅为 2)组成的 stem 投射到 C 维嵌入空间中。

下采样模块由一个批归一化的 3*3 的 CNN 层(步幅为 2)组成,可以将图像分辨率减半。

而 CNN 块采用以下残差块公式:
z ^ = GELU ( BN ( Conv 3 × 3 ( z ) ) ) \hat{z} = \text{GELU}(\text{BN}(\text{Conv}_{3 \times 3}(z))) z^=GELU(BN(Conv3×3(z)))
z = BN ( Conv 3 × 3 ( z ^ ) ) + z z = \text{BN}(\text{Conv}_{3 \times 3}(\hat{z})) + z z=BN(Conv3×3(z^))+z
其中,GELU 为激活函数,BN 为批归一化。

层架构

如果输入 X ∈ R T ∗ C X \in R^{T*C} XRTC,其中序列长度为 T T T,嵌入维度为 C C C,则在阶段 3 与 4 中,第 n 层的输出可以通过以下公式计算:

X ^ n = Mixer ( Norm ( X n − 1 ) ) + X n − 1 \hat{X}^n = \text{Mixer}(\text{Norm}(X^{n-1})) + X^{n-1} X^n=Mixer(Norm(Xn1))+Xn1
X n = MLP ( Norm ( X ^ n ) ) + X ^ n X^n = \text{MLP}(\text{Norm}(\hat{X}^n)) + \hat{X}^n Xn=MLP(Norm(X^n))+X^n
Norm 表示层归一化,而 Mixer 表示令牌混合。

MambaVision 混合模块

以下是其架构:

作者做了以下的改动:

  • 使用常规的卷积代替了因果卷积(causal convolution)
  • 增加了一个不含 SSM 的对称分支,这个分支由一个额外的卷积与 SiLU 激活函数(用于补偿由于 SSM 的顺序约束而丢失的内容)。
  • 将两个分支的结果使用 Concat 连接并使用线性层投影(可以最终的特征表示结合了顺序与空间信息,利用两个优势)。

以下是公式的表示:

X 1 = Scan ( σ ( Conv ( Linear ( C , C 2 ) ( X in ) ) ) ) X_1 = \text{Scan}(\sigma(\text{Conv}(\text{Linear}(C, \frac{C}{2})(X_{\text{in}})))) X1=Scan(σ(Conv(Linear(C,2C)(Xin))))
X 2 = σ ( Conv ( Linear ( C , C 2 ) ( X in ) ) ) X_2 = \sigma(\text{Conv}(\text{Linear}(C, \frac{C}{2})(X_{\text{in}}))) X2=σ(Conv(Linear(C,2C)(Xin)))
X out = Linear ( C 2 , C ) ( Concat ( X 1 , X 2 ) ) X_{\text{out}} = \text{Linear} \left(\frac{C}{2}, C\right)(\text{Concat}(X_1, X_2)) Xout=Linear(2C,C)(Concat(X1,X2))
其中, L i n e a r ( C i n , C o u t ) ( . ) Linear(C_{in},C_{out})(.) Linear(Cin,Cout)(.) 表示输入与输出维度分别为 C i n C_{in} Cin C o u t C_{out} Cout 的线性层。 S c a n Scan Scan 是选择性扫描操作, σ \sigma σ 表示 sigmoid 激活函数(SiLU)。Conv 表示一维卷积,Concat 表示连接操作。

我认为作者计算 X o u t X_{out} Xout 的公式写错了,应该是 X out = Linear ( C , C ) ( Concat ( X 1 , X 2 ) ) X_{\text{out}} = \text{Linear} \left(C, C\right)(\text{Concat}(X_1, X_2)) Xout=Linear(C,C)(Concat(X1,X2))

自注意力

使用通用自注意力机制,其公式为:
Attention ( Q , K , V ) = Softmax ( Q K T d h ) V \text{Attention}(Q, K, V) = \text{Softmax}\left(\frac{QK^T}{\sqrt{d_h}}\right)V Attention(Q,K,V)=Softmax(dh QKT)V
Q Q Q K K K V V V 分别表示查询,键,值, d h d_h dh 是注意力头的数量。

模型评估

图像分类

以下是在 ImageNet-1 k 上的结果。实验表示模型大幅度超过了之前的研究。也可以看出来,在准确的同时,计算量也比同等大小的模型低很多。

目标检测与分割

以下展示了 MS COCO 数据集上的目标检测与实例分割结果

该实验验证了这个视觉骨干的有效性。

以下是在 ADE 20 K 数据集上进行的语义分割测试。

以上实验表明:MambaVision 作为不同视觉任务的骨干是可行的,尤其是在高分辨率下。

消融实验

Token Mixer 的设计

测试了以下的情况:

  • 原始公式:SSM 分支中为因果卷积(casual Conv),无额外分支
  • 将因果卷积换为普通的卷积
  • 添加额外分支,使用与 Mamba 相同的门控机制
  • 添加额外分支,使用连接(模型中使用的方法)
    准确率不断提高。

混合模式

通过对 MambaVision 模块与 transformer 模块的不同排列测试,可以发现,前一半全是 MambaVision 模块,后一半全是 transformer 模块的准确率最高。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 2023年中国90后十大影响力人物
  • 转换器和其他运放电路(恒流源+电压-电流/电流-电压转换器+峰值检测器)+故障检测(比较器故障+求和器故障)
  • CSS瀑布流实现
  • 计算机视觉之 GSoP 注意力模块
  • FastGPT:利用大模型重新定义传统知识库
  • 2024最新VMware17安装Windows10详细记录
  • golang make 函数的三个参数分别有什么作用
  • 新华三H3C HCL配置IS-IS基本配置
  • 【人工智能 | 机器学习】神经网络
  • Java算法之循环排序(Cyclic Sort)
  • 【Xcode】Xcode基本使用指引
  • java项目运行时提示process finished with exit code 1;只显示错误代码,没有显示具体错误信息;解决方案
  • 《工程机械》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • 在ubuntu系统上使用Hadoop搭建集群
  • 向量数据库Faiss的搭建与使用
  • 【Leetcode】101. 对称二叉树
  • MobX
  • Nodejs和JavaWeb协助开发
  • Phpstorm怎样批量删除空行?
  • 阿里云购买磁盘后挂载
  • 记一次删除Git记录中的大文件的过程
  • 将 Measurements 和 Units 应用到物理学
  • 七牛云假注销小指南
  • 手写一个CommonJS打包工具(一)
  • 问题之ssh中Host key verification failed的解决
  • 译自由幺半群
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 《天龙八部3D》Unity技术方案揭秘
  • Java总结 - String - 这篇请使劲喷我
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ######## golang各章节终篇索引 ########
  • #QT(智能家居界面-界面切换)
  • #大学#套接字
  • #单片机(TB6600驱动42步进电机)
  • #每日一题合集#牛客JZ23-JZ33
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (pycharm)安装python库函数Matplotlib步骤
  • (分享)自己整理的一些简单awk实用语句
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (四)汇编语言——简单程序
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (转)ObjectiveC 深浅拷贝学习
  • (转载)OpenStack Hacker养成指南
  • .Net - 类的介绍
  • .NET Core 中插件式开发实现
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .Net Winform开发笔记(一)
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .NET/C# 项目如何优雅地设置条件编译符号?