27届大模型面试准备(四十九):视频多模态大模型与长视频理解——从帧采样到时空注意力
引言:为什么单图 VLM 不够,必须把视频吃进来
本系列已经把图像多模态(A14 多模态 VLM)、多模态推理(A31 视觉思维链)、多模态生成(A46 扩散与自回归统一)讲了一遍。但现实里大量信息是以"视频"形态存在的:监控、会议录屏、教学视频、短视频、工业产线画面。把视频当一堆散图去问 VLM,会丢掉最关键的"时序"——动作的顺序、因果、谁在何时对谁做了什么。这一篇专门补"视频多模态大模型(Video MLLM)"这条线:它和图像 MLLM 一脉相承,却因为多了一个时间维度,在算力、建模、记忆三个层面都更难一个量级。
面试里这条线高频出现在:多模态 LLM 岗位(尤其你正在准备的华为多模态方向)、视频理解、具身感知。讲清楚"视频比图像难在哪、帧采样怎么省算力、时空注意力怎么建、长视频怎么不丢前情",基本就能把这一块答出深度。
一、视频比图像难一个量级的三个根因
图像 MLLM 的输入是"一张图 + 一段文字",视觉 token 数固定、无时序。视频 MLLM 面对的是"若干帧 + 音频(可选)+ 文字",三个新麻烦:
- 算力随帧数线性(甚至超线性)膨胀。一段 60 秒、30fps 的视频有 1800 帧,全送进视觉编码器既不现实也没必要。哪怕压到每秒 1 帧也有 60 帧,每帧 256 个视觉 token 就是 15360 个 token,直接撑爆上下文。
- 时序建模引入因果与顺序。图像里"猫在左、狗在右"是空间关系;视频里"猫先扑、狗后躲"是时间关系,模型必须学会跨帧对齐与因果推断。
- 长视频的记忆与信息密度。长视频里有效信息稀疏且分散,大部分帧是过渡。如何让模型"记住前半段的约定、用在后半段的推理",是长视频理解的核心难题。
下面这张图对比两类模型的管线差异:
图像 MLLM 管线: 图片 --(ViT encoder)--> 视觉 token --(projector)--> LLM [单帧,无时序] 视频 MLLM 管线: 视频 --(采样: 均匀/关键帧/运动自适应)--> 帧序列 --(时空编码器: 3D patch / 时空注意力)--> 视觉 token 序列 --(可选: 分段压缩 / 记忆缓存)--> LLM 文本指令 -------------------------------------------> LLM 输出: 视频问答 / 时序定位 / 摘要 / 动作识别关键认识:视频 MLLM 不是"把图像 MLLM 多喂几帧"那么简单,采样、时空编码、长程记忆是三道必须各自设计的关卡。
二、帧采样:第一道算力闸门
全帧编码不可能,第一步永远是"采哪些帧"。常见策略:
| 策略 | 做法 | 优点 | 缺点 | 适用 |
|---|---|---|---|---|
| 均匀采样 | 等间隔取 N 帧 | 简单、覆盖全程 | 可能漏关键瞬间 | 通用短视频 |
| 关键帧采样 | 镜头切换/场景检测取帧 | 信息密度高 | 需镜头检测模块 | 长视频、监控 |
| 运动自适应 | 按帧间差分/光流决定取舍 | 动静分区、省算力 | 复杂度高 | 动作类视频 |
| 密集采样 | 高帧率小窗口滑窗 | 捕获细粒度动作 | 算力贵 | 工业质检、体育 |
工程上最常用"均匀采样打底 + 关键帧补强":先用均匀采样保证时间覆盖,再叠加镜头检测出的关键帧补足语义突变点。下面是帧采样的典型实现:
import cv2 import numpy as np def sample_frames(video_path, num_frames=8, strategy="uniform"): cap = cv2.VideoCapture(video_path) total = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) frames = [] if strategy == "uniform": # 等间隔取帧,避免首尾过采样 idxs = np.linspace(0, total - 1, num_frames).astype(int) else: idxs = np.linspace(0, total - 1, num_frames).astype(int) for i in idxs: cap.set(cv2.CAP_PROP_POS_FRAMES, int(i)) ret, frame = cap.read() if ret: frames.append(frame) cap.release() return np.stack(frames) # (num_frames, H, W, 3)注意一个工程细节:采样数num_frames是算力与效果的核心杠杆。短视频 8~16 帧往往够用;长视频不能靠堆帧,要靠后面的"分段压缩"解决,否则 token 数爆炸。
三、时空编码器:怎么把视频喂给 LLM
采完帧,要把它们变成 LLM 能吃、且保留时序的 token。主流三种路线:
- 帧独立编码 + 时序拼接。每帧当独立图送 ViT,得到每帧 token 后按时间顺序排列,再让 LLM 的注意力天然看到时序。最简单,但 LLM 自注意力对长序列的时序建模有限,且没显式建模"帧间运动"。
- 3D Patch Embedding。把视频切成 (T, H, W) 的三维 patch,用三维卷积/线性投影直接得到时空 token,从底层就融合时空。代表如 VideoMAE、TimeSformer 的若干变体。
- 时空联合注意力(Spatio-Temporal Attention)。在 Transformer 里同时算空间注意力和时间注意力,可分离(先空间后时间,省算力)也可联合(效果好但贵)。下面是时空分离注意力的伪代码:
# 简化的时空分离注意力:先空间、后时间 def spatiotemporal_attention(x): # x: (B, T, N, D) B批量 T帧 N每帧token数 D维度 # 空间注意力:每帧内部 token 互相看 x_space = attention(x, dim="spatial") # 沿 N 维做注意力 # 时间注意力:同一空间位置的 token 跨帧看 x_time = attention(x_space, dim="temporal") # 沿 T 维做注意力 return x_time # 投影到 LLM 词嵌入空间 video_tokens = projector(x_time) # (B, T*N_compressed, D_llm)工程取舍:短视频(几秒到几十秒)用时空联合注意力效果最好;长视频(分钟级以上)联合注意力算力不可承受,必须走"分段编码 + 跨段检索/摘要"(见下一节)。
四、长视频理解:KV 爆炸与记忆机制
长视频的真问题不是"看不全",而是"记不住"。分钟级视频若按每秒 1 帧、每帧 256 token,轻松上万 token,直接塞进 LLM 会:上下文窗口爆掉、注意力被稀释、关键前情被淹没。
解法是一套"记忆"机制,核心是"压缩 + 索引":
- 分段编码:把视频切成若干段,每段独立编码成少量摘要 token(而非全量 token)。
- 层级索引:段摘要进 LLM 做全局推理;需要时再"展开"某段的细粒度 token 做局部推理(类似 RAG 的粗排-精排,呼应 A32 RAG 进阶)。
- 跨段检索:问题相关的证据可能散布在多段,用检索器把相关段摘要召回,而非全量喂入。
# 分段压缩 + 按需展开(伪代码) segment_summaries = [] for seg in split_video(video, seg_len=16): # 每段16帧 tok = encode_segment(seg) # 编码成少量摘要token segment_summaries.append(tok) # 全局规划层只看摘要 plan = llm(question, segment_summaries) # 局部细化:只展开被点名的段 for seg_id in plan.relevant_segments: detail = expand_segment(segments[seg_id]) # 取细粒度token answer = llm(question, detail, context=plan)这套机制和你之前做的 4MRAG(按需组合模态检索器)思想同源:不一次喂全部,而是"先粗后细、按需取用"。能讲清这点,面试官会立刻联想到你 RAG 背景的迁移能力。
五、训练数据与对齐:视频-文本对从哪来
视频 MLLM 的训练数据比图像难造,因为"视频-文本"对齐需要时序标注:
- 公开数据:短视频配文字描述、影视片段字幕、教学视频转录,多用于预训练。
- 自动标注:用图像 MLLM + ASR 给视频生成伪标注(帧描述 + 语音转写 + 时间轴),再用更强模型过滤,低成本造大规模弱标注。
- 时空对齐标注:时序定位(某动作发生在第几秒)、视频问答(带推理链),这类高质量数据稀少,是拉开效果的关键,往往需要人工或半自动构造。
训练范式通常是"图像预训练底座 + 视频数据继续训练 + 指令微调",复用图像 MLLM 的视觉编码器与 projector,只在时空层和视频指令数据上增量训练,控制成本。
六、工业落地:技术取舍清单
| 场景 | 核心难点 | 推荐技术 | 算力档位 |
|---|---|---|---|
| 短视频问答 | 动作/因果 | 均匀采样 + 时空注意力 | 中 |
| 长视频摘要 | 信息稀疏 | 分段压缩 + 跨段检索 | 中高 |
| 视频审核 | 违规瞬间定位 | 关键帧 + 时序定位头 | 中 |
| 会议录屏理解 | 多说话人+PPT | 帧+OCR+ASR 多模态融合 | 高 |
| 工业质检 | 细粒度动作 | 密集采样 + 3D 卷积 | 高 |
落地铁律:先定清楚"问题到底需不需要时序"。很多业务用单帧 + OCR/ASR 就能解决,不必上完整视频 MLLM——算力省一个量级。只有真正涉及时序因果的,才值得上时空建模。
七、评测与失败模式:视频 MLLM 怎么知道自己对不对
视频 MLLM 的评测比图像难,因为答案是"时序相关"的。看几个客观指标,而不是只靠人工打分:
- 视频问答准确率(VideoQA)。分感知类(某帧里有什么)和推理类(为什么、接下来会怎样),后者才真考验时序建模。只报整体准确率会掩盖"感知强、推理弱"的短板,面试要会拆开看。
- 时序定位命中率(temporal grounding)。给一句描述,模型标出它在第几秒发生,看预测区间和真值的 IoU。这直接检验模型是否真看懂了"何时"。
- 动作识别与步骤召回。长视频里动作常被拆成多步,看模型能否完整召回步骤序列,而非只认单帧。
- 抗干扰鲁棒性。插入无关帧、加速/慢放、画面抖动,看性能掉多少,检验模型是否真依赖时序而非作弊式地抓单帧线索。
常见失败模式要能枚举:其一,帧采样把关键瞬间漏掉,导致"看了等于没看",解法是在均匀采样外叠关键帧;其二,长视频前情被上下文窗口吞掉,靠分段压缩+跨段检索(第四节)救;其三,训练数据里时序标注稀薄,模型学会"用单帧猜答案"的捷径,评测时换分布就翻车,解法是构造强时序对比样本;其四,音频信息被忽略,纯视觉模型在"听不清就没法判断"的视频上天然弱,需接 ASR 或音频表征。能讲清"视频评测必须分感知与推理、必须看时序定位、必须测鲁棒性"的,说明他真在视频模型上做过闭环,而非只看论文榜单数字。
最后把视频 MLLM 放回你的研究主线:你做的 4MRAG 是"按需组合模态检索器"处理多模态文档(ViDoSeek、SlideVQA、MultimodalQA),视频本质是多帧+时序的另一种多模态文档——把"帧/镜头"当成可被检索器按需调取的模态单元,把"时序定位"当成检索的细粒度信号,思路完全可迁移。这条线如果你能在面试里点出来,既呼应了你的论文创新,又展示了前沿视野,是极强的加分项。
十补、深度延展:视频 MLLM 的训练技巧与实时端侧工程\n\n上一节讲了评测与失败模式,这一节补最贴近训练与部署的训练技巧与工程深潜,这些是论文里少写、却决定能不能落地的硬功夫。第一,预训练的目标设计。视频-文本对比学习(类似 CLIP 但扩展到时序)是最常用的预训练范式:把同一视频的不同采样视图与文本拉近、不同视频推远。但纯对比容易让模型学会'用单帧 shortcut 蒙混',因为很多视频里随便一帧就能和文本对齐。更稳的做法是叠一层时序对比——强制模型区分'正确顺序'与'打乱顺序'的帧序列,逼它学到真正的时序结构,而非只学外观。这一招对动作类、因果类视频提升尤其明显。\n\n第二,帧顺序敏感性。Transformer 本身对输入顺序不敏感(位置编码只给绝对位置),但视频的时序就是顺序。训练时若总是正序,模型可能没学会'倒放不对';工程上会做帧顺序增强(随机打乱一段、让模型预测是否被打乱或恢复顺序),提升对时序的鲁棒性。这和 A22 推理时扩展里'用顺序扰动做自监督'思路同源。\n\n第三,长视频的课程学习。一开始用短视频(几秒)训,让模型先学会基础时空对应,再逐步加长视频时长、加大分段压缩的压力,否则一上来就喂长视频,注意力会被噪声帧淹没、loss 难降。这和 A17 分布式训练里'先小后大'的扩规模纪律一致——训练节奏也是工程。\n\n第四,实时与端侧。很多场景要'边播边理解'(会议实时字幕、监控实时告警),不能等整段视频传完。做法是滑窗流式编码:维护一个滚动的帧缓冲,每来新帧增量更新分段摘要,用轻量模型做初筛、重模型只处理被初筛命中的窗口。端侧(A34 端侧部署)则更狠——帧率降到最低可辨、分辨率压到最小、模型用量化(A19)甚至蒸馏(A27/A35)到能跑在 NPU 上,用'识别质量换实时性'。这里的关键是明确业务到底需要多细的时序粒度,再反推帧率与模型大小,而不是无脑上大模型。\n\n第五,多智能体视频 pipeline。当视频理解要驱动动作(如机器人看视频学操作,呼应 B43 具身智能体),单模型不够,要拆成'感知 Agent(抽关键帧与实体)+ 时序 Agent(理因果链)+ 决策 Agent(定下一步动作)'的 pipeline,每个 Agent 输出可独立观测、可单独回归,这正是你把 4MRAG'多智能体 pipeline + 按需组合检索器'思想从文档领域搬到视频领域的自然延伸。能讲清'视频理解从单模型走向多 Agent pipeline、且和你论文的检索器组合思想同源'的,在面试里是把前沿视野和研究积累打通的标志性回答。
九补、把视频 MLLM 接回你的多模态研究主线
讲到这里,最重要的一步是把视频 MLLM 和你正在做的多模态检索增强生成(4MRAG)串起来——这才是你面试里最独特的差异化素材。你的论文处理的是多模态文档(ViDoSeek、SlideVQA、MultimodalQA),本质是"图文混合、需要跨表格与图像取证"的复杂推理;视频不过是把"多页文档"换成"多帧加时序的多模态文档"。
具体衔接点有三个。第一,检索器组合的迁移。4MRAG 的核心是"按需组合模态检索器"(文本检索器、表格检索器、图像检索器按问题类型动态调度),视频场景下可等价为"按镜头、按帧、按时序段"的动态检索器组合——问"第几秒发生了什么"走时序检索器,问"画面里有什么"走关键帧检索器。这套"检索器组合当成可搜索的树"的思想完全可迁移,面试官一听就知道你不是只会调现成视频模型,而是有自己的方法论。第二,复杂度分析的迁移。你论文里有 4MRAG 的计算复杂度分析章节,视频 MLLM 的算力复杂度(帧数乘每帧 token 乘注意力)也能做同样的剖析,体现你"不只看效果、还看代价"的工程素养。第三,评测闭环的迁移。4MRAG 在 ViDoSeek 上的实验配置(retrieval_top_k=5、rerank_top_k=3、n=310、seed=42)是严谨可复现的范式,视频 MLLM 的评测也该有同样严谨的配置与回归,而非只看榜单数字。
面试串联建议:被问到视频理解,不要只背架构,而是先定义"这题到底要不要时序",再讲"采样-编码-记忆"三关,最后落到"和你 4MRAG 检索器组合思想同源"。这一套从问题定义到方法到研究主线的回答,比罗列 SOTA 模型值钱得多,也直接呼应你简历里最硬的成果。
十补、视频 MLLM 速记卡与选型清单
把本篇压成一张面试速记卡,关键时刻能直接背:三难(算力随帧膨胀、需显式时序、长视频需记忆);三关(采样控算力、时空编码建模、分段压缩管记忆);四采样(均匀保覆盖、关键帧补突变、运动自适应省算力、密集采细动作);两编码(帧独立编码+LLM 注意力最简单,时空联合注意力效果最好但贵);一总纲(视频不是多喂几帧,而是多一个时间维度的系统工程)。
选型清单补一刀:短视频(几秒到几十秒)用时空联合注意力效果最好;长视频(分钟级)必须走分段编码加跨段检索,联合注意力算力不可承受;实时场景用滑窗流式编码,端侧用最低可辨帧率加量化蒸馏。落地铁律是先判断"问题到底需不需要时序",很多业务用单帧加 OCR/ASR 就能解,不必上完整视频 MLLM——算力省一个量级。能讲清"按视频长度与实时性反推模型形态"的,体现的是把视频当工程问题而非模型炫技的成熟度。最后把视频接回你的 4MRAG 研究主线(检索器组合、复杂度分析、可复现评测可迁移),这一篇就从"前沿知识点"变成"你研究体系的延伸"。
面试速答
问:视频 MLLM 和图像 MLLM 最大区别?
答:多了一个时间维度,带来三难——算力随帧数膨胀、需显式时序建模、长视频需记忆机制。不是多喂几帧那么简单。
问:帧采样为什么重要?
答:它是第一道算力闸门。全帧编码不可行,均匀采样保覆盖、关键帧补语义突变、运动自适应省算力,采样数直接决定效果与成本平衡。
问:长视频怎么不丢前情?
答:分段编码压缩成摘要 token,全局规划看摘要,按需展开相关段做局部细化,本质是"粗排-精排"的 RAG 思想在视频上的迁移。
问:训练数据怎么来?
答:公开视频-文本对做预训练,图像 MLLM+ASR 自动造伪标注,高质量时序定位/视频问答数据人工或半自动构造,通常图像底座 + 视频增量训练。
高频追问清单
- 时空联合注意力和空间、时间分离注意力,算力与效果怎么权衡?什么任务该用哪种?
- 长视频的分段边界怎么定?固定时长还是语义切分?切错边界会丢信息吗?
- 音频要不要进模型?视频 MLLM 里 ASR 文本和原始音频表征怎么融合?
- 时序定位(某动作在第几秒)一般怎么做?是生成时间戳还是接检测头?
- 和你做的 4MRAG 按需组合检索器,视频的分段检索有哪些可借鉴的设计?
- 视频 MLLM 的评测除了视频问答准确率,还应看哪些客观指标(定位命中、动作召回)?
- 推理部署时,视频 token 数动态变化(不同时长)怎么批处理?PagedAttention 思路能借鉴吗?
- 端侧视频理解(A34 端侧部署)怎么把算力压下来?帧率、分辨率、模型大小的三角怎么取舍?