论文阅读:VideoMamba: State Space Model for Efficient Video Understanding

news2024/11/25 5:35:27

论文地址:arxiv

摘要

为了解决视频理解中的局部冗余与全局依赖性的双重挑战。作者将 Mamba 模型应用于视频领域。所提出的 VideoMamba 克服了现有的 3D 卷积神经网络与视频 Transformer 的局限性。

经过广泛的评估提示了 VideoMamba 的能力:

  • 在视觉领域有可扩展性,无需大规模数据集来预训练。
  • 对于短期动作也有敏感性,即使是细微的动作差异也可以识别到
  • 在长期视频理解方面有优越性,相比基于特征的模式,有显著的进步。
  • 与其他的模态有兼容性,在多模态环境中表现出色。

正文

视频理解的核心在于掌握时空表征,这有两个问题:

  • 短视频片段中的大量时空冗余
  • 长语境中复杂的时空依赖关系

然而,CNNs 与 Transformer 的模型无法同时解决这两个问题。

由于 Mamba 存在选择性状态空间模型(SSM),使其在保持线性复杂度与促进长期动态建模之间取得了平衡。所以作者引入了 VideoMamba。它以原始 ViT 的风格和谐的融合了卷积和注意力的优势。提出了一种线性复杂度的方法来进行动态时空上下文建模,非常适合高分辨率长视频。

预备知识

状态空间模型(SSM)

状态空间模型基于连续系统构建,用于映射一维函数或序列,形式为
x ( t ) ∈ R L → y ( t ) ∈ R L x(t) \in \mathbb{R}^L \rightarrow y(t) \in \mathbb{R}^L x(t)RLy(t)RL
通过隐藏的状态 h ( t ) ∈ R N h(t) \in R^N h(t)RN。形式上,SSM 使用以下常微分方程来建模输入数据:

h ′ ( t ) = A h ( t ) + B x ( t ) , y ( t ) = C h ( t ) , \begin{align*} h'(t) &= {\mathbf A}h(t) + {\mathbf B}x(t), \\ y(t) &= {\mathbf C}h(t), \end{align*} h(t)y(t)=Ah(t)+Bx(t),=Ch(t),

其中, A ∈ R N ∗ N A \in R^{N*N} ARNN 表示系统的演化矩阵, B ∈ R B ∗ 1 B \in R^{B*1} BRB1 C ∈ R N ∗ 1 C \in R^{N*1} CRN1 是投影矩阵。这个连续的 ODE 通过离散化在现代 SSm 中进行近似。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 , h t = A ‾ h t − 1 + B ‾ x t , y t = C h t . \begin{align*} \overline{{\mathbf A}} &= \exp({\mathbf \Delta \mathbf A}), \\ \overline{{\mathbf B}} &= ({\mathbf \Delta \mathbf A})^{-1} (\exp({\mathbf \Delta \mathbf A}) - {\mathbf I}) \cdot {\mathbf \Delta \mathbf B}, \\ h_t &= \overline{{\mathbf A}} h_{t-1} + \overline{{\mathbf B}} x_t, \\ y_t &= {\mathbf C}h_t. \end{align*} ABhtyt=exp(ΔA),=(ΔA)1(exp(ΔA)I)ΔB,=Aht1+Bxt,=Cht.

Mamba 通过实施选择性机制(Selective Scan Mechanism,S6)作为其核心 SSM 运算符。在 S 6 中,参数 B ∈ R B ∗ L ∗ N B \in R^{B*L*N} BRBLN C ∈ R B ∗ L ∗ N C\in R^{B*L*N} CRBLN 以及 Δ ∈ R B ∗ L ∗ D \Delta \in R^{B*L*D} ΔRBLD 直接从输入数据 x ∈ R B ∗ L ∗ D x \in R^{B*L*D} xRBLD 中导出,表明其具有内存的上下文敏感性与自适应权重调节能力。

以下左图是 Mamba 架构

视觉的双向 SSM

原始的Mamba模块是为一维序列设计的,对于需要空间感知的视觉任务来说不够。基于此,Vision Mamba引入了图2b中的双向Mamba(B-Mamba)模块,它适应了专为视觉应用的双向序列建模。此模块通过同时的前向和后向SSM处理扁平化的视觉序列,增强了其空间感知处理能力。

在本文中,作者扩展了 B-Mamba 模块以理解三维视频。

模型架构

