视频理解流水线:场景、问答、搜索


文档摘要

视频理解流水线:场景、问答、搜索 本节摘要:Twelve Labs 把 Marengo + Pegasus 产品化,VideoDB 提供了「视频的 CRUD API」,AI2 的 Molmo 2 开源了 VLM 检查点,Gemini 长上下文原生处理数小时视频,TimeLens-100K 定义了规模化时间定位。2026 年的流水线已定:场景分割、每场景字幕 + 嵌入、转录对齐、多向量索引、查询带 (start, end) 时间戳与帧预览作答。本节要求你摄取 100 小时视频,命中公开基准,并度量计数与动作类问题的幻觉。你会学到多向量索引(字幕/帧/转录)、RRF 融合、时间定位,以及计数幻觉这个已知硬骨头。 对应原课程:Phase 19 · Lesson 12 · (原英文 )。

视频理解流水线:场景、问答、搜索

本节摘要:Twelve Labs 把 Marengo + Pegasus 产品化,VideoDB 提供了「视频的 CRUD API」,AI2 的 Molmo 2 开源了 VLM 检查点,Gemini 长上下文原生处理数小时视频,TimeLens-100K 定义了规模化时间定位。2026 年的流水线已定:场景分割、每场景字幕 + 嵌入、转录对齐、多向量索引、查询带 (start, end) 时间戳与帧预览作答。本节要求你摄取 100 小时视频,命中公开基准,并度量计数与动作类问题的幻觉。你会学到多向量索引(字幕/帧/转录)、RRF 融合、时间定位,以及计数幻觉这个已知硬骨头。

对应原课程:Phase 19 · Lesson 12 · video-understanding-pipeline(原英文 phases/19-capstone-projects/12-video-understanding-pipeline/docs/en.md)。

学习目标

阅读完本节,你应当能够:

  1. 用 TransNetV2/PySceneDetect 做场景分割,产出 (scene_id, start_ms, end_ms, keyframe)。
  2. 用 VLM(Gemini 2.5 Pro/Qwen3-VL-Max/Molmo 2)给每场景生成字幕与帧嵌入。
  3. 用 Whisper-v3-turbo 跑词级时间戳 ASR,按场景切片转录。
  4. 在 Qdrant 多向量集合里同时存字幕嵌入、帧嵌入、转录嵌入。
  5. 查询时三路稠密检索 + RRF 融合 + TimeLens 风格时间定位精修窗口。
  6. 在 ActivityNet-QA/NeXT-GQA + 100 题自定义集上评估,并单独报告计数与动作类幻觉率。

一、问题与直觉

长视频 QA 是 2026 规模下最吃带宽的多模态问题。Gemini 2.5 Pro 能原生读 2 小时视频,但要把 100 小时视频摄入可查询语料,仍需一个场景级索引。生产形态合一:场景分割(TransNetV2 或 PySceneDetect)、用 VLM 每场景生成字幕与帧嵌入(Gemini 2.5、Qwen3-VL-Max 或 Molmo 2)、转录对齐(Whisper-v3-turbo 配词级时间戳),以及一个把字幕、帧嵌入、转录并存的多向量索引。查询管线带 (start, end) 时间戳与帧预览作答。

基准公开(ActivityNet-QA、NeXT-GQA)加你自己的 100 题自定义集。计数与动作类问题的幻觉是已知硬骨头;本节显式度量它。

二、从零实现

摄取时三条管线并行。场景分割把视频切成场景。VLM 字幕给每场景生成字幕,从关键帧产帧嵌入。ASR 对齐产词级时间戳。三路按 (scene_id, time range) 拼合。每个场景在多向量索引(Qdrant)里得三种向量:字幕嵌入、关键帧嵌入、转录嵌入。

查询时,自然语言问题对三种向量各发一次;结果用 RRF 合并;一个时间定位适配器(TimeLens 风格)在 top 场景内精修 (start, end) 窗口。VLM 合成器(Gemini 2.5 Pro 或 Qwen3-VL-Max)把查询 + top 场景 + 裁剪帧一起吃进去,带引用时间戳与帧预览作答。

RRF 融合(多排序列表合并的经典招):

