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

news/2024/9/18 21:09:58/ 标签: 论文阅读

论文地址: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.ppmy.cn/news/1518323.html

相关文章

Zookeeper 日志输出到指定文件夹,并按照日期轮循输出

更改日志输出路径 如果不做修改,zookeeper的日志信息默认都打印到了zookeeper.out文件中,这样输出路径和大小没法控制,因为日志文件没有轮转。所以需要修改日志输出方式。具体操作如下: 1.修改${zkhome}/bin/zkEnv.sh ZOO_LOG_…

我的推荐:腾讯云罗云《从零构建向量数据库》

在2024年8月,好几本和数据库相关的图书相继出版,我以为,这恰恰是数据库领域蓬勃向上的一种表现。 数据库需要更多的人关注,哪怕是谈论,所以我的《数据库简史》是一种尝试,希望以一种科普的风格,…

信息安全数学基础(4)最大公因数

前言 在信息安全数学基础中,最大公因数(Greatest Common Divisor, GCD)是一个核心概念,它在密码学、数论等多个领域都有广泛应用。以下是对最大公因数的详细阐述: 一、定义 设a和b是两个非零整数,若整数d同…

框架 +【Mybatis】概述 以及 基础环境搭建

目录 什么是框架? java后端框架包括 Mybatis概述 1、背景介绍 2、mybatis介绍 Mybatis环境搭建 1.创建一个maven项目 2.导入mysql数据库驱动包 导入mybatis依赖的jar包 3.创建一个全局的mybatis配置文件 4.创建数据库,创建表,准备数据 5.创建一个访问接口…

PHP一体化解决方案高效整合与优化学校管理系统小程序源码

一体化解决方案,让学校管理系统焕发新生✨ 🏫 开篇:传统管理的瓶颈与挑战 在快节奏的教育时代,传统的学校管理系统是否让你感到力不从心?🤔 信息孤岛、流程繁琐、效率低下...这些问题是否正困扰着你的工作…

vue 使用el-table 设置了show-overflow-tooltip属性,路由跳转后,气泡不消失的解决办法

文章目录 一、问题场景二、解决方法1.问题bug2.最终解决 总结 一、问题场景 在vue项目里使用el-table做一个列表页面,表格设置了show-overflow-tooltip属性,文字过长时鼠标滑过会展示气泡显示全部文字内容,因为设置路由缓存,如果…

哈苏相机SD卡数据恢复指南:从格式化到重生

在摄影的世界里,‌哈苏相机以其卓越的画质和精湛的工艺赢得了无数摄影师的青睐。‌然而,‌面对不慎的误操作,‌如SD卡格式化,‌珍贵的照片和视频数据可能瞬间消失,‌这无疑是对摄影师的重大打击。‌本文将深入探讨如何…

PostgreSQL遍历所有的表并为其创建基于某个字段的索引

完整代码 以下以"collect_time"字段为例,其他字段请自行全局替换 DO $$ DECLAREtable_name TEXT;index_name TEXT; BEGIN-- 遍历 public 模式下的所有表FOR table_name IN (SELECT table_nameFROM information_schema.tablesWHERE table_schema publicOR…

网上商城|基于SprinBoot+vue的分布式架构网上商城系统(源码+数据库+文档)

分布式架构网上商城系统 目录 基于SprinBootvue的分布式架构网上商城系统 一、前言 二、系统设计 三、系统功能设计 5.1系统功能模块 5.2管理员功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍…

大语言模型之Qwen2技术报告阅读笔记

QWEN2 TECHNICAL REPORT——2024 核心内容 介绍了Qwen2 大模型系列:基于transformer架构的LLMs 通过以下四个部分来展开介绍: Tokenizer & Model 四个dense models,参数计数为 0.5 亿、15 亿、70 亿和 720 亿一个Mixture-of-Experts (…

svn迁移到git

通过git bash将svn迁移到git上,并保留svn的提交历史。 一、准备 1、在电脑上安装git 2、确认svn账号具备该svn地址的操作权限 3、准备将要操作的svn项目地址、以及该项目下所有提交人的账号信息(在idea工具看提交历史),将信息存放…

classA cla= ...; if(cla == nullptr) 这种写法是否安全

在C中,classA cla …; 这行代码创建了一个名为 cla 的 classA 类型的对象(假设 classA 是一个已经定义好的类)。这个对象 cla 是在栈上分配的,而不是在堆上。因此,&cla(即 cla 的地址)永远…

Nginx负载均衡中的缓存过期配置:策略与实现

在Nginx负载均衡的高级应用中,合理配置缓存过期策略对于提升网站性能和保证内容的新鲜度至关重要。缓存过期意味着存储在代理缓存中的响应在一定时间后将被视为过时,并在下一次请求时从原始服务器重新获取。本文将详细介绍如何在Nginx中配置缓存过期&…

从PCB开始研究FPGA设计问题

从PCB开始研究FPGA设计问题 文章目录 从PCB开始研究FPGA设计问题前言一、高速电路板1.1 电源供电1.1.1 供电要求1.1.2 退耦 总结 前言 这里只针对FPGA告诉电路板设计问题进行讨论 一、高速电路板 一个成功的高速电路板,需要再复杂的板路中,应该避免与…

Nginx: 反向代理和动静分离概述

反向代理 反向代理服务器介于用户和真实服务器之间,提供请求和响应的中转服务对于用户而言,访问反向代理服务器就是访问真实服务器反向代理可以有效降低服务器的负载消耗,提升效率 1 )反向代理的模型 现在我们有一个用户和真实服…

Java笔试面试题AI答之集合(4)

文章目录 19. 简述Java集合框架机制与原理?1. 集合框架的组成2. 核心接口3. 集合框架的原理3.1 底层数据结构3.2 操作原理 4. 集合框架的优势 20. 简述集合框架中的泛型有什么作用和优点 ?作用优点 21. Java集合框架的基础接口有哪些?22. 解释…

群晖7.2.1 半洗白后安装AME

1. 群晖打开SSH 2. Xshell登录群晖 用管理员账户登录,然后使用sudo -i 获取root权限,sudo -i是要再次验证管理员密码 sudo -iSA6400还需要运行这个命令 /usr/syno/etc/rc.sysv/apparmor.sh stop #DSM7.2 AME版本3.1.0-3005强制解锁激活命令 curl -sk…

mysqlcheck

mysql bin中的其他工具包 对于mysql的其他工具, 有很多选项是公共的, 例如你在对数据库进行检查的时候, 需要指定host和user以及其password来连接上mysqlserver来进行相关操作, 这个时候其实用到的host等东西跟我们之前的mysql-client其实是类似的 也就是说他们是作为mysql众…

学习之SQL语言之DDL

查询 查询所有数据 SHOW DATABASES; 查询当前数据库 SELECT DATABASE(); 创建 CREATE DATABASE IF NOT EXISTS 数据库名; 删除 DROP DATABASE IF EXISTS 数据库名; 使用 USE 数据库名; 查询当前数据库所有表 SHOW TABLES; 查…

移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——8.stackqueuepriority_queue(模拟实现)

1.stack 可通过模板使用其他类来建立stack&#xff08;如vector&#xff0c;list&#xff09; #include<vector>namespace zone {template<class T,class container> //两个模板参数class stack{public:void push(const T& x){it.push_back(x); //使用it的p…