首先使用 3D 卷积(1*16*16 )将输入视频 X v ∈ R 3 ∗ T ∗ H ∗ W X^v \in R^{3*T*H*W} XvR3THW 投影到 L L L 个不重叠的时空补丁 X p ∈ R L ∗ C X^p\in R^{L*C} XpRLC 中,其中 L = t ∗ h ∗ w ( t = T , h = H 16 , w = W 16 ) L = t*h*w(t = T,h = \frac{H}{16}, w = \frac{W}{16}) L=thw(t=T,h=16H,w=16W)。输入到后续 videoMamba 编码顺路的标记序列为:

X = [ X c l s , X ] + p s + p t X = \left[ \mathbf{X}_{cls}, \mathbf{X} \right] + \mathbf{p}_{s} + \mathbf{p}_{t} X=[Xcls,X]+ps+pt

X c l s X_{cls} Xcls 是一个可学习的分类标记,预置在序列的开头。 p s ∈ R ( h w + 1 ) ∗ C p_s \in R^{(hw+1)*C} psR(hw+1)C 是一个可学习的空间位置嵌入, p t ∈ R t ∗ C p_t \in R^{t*C} ptRtC 是一个可学习的时间嵌入。这两个用于保留时空位置信息(SSM 建模对标记位置敏感)。之后,token X X X 通过 L L L 个堆叠的 B-Mamba 模块传递,最终层的 [cls] token 表示通过归一化和线性层进行分类处理。

时空扫描

为了将 B-Mamba 层应用于时空输入,将原始的 2D 扫描扩展为不同的双向 3D 扫描:

  1. (a)空间优先,按位置组织空间标记,然后逐帧堆叠
  2. (b)时间优先,基于帧排列时间标记,然后沿空间维度堆叠
  3. 时空,结合空间优先与时间优先
    1. (c):进行一半
    2. (d):进行全部(2 倍于 c 的计算)

经过消融实验表明,空间优先的双向扫描是最有效且简单的。

VideoMamba 是基于 Vim 构建的,通过省略中间 [cls] token 和旋转位置嵌入等特性简化了其架构,在 ImageNet-1 k 上有出色的表现。VideoMamba 严格遵循 ViT 设计,无下采样层。为了解决过拟合的问题,引入了一种有效的自蒸馏技术。

VideoMamba 比传统的基于注意力的模型更高效,同时也可显著减少使用的 GPU 内存。以下是两者的对比。

左图为图片处理速度,右图为 gpu 内存占用情况。

模型的超参数

使用 Mamba 中的默认超参数,将状态维度与扩展比设置为 16 与 2。而不同的深度与嵌入维度对应着不同规模的模型,以下是参数:

较大的模型会出现过拟合的现象,导致性能不佳,如下图 a 所示:

为了抵消较大 Mamba 模型中的过拟合,引入了一种有效的自蒸馏策略,使用一个较小且训练良好的模型作为教师,指导大的学生模型训练,结果如图 a 所示。

掩码建模

为了增强时间敏感性并验证其与文本模态的适应性,作者采用了一种受 UMT 启发的掩码对齐方法。

首先,VideoMamba 在仅视频数据上从头开始训练,将未掩盖的标记与来自 CLIP-ViT 的标记进行对齐。随后,它与文本编码器和跨模态解码器集成,以在图像-文本和视频-文本数据集上进行预训练。由于 VideoMamba 的独特架构(SSM 与 Transformer),我们仅对最终输出进行对齐。

以下是提出的不同的行掩码技术。从而来满足 B-Mamba 块对连续标记的偏好。

剪辑行掩码与帧行掩码的区别在于,前者掩盖整个视频剪辑,而后者则单独掩盖每一帧。

模型评估

自蒸馏效果

由上图 6 可知:

  • 从头开始训练时,VideoMamba-B 更容易过拟合,表现不如 VideoMamba-S,而 VideoMamba-M 则表现相似。
  • 自蒸馏在实现所需优化方面表现出色,且仅需极少的额外计算成本。

为了减少教师的过度指导,作者在图 6 b 中尝试了早停法,但是没有有效的结果。

结果

展示了在 ImageNet-1k 数据集上的结果。可以发现,VideoMamba-M 在使用更少的参数下,比其他同构架构有显著的优势。

同时,VideoMamba-M 在利用分层特征增强性能的非同构骨干网络中也表现出色。

短期视频理解

在场景相关数据集 Kinetics-400 与时间相关数据集 Something-Something V2 上评估了 VideoMamba,这两个数据集的视频平均长度分别为10秒和4秒。

以上两表列出了在短期视频数据集上的结果。

  1. 监督学习:与纯注意力方法相比,VideoMamba-M 取得了显著的优势。在高准确率的同时有着显著减少的计算需求与较少的预训练数据。
  2. 自监督学习:在掩码预训练下,VideoMamba 超过了 VideoMAE,突显了纯 SSM 模型在高效,有效理解短期视频方面的潜力。

