Chain-of-Frames: Advancing Video Understanding in Multimodal LLMs via Frame-Aware Reasoning¶
会议: CVPR 2026
论文: CVF Open Access
代码: 未公开(⚠️ 论文未给出仓库链接)
领域: 多模态VLM / 视频理解
关键词: Chain-of-Frames, 视频推理, 时序定位, 合成数据, InternVL
一句话总结¶
本文提出 Chain-of-Frames(CoF),让视频 LLM 在单阶段推理里直接用「Frame-k」这样的帧编号去引用关键帧、把时序定位写进 CoT 文本本身,再用一条低成本数据管线造出 16.4 万条带帧引用的训练样本微调 InternVL,在 5 个视频理解 benchmark 上平均涨 3.8%~5.1%,且发现纯合成数据就能带来显著提升。
研究背景与动机¶
领域现状:把 chain-of-thought(CoT)从纯文本 LLM 扩展到视频理解是近期热点——模型先生成一段对视频内容的推理,再给答案。视频比单图更难,因为模型要同时理解文本问题、帧与帧之间的时序/因果关系,并对整段视频做整体推理。
现有痛点:现有的视频 CoT 方法分两类,各有硬伤。一类是多阶段流水线(VideoEspresso、Video-of-Thought、M-LLM 等):先用辅助网络做关键帧检索、构建时空场景图、生成 caption,再喂给推理模型——推理时算力开销大、专门化严重、且因为只把子集帧送进 LLM,丢掉了视频的完整时序上下文。另一类是单阶段方法(VideoCoT):直接生成推理文本,但训练数据由「视频描述 + LLM 改写 + 人工校正」拼出来,描述本身没有帧级时序对齐,导致推理 trace 出现时序错乱,还得拉人进 loop 修,结果数据只能造到 1.1 万条、规模上不去。
核心矛盾:要么数据生成贵且缺乏显式时序定位,要么推理流程复杂、依赖辅助模型还牺牲了上下文完整性。更根本的是,现有视频 LLM 的推理文本没有把具体视频片段和推理步骤显式连起来——推理「悬空」,既不可解释也不易学。
本文目标:做出第一个「单阶段 + 显式引用关键帧」的视频 LLM 推理范式,既保留全帧上下文,又把时序定位直接落到推理文本里,同时让训练数据能低成本规模化。
切入角度:作者观察到 InternVL 这类模型本来就把视频编成「Frame-1 [图] Frame-2 [图]…」的图文交错格式——文本标识符天然挂在每帧上。那么推理时直接复用这些帧编号当「指针」,模型就能在一句话里说清"在 Frame 7 里发生了什么",无需任何外挂检索模块。
核心 idea:用「在推理文本里显式写出 Frame-k 帧编号」这种最朴素的方式,把时序定位嵌进单阶段 CoT,替代昂贵的多阶段关键帧检索流水线。
方法详解¶
整体框架¶
CoF 的核心主张是:不改架构、不加辅助模型,只靠「数据 + 微调」就把帧感知推理教给现成的视频 LLM。整条工作分两半——左半边是一条两步数据管线,把真实视频和合成视频都转成「问题 / 带帧引用的推理 trace / 答案」三元组,攒成 COF-DATA(16.4 万条);右半边是拿这些数据去微调 InternVL2.5-4B、InternVL3-8B,得到 CoF 模型,推理时单阶段直接输出含「Frame-k」引用的 CoT 再给答案。
推理时的格式长这样:模型读到「Frame-1 [图] … Frame-30 [图] + 问题」,输出类似 "The video starts with two people on a rocky cliff (Frame 5)…the next scene shows a rescue (Frame 6)…" 的推理,最后落到答案。帧编号用帧在视频中的位置序号(Frame 1、Frame 2…)而非时间戳——好处是它与视频时长、采样频率无关,跨不同视频数据更一致、也更易学。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["真实视频<br/>VideoEspresso"] --> C["帧编号对齐<br/>降采样到 1FPS + 重标定"]
B["合成视频<br/>CLEVRER"] --> C
C -->|"真实视频走 Llama-3.1 改写"| D["Frame-aware CoF trace 生成<br/>问题 + 帧引用推理 + 答案"]
C -->|"合成视频走模板填空"| D
D --> E["数据过滤<br/>去问题含帧引用 + 降权无引用样本"]
E --> F["COF-DATA 16.4万条"]
F --> G["微调视频 LLM<br/>InternVL2.5-4B 全量 / InternVL3-8B LoRA"]
G --> H["单阶段 CoF 推理输出"]
关键设计¶
1. Chain-of-Frames:把帧编号当指针写进单阶段 CoT
针对「推理悬空、时序定位靠外挂检索」这个痛点,CoF 的做法极其朴素:在推理文本里直接引用帧的位置序号。设视频被均匀采样为 \(N\) 帧 \(\{f_1,\dots,f_N\}\)(实验里 \(N=30\)),每帧挂一个文本标识符 Frame-\(k\);推理 trace 是一段自然语言,其中显式出现 Frame-\(k\) 来指认"回答这个问题所需的关键帧"。这样时序定位不是靠一个检索网络选出 top-\(k\) 帧再处理,而是模型在生成推理时隐式地完成了帧检索——把哪几帧相关写出来即可。
之所以有效,关键在于和旧法的三点区别:(a)全部 30 帧都进 LLM,不丢上下文,而多阶段法只送子集帧;(b)推理纯自然语言,不产生 bounding box / 场景图等复杂中间格式,是标准 NLP CoT 的自然延伸,推理只需一次前向、延迟低;(c)用位置序号而非时间戳,对采样频率鲁棒。一个直观例子:问"物体出现顺序",模型直接输出 "purple cylinder appears in Frame 1, green cylinder in Frame 4, cyan cube in Frame 8…",推理步骤和具体帧一一咬合。
2. 两步数据管线 + 真/合成双源,把带帧引用的 trace 低成本造出来
CoF 是「数据驱动」的范式,所以瓶颈在数据怎么造得既准又便宜。痛点是 VideoCoT 那套靠人工 + LLM 反复修、贵且只有 1.1 万条。本文设计了两步管线(见框架图左侧):
Step 1 帧编号对齐——原始标注带帧 ID,但受视频 LLM 上下文长度限制,要先降采样。做法是把每帧映射到时间戳,按模型允许的最大时长(实验里 30 秒)裁剪视频、保证含 caption 的帧都在区间内,再重新标定帧 ID 以反映其在裁剪后视频里的新位置。这一步保住了「帧—caption」的对齐,是后面 trace 时序正确的前提。
Step 2 生成 CoF 三元组——分两条支线: - 真实视频(COF-DATA_real):取 VideoEspresso 训练集,它对每个视频的关键帧都带 caption;对齐帧 ID 后,把这些帧级时序对齐的标注作为输入,用 Llama-3.1-8B-Instruct 提示生成「问题 + 带 Frame-k 引用的推理 + 答案」。因为输入本身帧级对齐,产出的 trace 时序就准。一个视频常能生成多个覆盖不同片段的问题。 - 合成视频(COF-DATA_synth):取 CLEVRER,它每帧每个物体都标注了固定属性(形状/材质/颜色)和情境属性(速度/位置)。这些结构化标注足以直接用人工模板填空生成「物体计数 / 出现顺序 / 相对距离」三类定量问题及其 CoF——完全不用 LLM,生成成本近乎为零、可任意 scale。这正是本文规模能冲到 16.4 万条的原因。
3. 数据过滤策略:让训练分布匹配测试时的推理需求
直接拿生成的样本训会有两个偏差,作者做了针对性过滤。其一,问题里若出现帧引用就删掉——因为测试时问题不会告诉你帧号,留着会造成训练/测试不一致。其二,降低"推理 trace 里完全没有帧引用"样本的比例,给更复杂的(含帧引用的)推理更高权重;但不是全删——评测里确实存在不需要 CoF 式推理的问题,保留一部分无引用样本可以避免模型在不必要时硬凑帧引用。最终 16.4 万条里,帧引用数分布为:0 帧 22.5%、1 帧 32.0%、2 帧 25.3%、3 帧 13.8%、>3 帧 6.4%。这种「带刻度的混合」让模型学会按需使用帧引用——推理时 \(P(\#\text{Frames}>0)=76.9\%\),说明模型确实学会了选择性引用而非一刀切。
损失函数 / 训练策略¶
标准监督微调(SFT)。InternVL2.5-4B 全量微调 LLM 与投影模块、冻结视觉编码器;InternVL3-8B 用 LoRA 微调以省显存。推理时每段视频均匀采样 30 帧保证时序覆盖一致(但模型不限于 30 秒视频,可处理任意时长)。Phi-3.5-Vision 作为第三个 backbone 验证泛化性(结果在附录)。
实验关键数据¶
主实验¶
5 个 benchmark(VSI-Bench 定量推理 / Video-MME 长视频 / MVBench 20 任务 / VidHal、EventHallusion 幻觉)上对比 SOTA 视频 LLM,指标为 accuracy(%):
| 模型 | VSI-Bench | Video-MME | MVBench | VidHal | EventHall | 平均 |
|---|---|---|---|---|---|---|
| GPT-4o(闭源) | 34.0 | 71.9 | - | 77.2 | 91.9 | - |
| Gemini-1.5-Pro(闭源) | 48.8 | 75.0 | - | 67.1 | 80.4 | - |
| Qwen2-VL-72B | 37.6 | 71.2 | 73.6 | 76.2 | 54.7 | 62.7 |
| InternVL2.5-4B(基线) | 33.5 | 54.7 | 71.5 | 77.0 | 67.4 | 60.8 |
| CoF-InternVL2.5-4B | 36.9 | 59.7 | 76.1 | 79.2 | 71.2 | 64.6 (+3.8) |
| InternVL3-8B(基线) | 41.0 | 66.5 | 74.4 | 80.9 | 72.1 | 67.0 |
| CoF-InternVL3-8B | 51.3 | 73.7 | 77.1 | 79.5 | 78.7 | 72.1 (+5.1) |
CoF-InternVL3-8B 仅 8B 却在 VSI-Bench、MVBench 上拿到全场最佳(含闭源),Video-MME、VidHal 第二,EventHallusion 开源最佳;更大模型(8B 涨 5.1% > 4B 涨 3.8%)增益更明显,暗示越强的 LLM 越能吃到 CoF 红利。
与多阶段视频 CoT 方法对比(这些模型未开源,只能用其报告值在共享 benchmark 上比):
| Backbone | 方法 | Video-MME | NExT-QA |
|---|---|---|---|
| Qwen2-VL-7B | M-LLM | 58.7 (+0.6) | 78.4 (+0.8) |
| Video-LLaVA-7B | Video-of-Thought | - | 76.0 (+9.7) |
| InternVL2.5-4B | SFT with CoF (ours) | 59.7 (+4.8) | 79.6 (+4.3) |
| InternVL3-8B | SFT with CoF (ours) | 73.7 (+7.8) | 87.3 (+4.9) |
CoF 在更少参数下仍超过这些多阶段检索方法;相对 M-LLM,CoF 在 NExT-QA 上的提升(+4.9% vs +0.8%)显著更大,且是从更强基线出发的。
消融实验¶
CoF vs 其他 CoT 变体(均基于 InternVL2.5-4B,验证「帧引用」本身是不是关键):
| 配置 | VSI-Bench | Video-MME | MVBench | VidHal | EventHall | 说明 |
|---|---|---|---|---|---|---|
| Original | 31.8 | 54.9 | 70.8 | 74.0 | 62.5 | 默认提示 |
| + CoT Prompting | 33.5 | 54.7 | 71.5 | 77.0 | 67.4 | 仅加推理提示 |
| + SFT with QA only | 31.8 | 54.5 | 73.4 | 64.1 | 57.7 | 只用 QA 无推理 |
| + SFT with CoT | 34.3 | 58.6 | 73.7 | 77.9 | 53.1 | 有推理但抹掉帧引用 |
| + SFT with CoF (ours) | 36.9 | 59.7 | 76.1 | 79.2 | 71.2 | 完整方法 |
把推理 trace 里的「In Frame 1…」替换成泛化的「In the video…」后(SFT with CoT),多数 benchmark 仍提升但 EventHallusion 暴跌到 53.1;加回帧引用(CoF)后所有 benchmark 都达到最佳,相对原始模型提升 4.8%~8.7%。显式帧引用就是关键变量。
合成数据的影响(等量 164k,分别只用 real / 只用 synth / 混合):
| 训练数据 | VSI-Bench | Video-MME | MVBench | VidHal | EventHall |
|---|---|---|---|---|---|
| CoF-DATA-real | 35.3 | 59.0 | 74.8 | 73.2 | 73.6 |
| CoF-DATA-synth | 31.3 | 59.0 | 73.4 | 77.2 | 65.3 |
| CoF-DATA (combined) | 36.9 | 59.7 | 76.1 | 79.2 | 71.2 |
关键发现¶
- 纯合成数据反而常优于真实数据:尽管 CLEVRER 合成帧与真实 benchmark 存在巨大分布差,只用合成数据训出的模型在多数 benchmark 上反超只用真实数据的版本——模型从合成样本里学到了「物体计数、出现顺序」这类任务本身并迁移到真实场景。由于合成数据零成本可规模化,这是个很有价值的可扩展策略。
- 混合最优、但靠多样性:combined 在除 EventHallusion 外所有 benchmark 上都最好,说明推理 trace 的多样性比单一数据源更重要。
- 帧引用是因果变量:去掉帧引用的 SFT-CoT 在 EventHallusion 上崩盘,加回后恢复并最佳,定位到「显式时序 grounding」是性能来源。
- 模型按需引用帧:推理时 76.9% 的答案含至少一个帧引用,且不同任务引用数分布不同——模型学会了选择性使用而非机械套用。
亮点与洞察¶
- "用文本指针代替检索模块"这一刀切得很漂亮:把多阶段关键帧检索这套重型流水线,降维成「在 CoT 里多写几个 Frame-k」,既保住全帧上下文又零额外推理开销,是把 NLP CoT 思想干净迁移到视频的范例。
- 合成数据 OOD 仍涨点,是最"啊哈"的发现:CLEVRER 的简单 3D 物体和真实视频天差地别,却能教会模型计数/排序并迁移——提示「定量时序推理」这类能力可以用便宜的程序化数据低成本灌注。
- 巧用了 backbone 的既有格式:InternVL 本来就把帧编成「Frame-k [图]」交错格式,CoF 等于复用了这套现成的「图—文本标识符」绑定,几乎没有额外学习负担,这也是它特别适配 InternVL 的原因。
- 可迁移的 trick:用「位置序号而非时间戳」当时序指针,对采样率鲁棒——任何需要在长序列里引用特定元素的任务(多图问答、文档页引用、长音频片段定位)都能借鉴。
局限与展望¶
- 作者承认:CoF 训练数据适配「固定 FPS」的视频 LLM——要保证推理里引用的帧索引能和送进 LLM 的帧对齐;如何适配非固定 FPS / 动态采样的模型是开放问题。
- 方法强绑定 InternVL 的交错格式:论文也说 CoF「particularly well-suited」于 InternVL,Phi-3.5-Vision 的结果被放进附录。对那些不把帧编号显式写进输入的视频 LLM,帧引用是否还学得动、收益多大,正文没充分回答。⚠️
- benchmark 重叠的诚实 caveat:作者明确指出 MVBench 有 5/20 任务部分基于 CLEVRER 测试集、VidHal 含 MVBench 视频,所以不把结果叫「zero-shot」——但这也意味着合成数据的增益里可能有一部分来自分布更接近,读者横向比较时要留意。
- 改进思路:CoF 目前只引用「单帧」,对需要跨多帧连续动作(如细粒度动作时序)的问题,引用「帧区间 Frame a–b」或带方向的帧关系或许更贴合;扩大数据规模与多样性、增大模型规模是作者点名的未来方向。
相关工作与启发¶
- vs VideoCoT(单阶段):VideoCoT 用视频描述 + LLM 改写造 CoT,但描述非帧级对齐导致时序错乱、要拉人工修、只有 1.1 万条;CoF 用帧级对齐标注 + 合成模板,时序准确、零人工、规模到 16.4 万条,且推理 trace 带显式帧引用。
- vs Video-of-Thought / VideoEspresso / M-LLM(多阶段):它们靠辅助网络做关键帧检索 / 时空场景图,推理时开销大、专门化、只送子集帧丢上下文;CoF 单阶段、全帧入模、帧检索隐式融进推理文本,参数更少还在共享 benchmark 上反超(NExT-QA +4.9% vs M-LLM +0.8%)。
- vs 标准 CoT Prompting / SFT-CoT:消融证明只加推理提示或加了推理但抹掉帧引用都不如 CoF——核心增量来自「显式帧级时序 grounding」,而非「有没有推理」这件事本身。
评分¶
- 新颖性: ⭐⭐⭐⭐ 「帧编号当文本指针写进单阶段 CoT」想法朴素但确实是首个单阶段+显式帧引用的范式,切中多阶段检索的痛点。
- 实验充分度: ⭐⭐⭐⭐ 5 benchmark + 3 backbone + CoT 变体/数据源/推理引用分布多角度消融,诚实标注 benchmark 重叠;缺少对非 InternVL 格式模型的正文充分验证。
- 写作质量: ⭐⭐⭐⭐ 动机—局限—方法链条清晰,图示(数据管线、引用分布)到位,易读。
- 价值: ⭐⭐⭐⭐ 低成本数据管线 + 合成数据可迁移的发现实用性强,对做视频 LLM 推理的人有直接借鉴价值。