论文发布时间:2024.6.17
Abstract
- VideoLLaMA 2, a set of Video Large Language Models
- incorporates a tailor-made Spatial-Temporal Convolution (STC) connector
- integrate an Audio Branch into the model through joint training
- VideoLLaMA 2 exhibits reasonable improvements in audio-only and audio-video question-answering (AQA & OE-AVQA) benchmarks over existing models
Introduction
目标:
- 如何集成和解释视觉和听觉信号的复杂相互作用来增强视频语言理解。
动机:
- 相比于静态图片,视频融合了时间动态和同步的音频流,问题变得更加复杂。
- 挑战在于同时理解视觉的时间变化并且与同步音频输入相关联,目前理解音频与视觉数据的集成在当前模型汇总仍然不发达。
- 目前的vision-language connectors还不够合理,它们忽略了时间维度的聚合,并将时间建模的所有内容留给了语言解码器。
方法:
- 设计了专门的Spatial-Temporal Connector(STC)模块取更有效地捕获时间动态。
- 联合训练Audio Branch,增强了VideoLLaMA2的视频视觉集成能力。
Method
Architecture
模型集成了双分支框架
- Vision-Language Branch
- Audio-Language Branch
这两个分支独立运行,以模块化方式将预训练的视觉和音频encoders与指令微调的LLMs进行连接。
Vision-Language Branch
- 选用CLIP作为backbone,图像编码器与任意帧采样策略相兼容,并且支持更灵活的frame-to-video feature aggregation方案。
- 采用一致帧采样方法,从每个视频提取固定数量的帧。每个帧都经过填充并调整为标准336*336的尺寸,然后利用提出的STC Connector去学习时空表示。
Audio-Language Branch
- 音频信号通过预处理步骤转换为有128个频率段的fbank频谱图。
- 集成了BEATs作为音频编码器,将特征编码后通过具有两个MLP块进行处理,以与LLMs的维度保持一致。
- BEAT捕获时间动态的能力与视觉分支中的STC Connector相一致,可以保证视听功能的无缝集成。
Large Language Model Backbone
- 与前身一样,使用instruction-following large language models (LLMs) 作为语言编码器。
- 没有广泛搜索最佳的LLMs,而是在所有实验中使用Mistral-Instruct和Mixtral-Instruct模型。
Sptial-Temporal Convolution Connector
三个原则
- 保持输出视觉token中的时空顺序
- 减少时空token的数量
- 减轻时空下采样过程中的信息丢失
策略
- 避免使用重采样结构,因为其无法保证时空顺序的保留。自回归模型(LLM backbone)高度依赖训练和推理之间的一致标记顺序,因此在构建connector时只考虑卷积和池化操作
- 插入3D下采样算子压缩时空token
- 为了补充时空下采样损失,在时空下采样之前和之后插入RegStage(强卷积块)
实验
- 3D卷积和STC连接器结合RegStage块效果最好。
- 所有3D下采样设计在Egoschema上的表现都比2D更好,表明帧级特征的早期融合有利于长视频理解。
STC代码
import torch.nn as nn
from timm.models.regnet import RegStage
class STCConnector(nn.Module):
def __init__(self, config, depth, mlp_depth):
# 时空下采样因子,td表示时间维度,sd表示空间维度
td, sd = config.td, config.sd
# 输入和输出隐藏层大小
in_size, out_size = config.in_size, config.out_size
# 第一个RegStage块
self.sl = RegStage(depth=depth, in_chs=in_size, out_chs=out_size)
# 3D卷积下采样
self.downsampler = nn.Conv3d(in_channels=out_size,
out_channels=out_size,
kernel_size=(td, sd, sd))
# 第二个RegStage块
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.sl(x)
x = self.downsampler(x)
x = self.s2(x)
x = self.proj(x)
return x
Training
Video-Language Training
Pre-training
利用大规模,弱标记的网络爬虫图文和视频文本对数据集
视觉编码器和LLM部分被冻结,仅优化STC Connector
视频帧被均匀采样并调整为336*336像素
训练目标是最小化文本tokens的交叉熵损失
Multi-task Fine-tuning
- 同时利用视频文本和图像文本对数据合并高质量细粒度的多模态注释
- 针对四项任务微调
- video captioning:VideoChat和内部收集数据
- video classification and VQA:Kinetics-710、 SthSthv2等混合
- enhance instruction-following capabilities:多个VLM的数据,例如Vally,再混合来自ShareGPT4V的图像字幕数据和来自LLaVA的图像VQA和指令跟踪数据
- 视觉编码器被冻结,仅优化LLMs和STC Connecter
- 训练目标与预训练阶段一致
Audio-Language Training
Pre-training
- 利用WavCaps数据集来关注模型的基本音频理解方面。每个样本都进行了精心注释,旨在训练模型以根据音频输入生成描述性文本。
- 音频编码器和大语言模型(LLM)被冻结,仅优化音频projector。
- 训练目标是最小化the next token prediction loss在文本响应中,增强模型理解音频数据并映射到文本表示的能力。
Multi-task Fine-tuning
多任务微调
question answering based on audio cues:ClothoAQA
instruction tuning phase: WavCaps,AudioCaps,Clotho
music-based captioning:MusicCaps
sound event classification:VGGSound等
LLM保持冻结,优化音频编码器和音频projector
保持一致的训练目标,最大限度减少预训练阶段的文本标签交叉熵损失
Audio-Video Joint Trainng
- AVQA,AVQA-music等多个数据集
- 训练步骤
- 从视频中提取音轨并进行剪切以对齐视频片段
- 这些音频剪辑被截断或填充到与audio-language traning stage相同的持续时间
- 对于缺少音轨的视频,利用零填充波形保证数据样本一致性
- 冻结音频和视频编码器的时候,优化音频和视频projecter,不冻结LLM
- 训练目标与指令微调阶段保持一致
Implementation
- built upon LLaVA 1.5 library (https://github.com/haotian-liu/LLaVA)
- 视频编码器:clip-large-336 (https://huggingface.co/openai/clip-vit-large-patch14-336)
- 音频编码器:Fine-tuned BEATs_iter3+(AS2M)(cpt2)(https://1drv.ms/u/s!AqeByhGUtINrgcpj8ujXH1YUtxooEg?e=E9Ncea)
- 文本编码器
- VideoLLaMA 2 (7B):Mistral-7B-Instruct
- VideoLLaMA 2 (8x7B) :Mixtral-8x7B-Instruct
- 预训练阶段和微调期间不进行超参数调整
- 预训练
- global batch size:1024
- the learning rate:1e-3
- 微调
- global batch size:2048
- the learning rate:2e-5
- 预训练1epoch,微调3epoch
Model Evaluation
Video Understanding
- Evaluation Benchmarks
- MC-VQA
- OE-VQA
- VC
- Baselines
- Proprietary Models:Gemini 1.0 Series等
- Open-Source Models:VistaLLaMA等
Audio Understanding
Evaluation Benchmarks
AQA
OE-AVQA
Baselines
Audio Understanding:Qwen-Audio
Audio-Visual Understanding: PandaGPT等
Cases
现存的VLM通常由两方面组成
预训练的视觉编码器或者DINO,用于将视频帧编码为低维视觉特征,搭配vision-language adapter 用于聚合这些视频特征并转换到LLMs可以理解的表示
指令微调的语言编码器或者Mistral-Instruct,用于基于指令和用户上传的视频生成文本回答
这篇paper主要探究的vision-language connectors的更好设计
目前的vision-language adapters for Image-LLMs有Cross-Attention、Q-Former、Linear Pro-
jection和Dynamic Visual Tokenizer等。它们结果不错,但这些设计对于VLM仍然不够,因为它们完全忽略了时间聚合,并将时间建模的内容留给了语言解码器本文利用STC Connector引入LLMs,同时保持合理的token数量。先利用3D卷积进行时空聚合,并且为了保留局部视觉模式,遵循Cha等人的方法,在3D卷积之前和之后合并RegStage块
在扩展VLM的核心功能上,最新的进展集中在集成音频流。
- PandaGPT和Video-LLaMA等模型利用ImageBind等预训练系统进行模态对齐
- MacawLLM使用不同的教学集优化视觉和音频数据的单独分支。
- X-InstructBLIP使用冻结的LLM在单个框架内集成多种模态,并使用特定模态的Q-Formers作为适配器来桥接各种编码器。
- OneLLM引入了通用编码器和投影模块,旨在将各种模态与语言数据对齐。
- CREMA采用高效和模块化方法,为每种模态利用参数高效的适配器,以增强将新模态合并入现有框架的灵活性和易用性。
- AV-LLM和AVicuna等其他模型利用集成的视听训练来进一步完善对复杂多模态内容的理解。
Conclusion
- 推出了VideoLLaMA2系列,是一组通用视频大语言模型。
- 精心设计了STC Connecter和联合训练的音频分支,提高了模型面向视频和音频的多模态推理。
- 在多个基准测试中达到了与专有模型相当的水平。