【论文笔记】VideoLLaMA 2: Advancing Spatial-Temporal Modeling and Audio Understanding in Video-LLMs

🍎个人主页:小嗷犬的个人主页
🍊个人网站:小嗷犬的技术小站
🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。


基本信息

标题: VideoLLaMA 2: Advancing Spatial-Temporal Modeling and Audio Understanding in Video-LLMs
作者: Zesen Cheng, Sicong Leng, Hang Zhang, Yifei Xin, Xin Li, Guanzheng Chen, Yongxin Zhu, Wenqi Zhang, Ziyang Luo, Deli Zhao, Lidong Bing
arxiv: https://arxiv.org/abs/2406.07476

基本信息

摘要

本文介绍了VideoLLaMA 2,一套旨在提升视频和音频任务中时空建模和音频理解的Video Large Language Models(视频-LLMs)。

在继承前代的基础上,VideoLLaMA 2引入了定制的时空卷积(STC)连接器,能够有效捕捉视频数据的复杂时空动态。

此外,我们通过联合训练将音频分支整合到模型中,从而通过无缝融合音频线索丰富了模型的多模态理解能力。

在多项选择视频问答(MC-VQA)、开放式视频问答(OE-VQA)和视频字幕(VC)任务上的全面评估表明,VideoLLaMA 2在开源模型中持续取得具有竞争力的成绩,甚至在某些基准测试中接近一些专有模型。

此外,VideoLLaMA 2在仅音频和音频视频问答(AQA & OE-AVQA)基准测试中相对于现有模型表现出合理的改进。

这些进步凸显了VideoLLaMA 2在多模态理解方面的优越性能,为智能视频分析系统设定了新的标准。

所有模型均已公开,以促进进一步的研究。

方法

模型结构

VideoLLaMA 2的整体流程

Visual Encoder: ViT-L/14@336
Audio Encoder: BEATs
LLM: Mistral-Instruct、Mixtral-Instruct

对于视觉-语言分支,视频帧逐帧编码为特征,通过作者的STC连接器进行处理,然后这些特征被输入到大型语言模型中,根据文本提示生成响应。

对于音频-语言分支,音频信号首先被转换为对数梅尔频谱图,然后编码以提取听觉特征。这些特征随后通过多层感知器(MLP)块进行处理,以使音频模态与大型语言模型对齐。

STC connector

The pipeline of STC connector

视频帧首先逐帧编码为特征帧,然后通过作者提出的STC连接器(两个空间交互模块和一个时空聚合模块)进行处理。作者采用RegStage实现“空间交互(Spatial interaction)”,并使用3D卷积实现“时空聚合(Spatial-Temporal Aggregation)”。

在设计视频-语言连接器时,作者主要遵循三个原则:

  1. 保持输出视觉标记的空间-时间顺序;
  2. 减少空间-时间标记的数量;
  3. 缓解空间-时间下采样过程中的信息损失。

基于以上三个原则,作者做出了以下设计:

  1. 根据第一个原则,作者避免使用重采样架构,因为重采样操作不能保证空间-时间顺序的保留。这可能导致次优收敛,因为自回归模型(即LLM骨干)高度依赖于训练和推理之间的一致标记顺序。因此,作者在构建连接器时只考虑卷积或池化操作。
  2. 根据第二个原则,作者插入3D下采样算子来压缩空间-时间标记。
  3. 为了补充空间-时间下采样引起的信息损失,作者在空间-时间下采样前后插入RegStage(一个强大的卷积块)。

实证研究STC连接器设计选择:空间交互(RegStage)、时空聚合(Downsample)。

为了实证研究上述设计的有效性,作者使用Video-LLaVA(Lin等,2023a)的训练数据建立了一个快速但合理的架构搜索。

如图所示,3D卷积与ReStage块(即绿色行)结合,形成了本文的STC连接器,在平均性能方面表现最佳。另一个有趣的发现是,几乎所有3D下采样设计在Egoschema上表现优于2D设计,这表明帧级特征的早期融合对长视频理解有益。

# STC connector的PyTorch伪代码
import torch.nn as nn
from timm.models.regnet import RegStage