消融研究

作者研究了各个方面

  1. 扫描类型:空间优先的方法最有效
  2. 帧与分辨率:更高的分辨率无法带来更好的性能,增加帧数在 K400 数据集上有提升,但是在 SthSthV2 数据集上无提升。可能由于视频持续时间效短,无法有效容纳更长的输入
  3. 掩码预训练:行掩码与1D卷积特别兼容,优于常用的随机和管状掩码。剪辑行掩码因其较高的随机性而表现出色。注意力掩码通过优先保留相邻的有意义内容而成为最有效的方法。

长期视频的理解

使用了三个数据集:BreakfastCOIN 和长视频理解(LVU)。

结果如上所示:即使在较小的模型规模下也能实现最先进(SOTA)的结果。

多模态视频理解

在五个主要基准上进行零样本视频-文本检索任务,包括 MSRVTTDiDeMoActivityNetLSMDCMSVD

在相同的预训练语料库和相似的训练策略下,VideoMamba 在零样本视频检索性能上优于基于 ViTUMT。这强调了 Mamba 在处理多模态视频任务时与 ViT 相当的效率和可扩展性。值得注意的是,对于包含较长视频长度(如 ANetDiDeMo)和更复杂场景(如 LSMDC)的数据集,VideoMamba 表现出显著的改进。这表明 Mamba 即使在具有挑战性的多模态环境中,也能够满足跨模态对齐的需求。

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

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

相关文章

基于 Householder 变换的 qr 分解 算法与源码实现

1,算法描述 1.1 算法1 反射向量 计算 Householder 向量 给定 算法计算满足 v(1) 1.0 的 和 , 使得 是正交矩阵且 , 即,将m维向量 通过反射变换 反射至 轴上去。 1.2 算法2 QR 分解 Householder QR 分解 未完待补。。。。 2,源码…

什么是RS485总线?

1.什么是RS485总线? RS485 是一种通用的通信标准,广泛用于数据采集和控制应用中。 它的主要优点之一是它允许将多个 RS485 设备放在同一条总线上,这使得多个节点可以相互连接。 RS-485是美国电子工业协会(EIA)在1983年…

2024HarmonyOS应用开发者高级认证最新整理题库和答案(已收录182道 )

更新截止2024-08-27,完整题库一共182道题,足够覆盖90%考题,如有新题和遗漏我会持续补充 所有题目的选项都是打乱顺序的,记答案不要记序号 完整题库请在我的网盘下载或查看在线文档 完整题库在线文档预览 单选(已收录102道) 1 . 以下哪个装饰器用来表示并发共享对象。(B) A. @…

Windows服务器应急响应(下)

目录 介绍步骤 介绍 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体&#x…

基于FPGA的lz4解压缩仿真调试

1、简介 对于任意长度顺序呈现的输入数据流,通过对冗余byte的数据编码,完成数据压缩的问题。数据包格式 从数据包长度可知,最少需要5个字节才能压缩,否则压缩无意义,对于lz其他的介绍可以百度,本文只介绍…

JobScheduler 开发自测调试