def rrf(rank_lists, k=60): scores = {} for lst in rank_lists: # 字幕/帧/转录三路 for rank, doc in enumerate(lst): scores[doc] = scores.get(doc, 0) + 1.0 / (k + rank) return sorted(scores, key=scores.get, reverse=True)

幻觉度量要紧。计数(「多少人进了房间?」)与动作类(「厨师是先倒再搅吗?」)问题出了名地不可靠。要单独报告这类问题的准确率,与描述类问题分开。

三、架构与技术栈

  • 场景分割:TransNetV2(2024~26 SOTA)或 PySceneDetect。
  • ASR:Whisper-v3-turbo 经 faster-whisper,带词级时间戳。
  • VLM 字幕器 + 作答器:Gemini 2.5 Pro 或 Qwen3-VL-Max 或 Molmo 2。
  • 时间定位:TimeLens-100K 训练的适配器或 VideoITG。
  • 索引:Qdrant 多向量(字幕/帧/转录)。
  • UI:Next.js 15 配 HTML5 视频播放器与场景缩略图。
  • 评估:ActivityNet-QA、NeXT-GQA、自定义 100 题人工标注集。
  • 幻觉基准:计数与动作类子集,带人工标签。

四、可复用产物

outputs/skill-video-qa.md 是交付物。给定 YouTube URL 或上传视频,流水线索引场景,带时间戳引用作答。评分量表:

权重 标准 度量方式
25 时间定位 IoU 留出定位集上的交并比
20 QA 准确率 NeXT-GQA 与自定义 100 题
20 摄取吞吐 每美元处理的小时数
20 UI 与引用 UX 时间戳链接、缩略图条、跳转到帧
15 幻觉率 计数与动作类准确率单独报告
100

一次典型问答:

$ video-qa ask --url=https://youtube.com/watch?v=X "how many cars pass the intersection in the first minute?" [scene] 23 scenes detected [asr] transcript complete, 4m12s [index] 69 vectors written (23 scenes x 3) [query] top scene: scene 3 [01:32-01:54], confidence 0.84 [ground] refined window: [00:12-00:58] [synth] gemini 2.5 pro, 1.4s answer: 5 cars pass the intersection between 00:12 and 00:58. citations: [scene 3: 00:12-00:58] [frame preview at 00:14, 00:27, 00:44, 00:51, 00:57]

五、框架对比

Twelve Labs 的 Marengo + Pegasus 是商业标杆,端到端最完整;VideoDB 是「视频 CRUD API」参考,上手快;Gemini 长上下文是托管参考,原生读数小时视频但成本高。本节建议自建三管线并行:TransNetV2 做分割(开源 SOTA)、VLM 做字幕与作答、Qdrant 多向量做索引。关键差异化在「多向量」——把字幕、帧、转录三路嵌入并存,查询时 RRF 融合,比单帧嵌入检索召回显著更高,练习会让你量化这个回归。

六、练习

  1. 换字幕器:把 Gemini 2.5 Pro 换成 Qwen3-VL-Max 做字幕,在 50 场景人工评分样本上报告字幕质量差值。
  2. 退化单向量:把每场景帧嵌入退化成单池化向量(非多向量),度量检索回归。
  3. 计数严格模式:建一个「计数严格」模式——合成器把每个被数实例带时间戳抽出,用户点击验证,度量用户验证是否降幻觉。
  4. 摄取成本:跨三种 VLM 选择基准「每美元处理小时数」,找甜点。
  5. 说话人分离:加说话人分离转录——在音频上跑 pyannote,按说话人嵌入转录,演示「Alice 对 X 说了什么?」查询。

本节要点回顾

  1. 形态已定:场景分割 + 每场景字幕/帧嵌入 + 转录对齐 + 多向量索引 + 时间戳作答。
  2. 三管线并行:场景分割、VLM 字幕、ASR,按 (scene_id, time) 拼合。
  3. 多向量索引:Qdrant 三种命名向量(字幕/帧/转录)并存。
  4. 三路 RRF:查询对三向量各发一次,RRF 合并,top-k 场景。
  5. 时间定位:TimeLens 风格适配器在场景内精修 (start, end) 窗口。
  6. 计数幻觉是硬骨头:计数与动作类问题单独报告准确率。

下一节,我们转向「MCP 服务」——构建一个带注册表的模型上下文协议服务器。


发布者: 作者: Rohit Gupta 转发
评论区 (0)
U