← All writing多模态:从像素到内容理解 · 05

视频内容理解:采样、时间定位、音频与评估

把视频当成时间上的证据,计算帧与 token 预算,并诊断静态捷径、字幕泄漏和事件遗漏。

Read the English edition →

视频内容理解:采样、时间定位、音频与评估

从零开始的完整讲解

视频不是把很多图片简单放在一起

视频增加了时间轴:同一物体的位置会变、动作有顺序,声音可能早于或晚于画面出现。回答“他先关门还是先坐下”需要比较事件顺序;只知道视频里有门和椅子不够。某些任务依赖关键帧,另一些任务必须保留连续运动。

原始视频还包含帧率、分辨率、时长和压缩编码等信息。模型实际接收的是解码、采样和预处理后的帧,可能与人连续观看时的体验差别很大。

采样先决定模型有没有机会看到事件

假设一个 60 秒视频每秒取 1 帧,共 60 帧。若某个关键动作只持续 0.2 秒,固定采样可能完全错过它。提高采样率增加覆盖,却也增加视觉 token 和计算预算。事件驱动或分层采样可以先粗看再细看,但需要额外选择逻辑。

若每帧生成 196 个 token,60 帧就是 11,760 个视觉 token,还没有问题文本、音频或特殊位置。这个简单账本说明视频成本为何迅速增长;实际模型可能压缩、池化或使用其他时空结构。

时间定位需要保留原始时间戳

将采样后的第 10 帧直接解释为第 10 秒,只有在特定采样规则下才成立。帧下标、时间戳和模型内位置编码是不同对象。变帧率视频与非均匀采样尤其需要显式保存时间映射。

若标注事件区间为 [10,20] 秒,预测为 [15,25] 秒,交集长度 5,合并区间长度 15,temporal IoU 为 1/3。分类“发生了开门”与定位“何时开门”是不同任务,应使用不同评测。

音频和字幕既能帮助,也能制造捷径

语音转写能补充人物说了什么,但字幕不等于视觉证据。问“视频中出现什么颜色的车”,字幕里提到蓝车不代表画面确实是蓝车。反过来,静音画面也无法确认说出的名字或警报声。

区分从画面、音频和字幕分别可以得出的结论。做消融实验时单独移除一个模态,检查模型是否依赖预期证据。语音识别错误、配音错位、字幕时间偏移都可能影响融合。

滑窗处理要解决窗口之间的信息交接

长视频可以按时间窗口分段,每段生成表示或摘要,再汇总。重叠窗口帮助保留跨边界动作,却增加重复计算。若第一窗口只见“拿起杯子”,第二窗口只见“放下杯子”,汇总层还需判断是不是同一对象、是否发生喝水,不能盲目拼接文字摘要。

并行窗口可以降低某些阶段的墙钟时间,但总计算未必减少。串行依赖、GPU 容量和汇总延迟仍可能限制效果。若在线流式场景需要未来帧才确认动作,应清楚区分立即预测与事后修正。

怎样构造真正检验时序理解的测试

同一组帧正序与倒序可能包含完全相同对象,却表达不同动作顺序。建立这种对照,观察模型答案是否合理改变。再用短事件、遮挡、镜头切换、音画冲突和长视频中的稀疏关键事件做分组评测。

记录采样策略、帧数、时间映射、分辨率、模态输入及 token 预算。只报告视频总时长不够。下方多模态 Notebook 先让你看懂单帧 patch 和内容向量;将它们延伸到视频时,新增的主要难点就是时间信息与预算管理。

多帧不是自动的时间理解

把帧独立编码再拼接,可以看到多个时刻,却未必理解先后与持续时间。视频问题可能要求识别对象、定位某个动作、判断先后,或理解因果。需要保留时间戳、帧间间隔和音画同步,而不是把所有帧当无序图片袋。

60 秒视频每秒 2 帧,共 120 帧。若每帧保留 256 个视觉 tokens,视觉输入已经有 30,720 tokens,还没算文字、音频或特殊标记。实际模型可能合并时空 patch;预算要按 processor 实际输出计算。

采样策略决定能看到什么

Uniform sampling 容易实现,但可能错过很短的动作。Scene-change sampling 改善变化覆盖,却可能漏掉静态画面中的细微事件。粗到细策略先稀疏找候选时间段,再局部加密,代价是额外调用、状态管理和召回失败风险。

import numpy as np
sample_times = np.arange(0, 10, 1.0)
event_start, event_end = 4.2, 4.4
hits = (sample_times >= event_start) & (sample_times <= event_end)
print('observed event?', hits.any())  # False

后端模型再强也不能凭空恢复完全没采到的短事件。若声道包含相关证据,ASR 或 audio encoder 可能补足,但也可能引入字幕/转写泄漏,让模型绕过视觉理解。

时间定位与多模态证据

对事件区间可计算 temporal IoU:交集时长除以并集时长。报告阈值下 recall,同时检查边界误差。随机打乱帧、只给单帧、移除音频或字幕,是诊断依赖的重要 ablation。视频 reverse 后,描述“先拿杯再喝水”的答案应合理变化。

内容理解数据要按源视频、创作者或事件分组切分,避免同一视频相邻片段同时进入训练和测试。评估还要记录语言、时长、分辨率、小目标与 OCR 等切片,否则平均分可能掩盖缺陷。

自测

问题: 增加帧数让分数上升,能否证明模型时间推理更强?

展开答案不能单独证明。可能只是更容易采中关键帧。固定覆盖率,加入顺序敏感任务和帧重排对照,才更接近测时间关系。

原始资料与继续阅读

资料核对:2026-09-10。教学示例不代表生产基准;框架 API 和模型支持请以所链接版本为准。

NOTEBOOK · LIVE PYTHON

在文章里运行 Notebook

逐格改代码、运行,或者一键运行全部。变量在单元之间保留;离开页面或重启内核会清空变量。编辑上游单元后,请重新运行后续单元。

此版用真实 Python 实现可检查的小型计算与训练,不需要 GPU。PyTorch/CUDA 不在此浏览器内核中;完整预训练模型 Notebook 见另一个标签,大模型基础的 Notebook 还提供单独加载真实 MiniLM 的可编辑单元。

内核尚未加载;点击运行开始。

正在加载 Notebook…