QCA: Query- and Content-Aware Keyframe Selection for Long Video Understanding¶
会议: ECCV 2026
论文: ECCV 原文
领域: 视频理解
关键词: 关键帧选择、长视频理解、免训练、查询感知、帧预算分配
一句话总结¶
QCA 把长视频的固定帧预算先按「查询语义匹配 + 内容偏移」两路信号分给各个时间片段,再在段内以最相关帧为锚、在高相关候选集里做距离贪心选帧,全程免训练即可接进现有 Video-LLM;在四个长视频基准、三个 MLLM 骨干上一致超过均匀采样与已有帧选择方法(Qwen3-VL-8B、64 帧下 LongVideoBench 66.9 / Video-MME 69.5 / MLVU 75.7 / LVBench 51.8)。
研究背景与动机¶
把 MLLM 用来看长视频时,第一道墙是 token 预算:视频帧要变成视觉 token 才能进语言模型,而一段一小时的视频即使按 1 fps 抽帧也有几千帧,直接编码必然超出上下文,要么被截断、要么推理质量塌掉。主流的做法是先用固定帧预算(比如 64 帧)把视频压一遍再喂给模型,最简单的是均匀采样。但均匀采样是 query-agnostic 的——不管用户问什么,它选出的都是同一批帧,于是很容易把预算花在长时间的空镜和重复镜头上,恰好漏掉那段真正回答问题的一两秒。论文 Fig.1 给了一个很直观的例子:问「两个穿白短裤的人在做什么」,均匀采样看到的是奔跑画面、答成 Running race,而按查询选出来的帧给出 Wrestling match。另一类做法是拿查询和帧算相似度,取 Top-k 或按注意力过滤,这确实引入了查询意识,但计算代价随视频变长而上涨;更关键的是,只追「和问题像」会让选出的帧高度集中在局部高光片段上,视频其余部分的信息全丢,对于需要全局场景理解的题目反而更差。
真正的矛盾在于,「这段视频内容值不值得占一帧」其实有两种不同来源的信号,而它们并不重合。一种是语义相关:这一段和你问的问题对不对得上。另一种是内容显著:这一段在整个视频里是不是"不一样"——事件密集、镜头切换频繁、或者视觉变化大,往往藏着问题的关键上下文(比如被问到的那个物体出现前发生了什么)。只取前者,选出来的帧会挤在同一处、丢掉覆盖度;只取后者(聚类、多样性那一类方法)则是 query-independent 的,可能挑出一堆与问题无关的"代表性"帧。而均匀采样两种信号都没用。
本文因此把问题形式化成"有限帧预算下的相关性—多样性联合建模与帧分配":先让每一段各自估一个信息贡献分,再按贡献把预算切开,最后在段内兼顾相关与多样地填满配额。整条链路只用现成的图文匹配模型(BLIP-2)打分和简单的向量距离,不训练、不加参数、不改动 MLLM 结构。核心 idea:把「选哪些帧」拆成段级贡献打分(查询匹配度 \(M_s\) + 内容偏移 \(D_s\))、贡献加权的预算分配、以及段内「语义锚点 + 距离贪心多样性扩展」三级流水,用免训练的打分式预处理替代 query-agnostic 的均匀采样。
方法详解¶
整体框架¶
QCA 的输入是查询 \(q\) 和按 1 fps 采样得到的帧序列,输出是一个大小固定为 \(N'\) 的关键帧子集,交给下游 Video-LLM 生成答案;整条流程是纯推理期的预处理,没有任何需要学习的参数。它分三步走:先把视频均匀切成 \(S\) 个时间片段;再给每段算一个信息贡献分——由「段内帧与查询的平均图文匹配度」和「该段相对整段视频的内容偏移」加权而成——把所有段的贡献分归一化成权重,把总预算 \(N'\) 按权重切成每段的配额 \(q_s\)(下取整的零头补给贡献分最高的那几段);最后在每段内部先用与查询最匹配的帧当锚点,把所有够相关的帧收进候选集,再反复挑「离已选帧集总距离最大」的那一帧,直到该段配额用完。全部段的选帧结果并起来就是最终的 \(\mathcal K\)。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["长视频 1 fps 帧序列"] --> B["均匀时间分段"]
Q["查询 q"] --> C["段级贡献评分"]
B --> C
C --> D["预算分配"]
D --> E["语义锚点与相关性候选集"]
Q --> E
E --> F["距离贪心多样性扩展"]
F --> G["N' 帧关键帧 → Video-LLM"]
关键设计¶
1. 段级贡献评分:把「和问题相关」与「内容上不寻常」两路信号加权成一个分数
只按 ITM 分数排序取 Top-k,会把预算全砸在几个局部高光帧上,需要全局场景理解的 Video-MME 一类任务就吃亏——论文表格里 QCA 在 LLaVA-Video-7B 上的 Video-MME 就比 Top-k 高 1.4 个点。QCA 的做法是给每段同时算两个量再融合。第一个是语义匹配度 \(M_s\),即段内所有帧与查询的平均 ITM 分数(ITM 用 BLIP-2 的图文匹配能力实现)。第二个是内容偏移 \(D_s\),它由两项相加:段特征均值与全视频特征均值的 L2 距离(衡量"这一段和整段视频有多不一样",越不一样越可能藏着信息量大的事件),以及段特征协方差矩阵的迹(衡量段内视觉变化幅度,变化越大说明视觉多样性越高):
两项量纲不同,先各自归一化(对 \(M_s\)、\(D_s\) 跨段做 softmax),再按 \(c_s=\alpha M_s+\beta D_s\) 融合,默认 \(\alpha=\beta=0.5\)。这个加权和的设计意味着评分是"互补"而非"取最大":一段既和问题对得上、又在整段视频里显得与众不同的片段拿最高分;和问题完全无关的片段即使内容再独特也不会被重奖,反过来一段与问题相关的平淡画面也能凭 \(M_s\) 保住基本配额。消融里单独去掉任一项都会掉点,正是这个互补性的证据。
2. 预算分配:按贡献权重切帧,下取整的缺口补给高分段
拿到段级分数后不能直接把 \(c_s\) 当帧数用——不同段的分数尺度不同,而且总数必须严格等于预算 \(N'\)。论文先把贡献分通过幂次归一化转成和为 1 的权重 \(w_s=c_s^{\tau}/\sum_{j=1}^{S}c_j^{\tau}\),其中 \(\tau\) 控制分配的平滑程度:\(\tau\) 越大越"赢家通吃",越小越接近平均分配,默认 \(\tau=0.5\)。每段配额取 \(q_s=\lfloor N'\cdot w_s\rfloor\);由于下取整会让总数少于 \(N'\),剩余的帧被逐一补给贡献分最高的那几段,保证最终选出的帧数精确等于目标预算。这样做的意义在于帧预算不是平均撒的:一小时视频里很长一段"空镜"会自动被抽走配额,转给事件密集或与问题强相关的段,而这正是均匀采样做不到的事。(⚠️ 若某段权重过低使 \(q_s=0\),该段就不会贡献关键帧;论文只讨论了下取整导致"少帧"的补足规则,未讨论某段被完全跳过的情形,此处以原文为准。)
3. 语义锚点与相关性候选集:先用最相关帧定调,再把选择范围收窄到高相关帧
段内选帧的隐患是:如果直接在整个段里追多样性,很容易把一堆与查询无关的帧(镜头切出的背景板、无关路人)选进来,把配额浪费掉。QCA 先用段内 ITM 分数最高的帧作为语义锚点 \(\mathcal{K}_s=\{x^*\}\) 强制入选——这一步给整段的选帧定了一个语义参照,后续所有帧都是在"和这个参照同样相关"的尺度上比较;随后把 ITM 分数不低于锚点分数 \(\gamma\) 倍的帧收进候选集:
之后的多样性扩展只在这个候选集里进行。\(\gamma\)(默认 0.7)是一个显式的"相关性—多样性"旋钮:调大则候选集更贴近问题、但可选帧变少、多样性受限;调小则池子变大但会引入噪声帧。论文消融里把锚点换成段内随机帧、或取消候选集改在整段里选,四个基准都掉点(去掉候选集时 MLVU 从 75.8 掉到 72.4、LVBench 从 52.4 掉到 48.7),说明"先锚定、再在相关帧范围内谈多样性"这两步是互相支撑的,不是两个可独立去掉的小组件。
4. 距离贪心多样性扩展:每次选离已选帧集最远的那个候选帧
配额内的剩余帧用最朴素的贪心填:每轮在候选集的未选帧里挑一个"到当前已选帧集总距离最大"的帧加进去,距离用欧氏距离,重复到 \(|\mathcal{K}_s|=q_s\):
这实际是在贪心地最大化边际信息增益:如果新帧和已选帧都很像,它对当前帧集的补充信息就接近零;让"到已选帧的总距离"最大,等价于优先补上当前帧集尚未覆盖的视觉内容。它与 Top-k 的差别正在这里——Top-k 会把 ITM 最高的几帧全部拿走,而这些帧往往来自同一段连续画面、内容高度相似,多样性直接塌掉;QCA 则是在"够相关"的候选池里刻意分散。消融把这一步换成纯按匹配度取前几帧,四个基准全线下降(MLVU 75.8→75.3、LVBench 52.4→49.2),说明显式的多样性建模不是可选项。论文还留了一个兜底规则:如果某段候选集初始就装不下配额(\(|\mathcal{K}_s|+|\mathcal{C}_s|<q_s\)),就调小 \(\gamma\) 放宽候选池,避免该段选不满。
一个完整示例¶
以一段约 1 小时的视频为例(1 fps 采样约 3600 帧;下面是示意走一遍流程,具体数值随视频内容而变):取 \(S=12\)、目标预算 \(N'=64\),则平均每段约 300 帧。查询是"穿白短裤的两个人在做什么"。算完各段的 \(M_s\) 与 \(D_s\) 后,假设第 4 段(擂台、两人扭打)语义匹配和内容偏移都高,第 9 段(长时间静止的走廊空镜)两项都低;跨段归一化后前者权重约 0.15、后者约 0.02,按 64 帧切下来第 4 段拿到约 9 帧、第 9 段只有 1 帧,下取整剩下的零头再补给贡献分最高的几段,总数仍是 64。进入第 4 段:先选出 ITM 分数 0.71 的锚点帧(两人刚扭在一起),再以 \(\gamma=0.7\) 为门槛保留 ITM \(\geq 0.497\) 的约 180 帧构成候选集;此后每轮在该候选集里挑离已选帧集总距离最大的帧,结果很可能落在同一场景但视角/姿态差别大的画面上(近景、远景、裁判入镜),而不是连续 9 帧几乎相同的画面。选完后交给 Video-LLM,得到 Wrestling match,而均匀采样在同一视频上给出的是 Running race。
损失函数 / 训练策略¶
QCA 完全免训练:没有损失函数,也不更新任何参数,唯一的"模型"是充当打分器的图文匹配模型(默认 BLIP-2),它只被调用、不被微调,因此可以直接串在 LLaVA-Video、InternVL-3.5、Qwen3-VL 等现成 Video-LLM 之前当作预处理。超参全部固定、无需按骨干重调:\(\alpha=\beta=0.5\)(语义相关与内容偏移等权)、softmax 温度 \(\tau=0.5\)、候选集阈值 \(\gamma=0.7\)、分段数 \(S=12\)、帧预算 \(N'=64\)(论文也会变动 \(N'\) 做预算—精度分析)。为压低打分开销,选帧前先把原始视频按 1 fps 抽帧再算 ITM;实验在 8×A800 80G 上完成。
实验关键数据¶
主实验¶
四个长视频基准、64 帧预算下与均匀采样及已有帧选择方法的对比(对应论文 Table 1;Top-k 指取 ITM 分数最高的帧,BOLT / FRAG / E-VRAG 等结果见原文):
| 骨干 / 方法 | LongVideoBench | Video-MME | MLVU | LVBench |
|---|---|---|---|---|
| LLaVA-Video-7B + 均匀采样 | 58.9 | 64.4 | 70.8 | 41.9 |
| LLaVA-Video-7B + Top-k | 61.6 | 63.7 | 72.8 | 47.2 |
| LLaVA-Video-7B + AKS | 62.7 | 65.3 | 71.8 | 47.6 |
| LLaVA-Video-7B + OneClip-RAG(需训练) | 62.5 | 65.2 | 71.2 | - |
| LLaVA-Video-7B + QCA | 62.9 | 66.1 | 74.1 | 48.9 |
| InternVL-3.5-8B + 均匀采样 | 61.3 | 61.9 | 69.9 | 42.8 |
| InternVL-3.5-8B + AKS | 62.9 | 62.8 | 70.5 | 47.9 |
| InternVL-3.5-8B + QCA | 63.5 | 63.9 | 71.3 | 50.0 |
| Qwen3-VL-8B + 均匀采样 | 63.1 | 67.6 | 71.0 | 43.8 |
| Qwen3-VL-8B + Top-k | 64.4 | 67.4 | 74.2 | 50.7 |
| Qwen3-VL-8B + AKS | 64.7 | 68.6 | 74.2 | 50.8 |
| Qwen3-VL-8B + Q-Frame | 65.8 | 67.9 | 74.7 | 50.7 |
| Qwen3-VL-8B + QCA | 66.9 | 69.5 | 75.7 | 51.8 |
换成更强的骨干同样有效:Qwen3-VL-30B-A3B-Instruct 上 QCA 把 64 帧预算的均匀采样从 67.2/69.9/72.8/44.0 提到 69.9/71.4/77.1/52.6。抽象里报告的对照是 QCA 用 128 帧在 LongVideoBench 上拿到 67.8%,而 GPT-4o 用 256 帧是 66.7%。
帧预算与精度(论文 Table 5,Qwen3-VL-8B,LongVideoBench 分 Med/Long/Avg 三个子集):
| 方法 | 帧数 | LVB Med | LVB Long | LVB Avg | MLVU | LVBench |
|---|---|---|---|---|---|---|
| 均匀采样 | 64 | 65.0 | 52.8 | 63.1 | 71.0 | 43.8 |
| QCA | 16 | 63.1 | 56.6 | 62.7 | 71.3 | 46.3 |
| QCA | 32 | 66.0 | 57.4 | 64.5 | 73.3 | 48.9 |
| QCA | 64 | 67.2 | 59.2 | 66.9 | 75.9 | 52.4 |
| QCA | 128 | 69.7 | 59.4 | 67.8 | 76.8 | 53.2 |
消融实验¶
组件与设置消融(论文 Table 3,Qwen3-VL,64 帧):
| 配置 | LongVideoBench | Video-MME | MLVU | LVBench |
|---|---|---|---|---|
| 完整模型 | 66.9 | 70.1 | 75.8 | 52.4 |
| w/o \(D_s\)(只留语义匹配) | 66.3 | 70.4 | 75.4 | 51.0 |
| w/o \(M_s\)(只留内容偏移) | 65.8 | 69.5 | 75.1 | 51.1 |
| w/o \(D_s,M_s\)(两项都去掉) | 66.0 | 68.3 | 75.2 | 51.2 |
| w/o 锚点(改用随机帧) | 63.7 | 68.2 | 74.1 | 47.2 |
| w/o 候选集(整段内选) | 64.5 | 69.0 | 72.4 | 48.7 |
| w/o 多样性(按匹配度取前几帧) | 66.2 | 68.6 | 75.3 | 49.2 |
| 全均匀采样选择 | 62.7 | 67.6 | 71.8 | 43.9 |
关键发现¶
- 语义匹配是最吃重的一项,三段选择机制缺一不可:两项都去掉时 Video-MME 从 70.1 掉到 68.3、LongVideoBench 从 66.9 掉到 65.8;但只剩语义匹配(w/o \(D_s\))时 Video-MME 反而是 70.4,说明"查询感知"是主体,内容偏移更像是补覆盖面的增益项。段内三件套(锚点、候选集、多样性)里损失最大的是语义锚点:换成随机帧后 LongVideoBench 掉 3.2、LVBench 掉 5.2 个点——用一个强相关帧当参照,比"选得散"更重要。
- 超参呈现明确的倒 U 型:\(\alpha,\beta\) 均衡(\(\beta=1-\alpha\))时最好;\(\gamma\) 过小候选集混入噪声、过大多样性不足;分段数 \(S\) 先升后降,LongVideoBench 从 \(S=8\) 的 66.0 升到 \(S=16\) 的峰值 66.9,再大就掉(\(S\) 太小则一段跨多个事件、统计被平均掉,太大则每段帧数太少、统计不稳)。论文正文写默认 \(S=12\),而消融峰值在 \(S=16\),⚠️ 两处口径不一致,以原文为准。作者还试过让 \(S\) 随视频长度线性增长的朴素动态策略,结果并没有稳定优于固定 \(S\)。
- 选帧本身几乎不花时间:输入帧数从 128 增到 1024 时,ITM 匹配耗时从 0.595 s 增到 1.165 s,而选帧过程本身只要约 0.005 s,相对 Video-LLM 编码密集 token 的开销可忽略。
- 帧效率很高,且增益集中在需要长程证据的题上:32 帧的 QCA 已超过 64 帧均匀采样(LongVideoBench 64.5 vs 63.1,MLVU 73.3 vs 71.0,LVBench 48.9 vs 43.8);16 帧在 MLVU/LVBench 上仍优于 64 帧均匀采样,LongVideoBench 的 Long 子集上 16 帧(56.6)甚至高于 64 帧均匀采样(52.8),但 Med 子集 63.1 略低于 65.0。预算从 16 增到 128 时精度稳步上升,说明多余帧不会带来严重冗余。
- 增益来自选择策略而非编码器:把打分器换成 CLIP、BLIP、LongCLIP 三者都涨,其中 BLIP 最好(66.9/70.1/75.8/51.8,相对各自基线 +4.2/+2.5/+4.8/+8.0)。
- 与 token 剪枝相比有优势:同等 64 帧有效预算下,QCA(Video-MME 66.1 / MLVU 74.1)优于从 256 帧剪掉 75% 的 ForestPrune(64.2 / 72.5)。作者的解释是 QCA 在编码前就选好了语义信息量高的帧,而 token 剪枝在编码后做、可能把整个信息量低的帧的 token 剪掉。
- ⚠️ 数字口径提示:Table 1 中「Qwen3-VL-8B + QCA」的 Video-MME 为 69.5,而 Table 3 / Table 4 在相同设置(64 帧、BLIP)下为 70.1,正文引用的 70.1 与后两者一致。上表按各表原样列出,不做统一修改,以原文为准。
亮点与洞察¶
- 把"选帧"从排序问题变成分配问题:以往工作多在"给每帧打分再排序",QCA 却先在段级别分配预算,再在段内选帧。这样即使某个片段在全局排序里排不进前 64,只要它所在段拿到了配额,它就有机会被选中——这是它能同时保住相关性和覆盖度的关键。
- 内容偏移用一个几乎零成本的统计量实现:\(D_s\) 只用到段特征均值与全视频均值的距离、加上段内协方差的迹,不需要额外的显著性模型或事件检测器,就能近似"这一段在整段视频里是否不寻常、变化是否剧烈"。这种"用二阶统计量代替学习式显著性"的思路很便宜也很可复用。
- 三维的语义—多样性张力被拆成两个显式旋钮:\(\gamma\) 控制候选集的"相关性门槛",\(\tau\) 控制预算分配的"倾斜程度",两者都直接对应可解释的取舍,而不是靠一个混合权重隐式调节。工程上很好调,也便于针对不同基准单独定标。
- 免训练 + 模型无关让它天然可迁移:不用改 MLLM、不用重训、不绑定具体编码器(CLIP/BLIP/LongCLIP 都有效),意味着它可以作为"换数据不换模型"的推理期插件,直接叠到任何基于帧的 Video-LLM 上。同样的"先分段估算贡献、再按贡献分配预算"框架可以迁移到长文档的段落选择、多图输入的图选择等任何"预算有限、候选有结构"的场景。
局限与展望¶
- 作者自己承认:时间分段用的是最简单的均匀切分。当视频里的事件边界和均匀网格对不齐时(比如关键事件正好横跨两段),\(M_s\)、\(D_s\) 的统计会被稀释。作者把"内容感知的分段(如镜头边界检测)"列为未来方向——这其实是最自然的下一步。
- 整套方法建立在"图文匹配分数可靠"这一前提上,且所有信号都来自单帧与查询的匹配,没有利用时序关系。如果关键证据是一段动作的先后顺序("他跳下台阶之后发生了什么"),单帧 ITM 分数未必能反映出来,Fig.4 里那类问题正是靠内容偏移和覆盖度兜住的,机制上并不直接。
- 关键帧之间靠欧氏距离衡量"不相似",这是特征空间里的弱代理:语义相近但视觉外观差得远的帧会被误判为"信息不同",反之亦然。换成学习式相似度或考虑时序邻接约束,可能有提升空间。
- 论文只在 4 个基准、固定 1 fps 抽帧、64 帧为主预算下评测;1 fps 这个前置采样本身对极长视频仍是遗漏(一小时的视频被压到 3600 帧再选 64 帧),论文没有分析 1 fps 会漏掉什么。
- 一处细节缺口:预算分配的下取整可能导致某些低分段的 \(q_s=0\),论文只给了"少帧补给高分段"的规则,没有说明这种被完全跳过的段是否损害覆盖度。
相关工作与启发¶
- vs 均匀采样:均匀采样 query-agnostic、时间间隔固定,会漏掉语义关键瞬间(Fig.1 的赛跑/摔跤之别)。QCA 用查询信号决定帧落在哪里,代价是多一次 ITM 打分(1024 帧约 1.165 s),换来四个基准上一致的提升,且在 32 帧时就超过 64 帧均匀采样。
- vs Top-k / 相关性过滤(Q-Frame 等):这类方法按查询相似度排序取前若干帧,query-aware 但只考虑相关性、不考虑内容结构,容易集中在局部高光片段。QCA 的候选集机制保留了相关性门槛,但用距离贪心在候选集内强制分散,LongVideoBench/LVBench 上的差距主要来自这一步。
- vs AKS / BOLT:AKS 做自适应关键帧采样、BOLT 免训练地做长视频帧选择,两者都不像 QCA 那样显式地把"段级贡献 → 预算分配 → 段内选择"分成三级;在 Qwen3-VL-8B 上 QCA 比 AKS 高 2.2(LongVideoBench)、比 Q-Frame 高 2.0 个点(Video-MME),但与 AKS 在 MLVU 上打平(75.7 vs 74.2 为 QCA 略高)。
- vs OneClip-RAG / FRAG / E-VRAG:这三者要么依赖额外训练(OneClip-RAG),要么动用更大的模型(LLM 或 7B MLLM)来选帧。QCA 不训练、不引入大模型,却在 LLaVA-Video-7B 上对 OneClip-RAG 拿到 MLVU +2.9、对 FRAG 拿到 Video-MME +2.4、对 E-VRAG 拿到 MLVU +3.9。这说明选帧这件事的收益更多来自"选得对不对"的结构设计,而非打分的模型有多大。
- vs ForestPrune 等 token 剪枝:剪枝在编码之后丢 token,可能把整个低相关帧的 token 一起扔掉;QCA 在编码之前就决定哪一帧值得占预算,因此同等有效预算下信息密度更高(Video-MME 66.1 / MLVU 74.1 vs 64.2 / 72.5)。
评分¶
- 新颖性: ⭐⭐⭐ 问题意识清晰、组合也合理,但单个组件(ITM 相关度、段内多样性贪心、按权重分配预算)都是已有工具箱里的零件,主要贡献在于把它们组织成一个免训练的三级流水,而非提出新的打分原语。
- 实验充分度: ⭐⭐⭐⭐ 覆盖 4 个长视频基准、3 个 MLLM 骨干、3 种 VL 嵌入、帧预算从 16 到 128、含组件消融与开销分析,且与 token 剪枝做了同等有效预算的对比;扣分在于消融表里同一设置出现 69.5 与 70.1 两种 Video-MME 数字,\(S\) 的默认值与最优值也口径不一。
- 写作质量: ⭐⭐⭐⭐ 方法与公式交代清楚、图示直观,瓶颈是部分公式(如 \(D_s\) 的两项如何归一化、软归一化作用在哪一步)需要读者自己反推,且手稿里有个别排版损坏的公式。
- 价值: ⭐⭐⭐⭐ 即插即用、免训练、模型无关,32 帧即超 64 帧均匀采样,对实际部署长视频 MLLM 的场景很实用;但提升幅度在 2-8 个点之间,且依赖外部分数模型,属于稳健而务实的工程改进。