视频理解为什么难
图像理解已经够难了,视频理解更难——视频是时间序列,有动态变化、有上下文依赖、有镜头切换。一个 10 分钟的视频有 18000 帧(按 30fps),你不可能每一帧都过一遍模型。视频理解的核心问题是:怎么从海量帧里提取出有意义的信息,又不至于成本爆炸。
多模态大模型把这个问题往前推了一步——它能同时理解图像、文本、语音。把视频按间隔抽帧,加上语音转写的文本,一起喂给多模态模型,就能做视频问答、视频摘要、视频检索。这就是当前视频理解应用的主流技术路线。
视频理解不是「看每一帧」,而是「看关键帧加听语音」。抓住时间线上的关键变化,比逐帧分析高效得多。
- 视频结构化把视频拆解成镜头、关键帧、场景标签的结构化数据。
- 抽帧策略按时间间隔或镜头切换点抽取关键帧,控制计算量。
- 多模态 Embedding把视频帧和文本映射到同一向量空间,支持跨模态检索。
- 视频检索用自然语言搜视频片段,基于多模态语义匹配。
视频结构化的基本流程
视频结构化分三步:先做镜头检测,把视频切成一个个镜头片段;然后在每个镜头里选关键帧;最后对关键帧做内容识别(物体、场景、动作)。这样视频就从一个不可读的流,变成了带标签的结构化数据。
# 视频结构化管线
# 1. 镜头检测:检测画面切换点,切分成镜头
# 2. 关键帧抽取:每个镜头选 1-3 帧代表整个镜头
# 3. 内容识别:对关键帧做物体检测、场景分类、OCR
# 4. 语音转写:提取音频轨,转成文字
# 5. 结构化输出:
# {
# "video_id": "xxx",
# "shots": [
# {"start": 0.0, "end": 3.2, "keyframe": "frame_001.jpg", "tags": ["室内","人物"]},
# {"start": 3.2, "end": 8.5, "keyframe": "frame_002.jpg", "tags": ["产品","特写"]}
# ],
# "transcript": "语音转写的完整文字"
# }
抽帧策略:不是每帧都要看
抽帧太密,成本高、冗余多;抽帧太疏,漏掉关键变化。常见做法是按固定间隔抽(每秒 1-2 帧),再加上镜头切换点多抽几帧。对于短视频内容审核这种场景,间隔可以大一点;对于动作识别这种精细场景,间隔要小。
多模态 Embedding
多模态 Embedding 是让图像和文字映射到同一个向量空间。你输入一张图,它输出一个向量;你输入一句话,它也输出一个向量。两个向量距离近,就说明图和语义相关。这是多模态检索的基础。
| 模态 | 输入 | 输出 |
|---|---|---|
| 图像 | 视频关键帧 | 视觉向量 |
| 文本 | 用户搜索词 | 文本向量 |
| 语音 | 视频语音转写 | 文本向量 |
多模态检索:用文字搜视频
有了多模态 Embedding,你就能做「用文字搜视频」:用户输入「猫在沙发上睡觉」,系统把这句话转成向量,去和所有视频关键帧的向量做相似度匹配,返回最相关的视频片段。这比传统的关键词搜索强太多——传统搜索搜不到画面内容,只能靠标题和标签。
# 多模态视频检索流程
# 1. 离线:对所有视频抽帧,每帧做多模态 Embedding,存入向量库
# 2. 在线:用户输入查询词,做多模态 Embedding
# 3. 在向量库中找最近邻,返回对应的视频片段时间戳
# 4. 用户点击结果,直接跳到视频对应位置
视频问答与摘要
多模态大模型还能直接做视频问答:你给它一段视频的关键帧加语音转写,问它「这个视频里主要讲了什么」,它就能生成摘要。这比人工写视频描述快得多,也是短视频平台自动生成内容标签的技术基础。
工程落地的成本控制
视频理解最大的成本是计算量。一个小时的视频抽帧就是几千张图,每张都过一遍多模态模型,成本不低。工程上要做分层:离线先跑便宜的模型做粗筛,把明显相关的片段挑出来;在线再用贵的多模态大模型做精排。别一开始就把所有视频都喂给大模型。
视频理解的工程核心是「少而精」——不是每一帧都要看,而是找到关键帧、用合适的模型、在合适的阶段做合适的事。