class STCConnector(nn.Module):
    def __init__(self, config, depth, mlp_depth):
        # Temporal and spatial downsampling factor
        td, sd = config.td, config.sd
        # Input and output hidden dimension
        in_size, out_size = config.in_size, config.out_size
        # The first RegStage block
        self.s1 = RegStage(depth=depth, in_chs=in_size, out_chs=out_size)
        # Conv3D downsampler
        self.downsampler = nn.Conv3d(
            in_channels=out_size, out_channels=out_size, kernel_size=(td, sd, sd)
        )
        # The second RegStage block
        self.s2 = RegStage(depth=depth, in_chs=out_size, out_chs=out_size)
        self.proj = build_mlp(mlp_depth, out_size, out_size)

        def forward(self, x):
            x = self.s1(x)
            x = self.downsampler(x)
            x = self.s2(x)
            x = self.proj(x)
            return x

训练

Video-Language Training

预训练

Video-Language Training 预训练数据集

  • 数据集
    • 视频-文本: Panda-70M、VIDAL-10M、WebVid-10M、InternVid-10M
    • 图像-文本: CC-3M、DCI
  • 模型
    • 🔥 STC connector
    • ❄️ Visual Encoder、LLM
多任务微调

Video-Language Training 多任务微调数据集

  • 数据集
    • 视频-文本
      • 视频描述: VideoChat, 内部数据
      • 视频分类: Kinetics-710, SthSthv2
      • VQA: NExTQA, CLEVRER, EgoQA, Tgif, WebVidQA, RealworldQA, Hm3d
      • 指令微调: Valley, VideoChatGPT, VideoChat, VTimeLLM, VideoChat2
    • 图像-文本
      • 图像描述: ShareGPT4V
      • VQA: LLaVA
      • 指令微调: LLaVA
  • 模型
    • 🔥 LLM、STC connector
    • ❄️ Visual Encoder

Audio-Language Training

预训练
  • 数据集: WavCaps
  • 模型
    • 🔥 Audio Projection
    • ❄️ Audio Encoder、LLM
多任务微调
  • 数据集
    • 音频问答: ClothoAQA
    • 指令微调: WavCaps、AudioCaps、Clotho
    • 音乐字幕: MusicCaps
    • 音频分类: UrbanSound8k(城市环境)、ESC50、TUT2017、VocalSound(人声)
  • 模型
    • 🔥 Audio Projection、Audio Encoder
    • ❄️ LLM

Audio-Video Joint Trainng

  • 数据集:
    • 音频-视觉问答: AVQA、AVQA-music
    • 音频-视觉对话: AVSD
    • 音频-视觉分类: VGGSound
    • 指令微调: VideoInstruct100K、WebVid subset
    • 从视频中提取音频轨道并将其与视频片段对齐(截断或填充);对于缺少音频轨道的视频,用零填充波形。
  • 模型
    • 🔥 Visual Projection、Audio Projection、LLM
    • ❄️ Visual Encoder、Audio Encoder

模型评估

作者全面评估了VideoLLaMA 2,将其与其他前沿模型在多个视频和音频理解基准上进行比较。

评估包括定量指标和定性分析,突出了VideoLLaMA 2在处理复杂多模态数据方面的优势和进步。

视频理解

Main Results on Multiple-Choice Video QA (MC-VQA) and Video Captioning (VC)

多项选择VQA和视频描述任务上的测试结果。
作者未采用Gemini 1.5(Google,2024)的最新版本来在EgoSchema上显式调用CoT,这可能带来显著的性能提升。

Main Results on Open-Ended Video QA (OE-VQA) benchmarks

开放式视频问答任务上的测试结果。

音频理解

Comparison with existing LLM-based methods on open-ended AQA (Clotho-AQA) and multiple-choice AQA (TUT2017) benchmarks

与现有基于LLM的开放式AQA(Clotho-AQA)和多项选择AQA(TUT2017)基准的比较结果。

Comparison Results with existing LLM-based methods on Open-Ended AudioVideo QA (OE-AVQA) benchmarks

与现有基于LLM的方法在开放式音频-视频问答(OE-AVQA)基准上的比较结果。

总结

本文推出了VideoLLaMA 2系列,这是一套通用型视频大型语言模型,旨在推动视频语言建模领域的多模态研究。

通过精心设计的时空卷积(STC)连接器和联合训练的音频分支,VideoLLaMA 2在各种视频和音频相关任务中持续提升多模态理解能力。

它在多个基准测试中优于同尺寸的开源模型,并在多个方面达到与专有模型相当的性能水平,展示了在同步音频流中建模时间动态的出色能力。

此外,作为基础模型,VideoLLaMA 2可以进一步开发,以解决如长视频理解、视频智能体、自动驾驶、运动理解和机器人操作等各种更专业但更具挑战性的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小嗷犬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值