TDC: Multimodal Long Video Modeling Based on Temporal Dynamic Context
Authors: Haoran Hao, Jiaming Han, Yiyuan Zhang, Xiangyu Yue Affiliations: MMLab, The Chinese University of Hong Kong, Nanjing University GitHub: Hoar012/TDC-Video Year: 2025
1. Motivation (研究动机)
1.1 问题背景
现有视频理解模型面临两大核心挑战:
- 长视频token爆炸问题:LLM上下文长度有限,密集采帧导致token数量过多;稀疏采帧则丢失关键信息
- 多模态融合不足:大多数视频LLM仅处理视觉+文本,忽略音频;少数尝试加入音频的方法(如VideoLLaMA)采用简单拼接,各模态独立编码后直接串联,导致模态间缺乏深度交互
1.2 核心贡献
- Temporal Dynamic Context (TDC):提出基于时间动态上下文的视频表示方法,将静态视觉特征与动态多模态上下文统一在同一表示中,实现高效的视觉-音频联合压缩
- Long Video Chain-of-Thought (LVCoT):免训练的长视频推理策略,将超长视频分段逐步推理后综合回答
- 多阶段训练策略:三阶段渐进式训练,从视觉-语言对齐到视频指令微调再到音视频联合微调
2. Idea (核心思想)
2.1 整体思路
Figure 1 解读:对比了现有方法与TDC方法的区别。(a) 现有方法将图像编码器和音频编码器独立处理,然后简单拼接各模态token送入MLLM,这种方式在处理长视频时导致模态间缺乏关联性且token数量过多。(b) TDC方法则将视频按场景分段,每段保留第一帧的完整静态特征(Visual Token + Audio Token),后续帧通过Temporal Compressor压缩为少量Multimodal Context Token,实现了视觉-音频的统一压缩表示,大幅减少token数量的同时保留了关键信息。
Figure 2 解读:TDC多模态视频编码器的详细架构。视频按1fps采帧,每帧同时通过Visual Encoder(DINOv2 + SigLIP,得到144个token)和Audio Encoder(BEATs,约50个token/秒)提取特征。在每个滑动窗口(场景段)内,第一帧被选为静态帧,保留全部视觉和音频token。后续帧的特征通过Q-Former压缩:首先对静态帧特征做Average Pooling得到K个Query token,然后Q-Former以这些Query为输入,对后续帧的视觉+音频token做交叉注意力,输出K个压缩的Multimodal Video Context token。最终表示由所有静态帧token和压缩后的动态上下文token拼接而成,中间用<Sep>分隔。
2.2 核心设计点
- 静态 + 动态双表示:保留关键帧完整特征,同时压缩后续帧的动态变化
- 语义场景分割:用帧间语义一致性替代固定切片,减少错误跨场景关联
- 文本引导压缩:让压缩过程感知问题,从而更聚焦于相关信息
- 免训练长视频推理:LVCoT把长视频拆分为可管理片段,再汇总推理
3. Method (方法)
3.1 视频场景分割
不同于现有方法将视频均匀切分为固定时长片段,TDC基于帧间语义一致性进行自适应场景分割:
- 使用DINOv2提取每帧的高维embedding
- 计算相邻帧的余弦相似度
- 选取相似度最低的 个点作为分割边界,将视频切分为 个语义一致的场景
默认最大场景数 。
3.2 时间动态上下文编码
静态特征编码
对每个场景段,保留第一帧的完整特征作为静态表示。每秒提取一帧,使用视觉编码器和音频编码器分别处理:
- 视觉:DINOv2 + SigLIP 144个聚合token/帧
- 音频:BEATs(16kHz重采样) 约50个token/秒
动态上下文压缩
对场景内除第一帧外的后续帧,通过Q-Former进行压缩:
Step 1: 从静态帧特征生成Query token
其中 为query token数量, 为特征维度。使用Average Pooling而非可学习query,因为实验表明AvgPool能更好地表示静态参考帧并提取动态变化。
Step 2: Q-Former交叉注意力压缩(不含文本指令)
其中 表示token拼接, 和 分别为第 帧的视觉和音频token。
Step 3: 加入文本指令引导压缩
其中 为用户指令文本的token,引导Q-Former关注与问题相关的信息。
Step 4: 拼接最终TDC表示
静态帧保留完整的视觉+音频token,后续帧压缩为K个多模态上下文token。使用可学习的<Sep> token分隔静态token和动态上下文token。
3.3 Long Video Chain-of-Thought (LVCoT)
针对超长视频(如电影),提出免训练的分段推理策略:
def lvcot(video, question: str, mllm, M: int = 3) -> str:
"""Long Video Chain-of-Thought (LVCoT): training-free segmented reasoning."""
# Step 1: Split video into M equal temporal segments
segments = split_temporal(video, M) # V = {V_1, V_2, ..., V_M}
# Step 2: Generate per-segment summaries via MLLM
summaries = []
for i, segment in enumerate(segments):
encoded = encode_video(segment)
prompt = f"Given the question: '{question}', summarize the relevant information in this segment."
summary = mllm.generate(encoded, prompt)
summaries.append(summary)
# Step 3: Concatenate summaries with temporal context
timestamps = get_segment_timestamps(video, M)
context = "; ".join(
f"From {timestamps[i]}s to {timestamps[i+1]}s: {s}"
for i, s in enumerate(summaries)
)
# Step 4: Final answer generation with full context
answer = mllm.generate(context, question)
return answer关键特点:
- 免训练,可直接应用于任何MLLM
- 中间摘要作为思维链的一部分,包含时间信息
- 视频越长效果越明显(在MLVU和VideoMME Long上提升显著)
4. Experimental Setup (实验设置)
4.1 多阶段训练策略
| 阶段 | 目标 | 数据量 | 数据来源 | 训练模式 | 学习率 |
|---|---|---|---|---|---|
| Stage 1: 视觉-语言对齐 | 图文对齐预训练 | 3.2M | LLaVA-OneVision | Full | 1e-5 |
| Stage 2: 视频指令微调 | 视频理解能力 | Qwen2-7B: 2M / LLaMA-3B: 540K | LLaVA-Video, VideoChat2-IT, MovieChat等 | Full | 1e-5 |
| Stage 3: 音视频联合微调 | 音频-视觉联合理解 | Qwen2-7B: 300K / LLaMA-3B: 120K | Music-AVQA, AVQA, AVSD, LongVALE, AVInstruct | LoRA | 2e-5 |
训练细节:
- 最大序列长度:8192
- 优化器:AdamW
- 学习率调度:Cosine Decay,3% warmup
- 视觉/音频编码器冻结,仅训练Temporal Compressor和LLM
- Stage 3使用LoRA降低GPU显存消耗
- 每阶段训练1个epoch
- Q-Former使用预训练BERT初始化
4.2 代码结构与复现
| 目录/文件 | 功能 | 对应论文部分 |
|---|---|---|
tdc/ | 核心模型实现 | Section 3 (Methodology) |
tdc/ (Q-Former部分) | Temporal Dynamic Context压缩器 | Section 3.2 (TDC编码) |
scripts/ | 三阶段训练脚本 | Section 3.3 (训练策略) |
eval/ | 各benchmark评估脚本 | Section 4 (实验) |
checkpoints/audio_encoder/ | BEATs预训练权重 | Section 3.1 (音频编码) |
main.py | 推理入口 | 推理/Demo |
examples/ | 示例文件 | - |
- Backbone LLM: Qwen2-7B / LLaMA3.2-3B
- 视觉编码器: DINOv2 + SigLIP (冻结),144 token/帧
- 音频编码器: BEATs (冻结),16kHz,~50 token/秒
- Q-Former: 基于BERT初始化,16个query token
- 可用模型: TDC-Qwen2-7B, TDC-Llama3_2-3B (HuggingFace)
5. Experimental Results (实验结果)
5.1 通用视频理解(7B模型)
| 模型 | 大小 | 帧 | 帧 | MVBench | PerceptionTest | EgoSchema | MLVU | VideoMME |
|---|---|---|---|---|---|---|---|---|
| GPT4-o | - | 1fps | - | 64.6 | - | 72.2 | 64.6 | 71.9 |
| LLaVA-OneVision | 7B | 32 | 196 | 56.7 | 57.1 | 60.1 | 64.7 | 58.2 |
| InternVL2.5 | 7B | 12 | 256 | 72.0 | 68.2 | 51.5 | 68.9 | 64.2 |
| LongVU | 7B | 1fps | 144/64 | 66.9 | - | 67.6 | 65.4 | - |
| MAmmoTH-VL | 8B | 5 | 729 | 59.1 | 59.3 | 58.5 | 64.7 | 58.8 |
| VideoLLaMA2 (7B) | 7B | 16 | 72 | 54.6 | 51.4 | 51.7 | 48.5 | 47.9 |
| TDC (Ours) | 7B | 1fps | 16 | 68.3 | 67.5 | 65.7 | 64.1 | 57.8 |
关键发现:
- TDC在音视频MLLM中全面最优,在MLVU上超越VideoLLaMA2达 15.6%,VideoMME超出 9.9%
- 每帧仅16个压缩token(后续帧),远低于其他方法的72-256个token
- 对比纯视觉MLLM也具有竞争力,且额外具备音频理解能力
5.2 小模型结果(3B)
| 模型 | LLM | 大小 | 帧 | MVBench | EgoSchema | MLVU | VideoMME |
|---|---|---|---|---|---|---|---|
| LongVU | LLaMA3.2 | 3B | 1fps | 60.9 | 59.1 | 51.5 | 55.9 |
| TDC (Ours) | LLaMA3.2 | 3B | 1fps | 62.7 | 61.0 | 58.9 | 59.5 |
- 在3B-4B参数量级中全面最优
- 在MLVU上超越LongVU达 7.4%
5.3 音视频联合理解
| 模型 | 大小 | 帧 | Token | AVSD | Music-AVQA |
|---|---|---|---|---|---|
| VideoLLaMA2 | 7B | 16 | 72 | 57.2 | 79.2 |
| VideoLLaMA2.1 | 7B | 16 | 72 | 57.2 | 80.9 |
| LongVALE | 7B | 100 | 256 | 54.8 | 49.4 |
| TDC (Ours) | 7B | 1fps | 16 | 57.6 | 78.7 |
- AVSD最优(57.6),Music-AVQA与VideoLLaMA2系列接近
5.4 VideoMME详细结果
| 模型 | 大小 | 帧 | S(短) | M(中) | L(长) | Overall |
|---|---|---|---|---|---|---|
| LLaVA-OneVision | 7B | 32 | 69.1 | 53.3 | 46.7 | 58.2 |
| LongVU | 7B | 1fps | 64.7 | 58.2 | 59.5 | 60.9 |
| TDC (Ours) | 7B | 1fps | 70.0 | 66.2 | 61.3 | 65.9 |
- 短/中/长视频全面最优,证明了方法在不同时长视频上的泛化性
5.5 消融实验
| 消融项 | 设置 | MVBench | MLVU | VideoMME (Overall/Long) |
|---|---|---|---|---|
| (a) 场景分段数 | ||||
| 1 (无分段) | 53.5 (-9.2) | 58.7 (+0.9) | 53.2 (+0.5) | |
| 24 (默认) | 62.7 | 59.6 | 52.7 | |
| 48 | 62.2 (-0.5) | 58.5 (-1.1) | 51.0 (-1.7) | |
| (b) Query类型 | ||||
| Learned Query | 61.7 (-1.0) | 59.5 (+0.1) | 52.1 (-0.6) | |
| AvgPooling (默认) | 62.7 | 59.6 | 52.7 | |
| (c) 上下文token数 | ||||
| 32 | 61.7 (-1.0) | 58.4 (-1.2) | 52.1 (-0.6) | |
| 16 (默认) | 62.7 | 59.6 | 52.7 | |
| (d) 文本指令 | ||||
| 无文本输入 | 62.3 (-0.4) | 58.0 (-1.6) | 51.5 (-1.2) | |
| 有文本输入 (默认) | 62.7 | 59.6 | 52.7 | |
| (e) LVCoT效果 | ||||
| 3B 无LVCoT | 62.7 | 59.6 | 52.7 | |
| 3B + LVCoT | 62.7 | 58.9 (+0.6*) | 52.7 | |
| 7B 无LVCoT | 68.3 | 65.9 | 61.3 | |
| 7B + LVCoT | 68.3 | 66.2 (+0.3) | 61.8 (+0.5) |
消融结论:
- 场景分段至关重要:无分段时MVBench下降9.2%,因为非连续帧间建立了错误关联
- AvgPooling优于Learned Query:能更好表示参考帧并提取动态变化,且无额外计算开销
- 16个context token为最优平衡点:增加到32反而下降,因为token数增加限制了可处理帧数
- 文本指令对长视频帮助更大(MLVU +1.6%, VideoMME +1.2%)
- LVCoT在长视频上效果更明显,7B模型上VideoMME Long +0.5%
6. 个人思考与总结
6.1 创新点评价
优势:
- 统一多模态压缩:将视觉和音频token通过Q-Former联合压缩而非简单拼接,是该工作最核心的贡献。每帧仅16个token的压缩率非常高效
- 语义场景分割:基于DINOv2帧间相似度的自适应分割比固定切分更合理,保证了场景内语义一致性
- 静态+动态双表示:保留关键帧完整特征+压缩后续帧动态变化的设计很直觉,类似人类”先看全局再关注变化”的认知模式
- 文本引导压缩:将用户指令注入Q-Former,使压缩过程具有问题感知能力
局限性:
- LVCoT提升有限:仅+0.3~0.6%的提升,作者也承认这是因为模型未针对该任务训练。这说明免训练的CoT策略在视频理解上效果有限
- 计算开销:LVCoT需要多次处理视频段,引入额外推理开销但提升微弱
- 对比不够公平:TDC用1fps密集采帧+16 token压缩,vs其他方法的稀疏采帧+更多token,total token数可能相近但方式不同,很难说哪种更优