视频语义检索怎么回事

Twelve Labs 这一类“视频语义检索模型”在做什么?

1.. 先把视频拆成一堆“可啃的小块”

典型做法:

    1. 时间上采样

      • 把长视频按时间切片,比如每 1~2 秒抽一小段(多帧)。

      • 对语音部分做 VAD(Voice Activity Detection),把“有人说话”的片段切出来。

    2. 空间上预处理

      • 对每一小段选几帧关键帧,送进图像 / 视频编码器(Vision Transformer、时序 Transformer 或 3D CNN )。

      • 对画面中的人脸、文字(OCR)、UI 元素(按钮、输入框、对话框)做额外检测,这些将作为后面高权重信号。

结果:原本一个一个 MP4,变成了很多“时间片段”,每个片段里有:

    • 若干帧图像

    • 对应的音频片段

    • 可能还有屏幕上的文本 / UI 结构


2. 把“谁在说话 / 谁出现在画面里”变成向量

这里其实就是多模态联合编码,套路非常 CLIP-ish:

    1. 视觉侧

      • 用预训练视觉编码器(ViT + 时序模块)把每个时间片段编码成一个向量v。

      • 如果要知道“谁”,会叠加一个人脸识别模型,把同一个人跨帧对齐;对于 PPT 页、logo 等,会用专门的 OCR + layout 识别。

    2. 音频侧

      • 语音 → ASR 得到文本;再用文本编码器(类似 BERT / LLM embedding)得到语义向量。

      • 同时保留说话人 embedding(speaker embedding),标记“哪个人”在说话。

    3. 文本侧(字幕、PPT 内容)

      • 把字幕、屏幕上的文字、PPT OCR 出来的文本,统统丢给同一个文本编码器,得到向量 t

    4. 多模态融合

      • 常见做法:把同一时间片段的视觉向量 v、音频文本向量和屏幕文本向量拼在一起,用一个小 Transformer 做融合,得到一个统一的视频片段 embedding z

      • 这一步是“统一向量空间”的关键:所有模态都映射到同一个 d 维空间里,语义对齐。

这时,每几秒视频就变成一个向量,可以把它看成一颗“视频 token”。


3. 训练:让“查询”和“片段向量”在同一语义空间对齐

怎么做到“自然语言一问,就能在长视频里精确跳到某一片段”?

    1. 构造正负样本(对比学习)

      • 正样本:用户查询(或人工写的描述) ↔ 真正相关的视频片段。

      • 负样本:同一个 batch 里其他不相关片段统统当负例。

      • loss 就是 CLIP 那套 InfoNCE:让相关的 query–clip 距离更近,不相关的更远。

    2. 训练查询编码器

      • 再搞一个文本编码器 Eq(query)E_q(\text{query}),把自然语言检索语句编码成向量 qq

      • 训练时,强迫 qq 靠近正确片段的 z+z^+,远离同批里的其他 z−z^-

    3. 无监督 / 弱监督增强

      • 对于没有人工标 query 的视频,可以用标题、描述、章节标题、自动摘要等粗粒度文本作为弱监督,使得整段视频的 embedding 跟这些文本对齐。

      • 再加上一些“自监督任务”:例如预测下一片段、判断两个片段是否相邻、是否同一场景等等,让模型对时间结构更敏感。

训练完之后就得到:

一个统一空间:自然语言 query 向量和“几秒钟的视频片段向量”可以直接算相似度。

4. 语义在系统里是怎么用的?

有了那串视频语义向量:

    1. 检索

      • 用户问:“主持人第一次提到价格折扣是哪一段?”

      • 把 query 编成 qq,在所有 ziz_i 里算相似度,top-k 就是候选片段,直接 seek 到对应时间位置播放。

      • 这就是“可检索的视频 token”。

    2. 自动摘要 / 分章节

      • 用这些片段向量做聚类:相似 ziz_i 合并成“主题段落”。

      • 每个簇再送进 LLM 总结,就变成“这一分钟大概在讲什么”。

      • 拼起来就是自动生成的大纲 / 章节标题。

    3. 时间轴上的“语义字幕条”

      • UI 上可以把每个片段的主题、主要人物、动作用文字标出来,让用户在时间轴上“按含义快进”——这就是你那句“加一层语义字幕”的产品形态。

小结

像 Twelve Labs 这一类的视频理解系统,做的事情大致是:先把长视频切成一小段一小段,每一段同时看画面、听声音、读字幕和屏幕上的文字,再用一个多模态编码器把这些信息“压”成一个向量。可以把这个向量理解成几秒钟视频的“语义指纹”:谁在说话、画面上是谁、在做什么动作、PPT 翻到哪一页,都被揉进了这一串数字里。整条视频就变成了一串这样的“视频 token”,后端只要拿自然语言问题来跟它们对比相似度,就能做检索、分章节甚至自动生成摘要。

 

 

发布者

立委

立委博士,多模态大模型应用咨询师。出门问问大模型团队前工程副总裁,聚焦大模型及其AIGC应用。Netbase前首席科学家10年,期间指挥研发了18种语言的理解和应用系统,鲁棒、线速,scale up to 社会媒体大数据,语义落地到舆情挖掘产品,成为美国NLP工业落地的领跑者。Cymfony前研发副总八年,曾荣获第一届问答系统第一名(TREC-8 QA Track),并赢得17个小企业创新研究的信息抽取项目(PI for 17 SBIRs)。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理