1. 目标 例如以下模拟数据 相同时间内灭屏待机情况 有Job优化版本 无Job优化版本 数据展示 剩余电量 50 45 续航提升5% 时间延迟次数 100 0 N/A,体现数据优化原因 拦截Job次数 132 0 N/A,体现数据优化原因 第三方App的Job 执行总次数(越大越耗电) 20 200 优化后,减少(1-20/…

C++ 变量、输入输出、表达式和顺序语句 ac-wing

输入两个整数&#xff0c;求这两个整数的和是多少。 #include <iostream> using namespace std; int main () {int a, b;cin >> a >> b;cout << a b << endl;return 0; }差 #include<iostream> using namespace std; int main() {int A…

easy_fastapi 后端开发框架

GitHub easy_fastapi by one-ccs 遵循 MIT 开源协议 Easy FastAPI 基于 FastAPI 开发的后端框架&#xff0c;集成 SQLAlchemy、Pydantic、Alembic、PyJWT 等插件。 一、目录结构说明 project-root/ │ ├─ backend/ # 后端项目目录&#xff08;python 3.12.4&#xff09; │…

微信小程序背景图无法显示

文章目录 不知道有没有人跟我一样&#xff0c;刚接触微信小程序&#xff0c;在写代码的时候&#xff0c;背景图莫名奇妙不显示。 网上有很多解决方法&#xff0c;比如转 base64 &#xff0c;网络图片地址等等&#xff0c;但我觉得都太麻烦了&#xff0c;这里直接给出我的解决方…

Unity实战案例全解析 之 背包/贩卖/锻造系统(左侧类图实现)

物品类 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Item {#region 物品类的基础属性public int ID { get; set; }public string Name { get; set; }public Typeitem typeitem { get; set; }//物品类型public Qualityitem…

VMware17 虚拟机使用NAT模式上网配置

1、. 确认网络适配器选择NAT模式 2、 查看所需要配置的网络信息 在NAT设置里面找到网关ip 在DHCP设置中查看可用ip的范围 后面设置虚拟机的etc/sysconfig/network-scripts/下面的ens文件会用到 查看网卡名称 ip addr 我这里的网卡名称是ens33 配置网关、ip地址、DNS地址 vi…

[线程]单例模式 及 指令重排序

文章目录 一. 单例模式饿汉模式懒汉模式单例模式中涉及到的线程安全问题 二. 指令重排序引起线程安全问题 一. 单例模式 单例模式, 是一种经典的设计模式 设计模式: 类似于棋谱, 把编程中各种经典的问题场景给你盘一盘, 并给出一下解决方案 遇到这种场景, 代码就这样写, 绝对不…

Linux和Unix的区别及为什么鸿蒙系统不用Unix的原因

目录 Linux是什么? Unix是什么&#xff1f; 他们的区别&#xff1a; 鸿蒙系统介绍及鸿蒙系统不用Unix的原因 Linux是什么? Linux的历史可以追溯到1991年&#xff0c;由芬兰的计算机科学家林纳斯托瓦兹&#xff08;Linus Torvalds&#xff09;为了学习操作系统的工作原理而…

【 OpenHarmony 系统应用源码魔改 】-- Launcher 之「桌面布局定制」

前言 阅读本篇文章之前&#xff0c;有几个需要说明一下&#xff1a; 调试设备&#xff1a;平板&#xff0c;如果你是开发者手机&#xff0c;一样可以加 Log 调试&#xff0c;源码仍然是手机和平板一起分析&#xff1b;文章中的 Log 信息所显示的数值可能跟你的设备不一样&…

STM32GPIO操作底层解析

我们使用HAL 和 标准库时&#xff0c;常常忽略他两的底层&#xff0c;只知道怎么用不知其原理&#xff0c;其实是大忌&#xff0c;因为底层丢了代码的灵魂就丢了&#xff0c;对以后的Linux开发不利 常用的指令函数&#xff1a; void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint…

本地编写Markdown格式文件,浏览器查看

编写准备 下载VsCode并安装&#xff0c;打开后在内部安装Markdown All in One、Markdown Preview Enhanced、Paste Image三个插件。新建一个文件夹用以后期保存你的笔记等文件在左侧新建文件&#xff0c;.md结尾&#xff0c;即完成创建右侧可实时的查看你的编写结果&#xff0…

SpringBoot3集成Spring Authorization Server实现SSO单点登录

1. 概述 在之前的文章中介绍过SpringBoot集成OAuth2老版本的方案SpringCloud搭建微服务之OAuth2实现SSO单点登录&#xff0c;随着Spring Authorization Server框架的成熟和SpringBoot版本的更新&#xff0c;新项目必然会采用新的技术和框架&#xff0c;本文将使用最新的Spring…

推理引擎测试-算力共享:test_inference_engine

目录 算力共享:test_inference_engine 关键点解释 实际应用和注意事项 算力共享:test_inference_engine 这段代码设计用于测试一个名为 InferenceEngine 的推理引擎,特别是测试其在处理不同分片(Shards)时的连续性和一致性。在机器学习和深度学习模型中,尤其是当模型非…

jenkins+python+appium 本地(简洁版)

jenkinspythonappium 本地&#xff08;简洁版&#xff09; 等服务器到了配到服务器上去&#xff0c;先在自己电脑上试一下。踩了n个坑&#xff0c;网上找的资料太深奥TAT 直接上操作 先把jenkins安装好&#xff08;肯定安装啦&#xff09;我的版本是2.462 新建任务 输入名称 选…

市占率最高的显示器件,TFT_LCD的驱动系统设计--Part 1

目录 一、简介 二、TFT-LCD驱动系统概述 &#xff08;一&#xff09;系统概述 &#xff08;二&#xff09;设计要点 二、扫描驱动电路设计 &#xff08;一&#xff09;概述 扫描驱动电路的功能 扫描驱动电路的组成部分 设计挑战 驱动模式 &#xff08;二&#xff09…