跳转至

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=\frac{1}{|\mathcal{X}_s|}\sum_{x_i\in\mathcal{X}_s}\mathrm{ITM}(x_i,q),\qquad D_s=\|\mu_{\mathcal{X}_s}-\mu_{\mathcal{X}}\|_2+\mathrm{Tr}(\Sigma_{\mathcal{X}_s})\]

两项量纲不同,先各自归一化(对 \(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\) 倍的帧收进候选集:

\[\mathcal{C}_s=\{x_j\in\mathcal{X}_s \mid \mathrm{ITM}(x_j,q)\geq\gamma\cdot R^*\},\qquad R^*=\max_{x_i\in\mathcal{X}_s}\mathrm{ITM}(x_i,q)\]

之后的多样性扩展只在这个候选集里进行。\(\gamma\)(默认 0.7)是一个显式的"相关性—多样性"旋钮:调大则候选集更贴近问题、但可选帧变少、多样性受限;调小则池子变大但会引入噪声帧。论文消融里把锚点换成段内随机帧、或取消候选集改在整段里选,四个基准都掉点(去掉候选集时 MLVU 从 75.8 掉到 72.4、LVBench 从 52.4 掉到 48.7),说明"先锚定、再在相关帧范围内谈多样性"这两步是互相支撑的,不是两个可独立去掉的小组件。

4. 距离贪心多样性扩展:每次选离已选帧集最远的那个候选帧

配额内的剩余帧用最朴素的贪心填:每轮在候选集的未选帧里挑一个"到当前已选帧集总距离最大"的帧加进去,距离用欧氏距离,重复到 \(|\mathcal{K}_s|=q_s\)

\[\mathcal{K}_s\leftarrow\mathcal{K}_s\cup\Big\{\arg\max_{x_i\in\mathcal{C}_s\setminus\mathcal{K}_s}\sum_{x_j\in\mathcal{K}_s}\phi(x_i,x_j)\Big\}\]

这实际是在贪心地最大化边际信息增益:如果新帧和已选帧都很像,它对当前帧集的补充信息就接近零;让"到已选帧的总距离"最大,等价于优先补上当前帧集尚未覆盖的视觉内容。它与 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 个点之间,且依赖外部分数模型,属于稳健而务实的工程改进。