【大模型系列】Video-XL(2024.10)
- Paper:https://arxiv.org/pdf/2409.14485
- Github:https://github.com/VectorSpaceLab/Video-XL
- Huggingface:https://huggingface.co/sy1998/Video_XL
- Author:Yan Shu et al. 上交,北京智源人工智能研究院
核心1: 提出了一个Video-XL模型,可以有效地对小时级别的视频进行理解,在A100-80G GPU上可以处理2024帧,大海捞针任务(Needle-in-haystack)中取得100%的准确率;
核心2: 引入一个长视频数据集(2min~10min)VICO(Visual Clue Ordering)
文章目录
- 1 模型结构
- 1.1 输入的处理
- 1.2 Visual Context Latent Summarization
- 2 训练策略与数据
- 2.1 训练
- 2.2 VICO(Video Clue Order Dataset)
- 3 评测结果
1 模型结构
- Visual encoder:CLIP-ViT-L
- Projector:two-layer MLP
- LLM:Qwen2-7B
1.1 输入的处理
- 单图:分patch,每个patch分辨率为336x336(patch策略:grid=[h // 336, w// 336],最后再使用2x2 pooling减少token数量)
- 视频(N-frame)和多图(N-image):分辨率resize到336x336,直接编码成NXM tokens,M表示每张图的视觉token数量
- 视频抽帧:
- 短视频(≤128帧),按1fps抽帧
- 长视频(>128帧),均匀抽128帧
1.2 Visual Context Latent Summarization
给定一组视觉编码 X = { x 1 , x 2 , . . . , x n } X =\{x_1, x_2, ...,x_n\} X={x1,x2,...,xn},其中n表示token的数量,现在目标是将其压缩以提升效率和减少计算负担,文章中提到的策略如下:
-
引入特殊的token:VST(visual summarization token) <vs>,在LLM将视觉特征压缩到该token上;
-
首先将原始视觉编码切分成相同的数量w(默认1440)
[ x 1 , x 2 , . . . , x n ] ⟶ p a r t i t i o n [ X 1 , X 2 , . . . , X n / / w ] X i = [ x ( i − 1 ) w + 1 , x ( i − 1 ) w + 2 , . . . , x i w ] = [ x 1 i , x 2 i , . . . , X w i ] [x_1,x_2,...,x_n] \stackrel{partition}{\longrightarrow} [X_1, X_2, ..., X_{n // w}] \\ X_i = [x_{(i-1)w+1}, x_{(i-1)w+2}, ..., x_{iw}] = [x_1^i, x_2^i, ..., X_w^i] [x1,x2,...,xn]⟶partition[X1,X2,...,Xn//w]Xi=[x(i−1)w+1,x(i−1)w+2,...,xiw]=[x1i,x2i,...,Xwi] -
对于每个切片 X i X_i Xi,设置一个压缩比率 α i > 1 \alpha_i>1 αi>1(训练过程中随机从2,4,8,12,16中选择,推理时按需选择一个即可),这个压缩比率可以被切片长度w整除,表示每 α i \alpha_i αi个token被压缩到一个VST中,每因在此在该切片中要插入 k i = w / α i k_i = w / \alpha_i ki=w/αi VST:
X i ⟶ i n t e r l e a v e [ x 1 i , . . . , x α i i , < v s > 1 i , . . . , x w − α i + 1 i , . . . , x w i , < v s > k i i ] X_i \stackrel{interleave}{\longrightarrow} [x_1^i, ...,x_{\alpha_i}^i, <vs>_1^i, ..., x_{w-\alpha_i+1}^i, ..., x_w^i, <vs>_{k_i}^i] Xi⟶interleave[x1i,...,xαii,<vs>1i,...,xw−αi+1i,...,xwi,<vs>kii] -
LLM依次处理这些切片 X i X_i Xi,并在每层引入额外的映射层 ( W Q v , W K v , W V v ) (W_Q^v, W_K^v, W_V^v) (WQv,WKv,WVv)来处理<vr>标签
-
在切片 X i X_i Xi经过编码后,累加VSTs的编码,表示之前所有视觉的编码
-
在对切片 X i + 1 X_{i+1} Xi+1编码时,直接将切片 X i X_i Xi累加的VSTs的编码作为<vr>标签的编码,参与当前切片的运算
2 训练策略与数据
2.1 训练
- pre-training:模态对齐,优化projector层
- Laion-2M
- fine-tuning:全量微调
- single-image:Bunny-695k,Sharegpt-4o-57K
- multi-image:MMDU-5k
- videos:NExT-QA-32k,Sharegpt-4o-2k,CinePile-10k,11k in-house samples,VICO-10k
2.2 VICO(Video Clue Order Dataset)
- source:CinePile,Youtube
- 每个长视频被切分成14s的切片,对每个切片使用VILA-1.5生成详细的描述,并使用ChatGPT按时间顺序排列
3 评测结果
- 长视频评估:
- Video-MME(55.5/61.0)比Qwen2-vl-7b(63.3/69.0)略低
- MVBench(55.3)比Qwen2-vl-7b(67.0)略低