视频语言模型:时间 token 与时序定位


文档摘要

视频语言模型:时间 token 与时序定位 本节摘要:视频不是一堆照片。5 秒片段有因果顺序、动作动词、事件时序,是图像模型无法表达的。Video-LLaMA(Zhang 等人,2023 年 6 月)发布了第一个带音视频定位的开源视频-LLM。VideoChat 与 Video-LLaVA 把这个模式规模化。到 2025 年,Qwen2.5-VL 的 TMRoPE 闭合了与前沿闭源模型的差距。每个系统用不同方式解决时间 token——每片段一个 Q-former、每帧拼接池化、每 token 一个 TMRoPE。本节读这些模式,搭一个均匀 vs 动态帧采样器,并在时序定位任务上评估。 学习目标 阅读完本节,你应当能够: 解释为什么时间位置编码会独立于视觉编码器改变视频 VLM 的性能。

视频语言模型:时间 token 与时序定位

本节摘要:视频不是一堆照片。5 秒片段有因果顺序、动作动词、事件时序,是图像模型无法表达的。Video-LLaMA(Zhang 等人,2023 年 6 月)发布了第一个带音视频定位的开源视频-LLM。VideoChat 与 Video-LLaVA 把这个模式规模化。到 2025 年,Qwen2.5-VL 的 TMRoPE 闭合了与前沿闭源模型的差距。每个系统用不同方式解决时间 token——每片段一个 Q-former、每帧拼接池化、每 token 一个 TMRoPE。本节读这些模式,搭一个均匀 vs 动态帧采样器,并在时序定位任务上评估。

学习目标

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

  1. 解释为什么时间位置编码会独立于视觉编码器改变视频 VLM 的性能。
  2. 在「每秒 token 数 vs 定位精度」上,对比均匀、动态 FPS、事件驱动三种帧采样。
  3. 描述每片段 Q-former(Video-LLaMA)、每帧池化(Video-LLaVA)、每 token M-RoPE(Qwen2.5-VL)三种设计。
  4. 说出四个视频基准:VideoMME、TempCompass、EgoSchema、Video-MMMU。

一、问题与直觉

1 分钟、30 FPS 的视频是 1800 帧。每帧 196 个视觉 token(ViT-B @ 224),共 35.2 万 token——比 2024 年代任何 LLM 上下文都大。

三种压缩策略:

  1. 子采样帧(按内容 1~8 FPS)。
  2. 激进池化每帧 patch token(3×3 或 4×4 双线性池化)。
  3. 用 Q-former 压缩(16 帧片段进、64 token 出)。

每种权衡不同:子采样丢时间细节,池化丢空间细节,Q-former 两者都丢一点但省 token。

时间位置编码是另一轴:模型怎么知道第 5 帧在第 6 帧之前?选项包括简单一维时间 RoPE(Video-LLaMA)、可学习时间嵌入(Video-LLaVA)、TMRoPE(Qwen2.5-VL,完整三维)。

Video-LLaMA:每片段 Q-former + 音频分支

Video-LLaMA(2023)是第一个开源视频-LLM。架构:

  • 16 帧片段、2 FPS(即 8 秒)。
  • 逐帧 ViT 特征 → 视频 Q-former(交叉关注全部 16 帧)→ 32 个可学习 query → LLM。
  • 并行音频分支:波形 → ImageBind 音频编码器 → 音频 Q-former → 32 query → LLM。

强项:音视频联合推理。弱项:固定片段长度,无法任意时间定位。

VideoChat 与 Video-LLaVA

VideoChat 保留 Video-LLaMA 思路但去掉音频并简化。Video-LLaVA(Lin 等人,2023)在图像与视频帧上训练单一视觉编码器(「投影前对齐」),给出统一表示。两者都是冻结 CLIP 编码器 + MLP + LLM。

两者都不处理长视频,都是 8~16 帧系统。

Qwen2.5-VL 与 TMRoPE

Qwen2.5-VL 引入 TMRoPE——时间-模态旋转位置嵌入。每个 patch token 携带 (t, h, w) 位置,其中 t 是真实时间戳(不是帧索引)。

与简单时间嵌入的关键差异:

  • 绝对时间,非索引:模型看到「在 4.2 秒」,而非「在第 15 帧」。
  • 每 token 旋转,非每片段:每个视觉 token 按自己的时间戳独立旋转。
  • 兼容动态 FPS:这里 2 FPS、那里 4 FPS,TMRoPE 原生处理不均匀间距。

TMRoPE 使「猫在第几秒跳?」这类查询成为可能。模型能输出「在 4.2 秒」。Video-LLaMA 只能说「片段早期」。

帧采样策略

  • 均匀:在时长上均匀采 N 帧。简单,丢运动峰值。
  • 动态 FPS:按运动强度自适应采样。光流或帧差为高运动段采更密。Qwen2.5-VL 在此上训练。
  • 事件驱动:跑轻量检测器,在动作发生处多采。VideoAgent 用。
  • 关键帧 + 上下文:在镜头边界采,加几帧相邻。影视内容用。

每帧池化

1 FPS、每帧 576 token,5 分钟片段是 17.28 万 token。Qwen2.5-VL-72B 的 128k 上下文能扛但贵。

3×3 双线性池化降到每帧 64 token → 5 分钟 1.92 万 token。大多数任务的甜点。

agent 工作流(空间细节不那么重要)可更激进(6×6 → 每帧 16 token)。

四个视频基准

  • VideoMME:综合视频理解,短+中+长。
  • TempCompass:细粒度时间推理,「之前/之后」问题。
  • EgoSchema:长时程第一人称视频。
  • Video-MMMU:多模态多学科视频问题。

一次完整的视频-VLM 评估要打全四个。它们压不同轴——TempCompass 全关于顺序,EgoSchema 关于 3 分钟以上推理,VideoMME 跨时长。

定位输出格式

时间定位的输出格式:

  • 自由文本:「猫在 4 秒附近跳。」易解析但不精确。
  • 结构化 JSON:{"event": "jump", "start": 4.1, "end": 4.3}。Qwen2.5-VL 训这个。
  • 基于 token:特殊 <time>4.1</time> token 与答案交错。Qwen2.5-VL 的内部格式。

基于 token 对下游最精确,Qwen2.5-VL 的 JSON 输出直接可解析。

2026 最佳实践

2026 年视频 VLM:

  • 编码器:SigLIP 2 配 M-RoPE 或 TMRoPE(Qwen2.5-VL)。
  • 帧采样:动态 FPS(按运动 1~4),设帧数上限。
  • 每帧池化:3×3 双线性。
  • 输出:带时间与事件字段的结构化 JSON。
  • 基准:通用打 VideoMME + TempCompass,长时程打 EgoSchema。

二、从零实现

code/main.py 含:

  • 均匀与动态 FPS 帧采样器。
  • 一个玩具时序定位评估器:给定时间 T 的「真值」事件与模型输出,按容差打分。
  • 跨 Video-LLaMA(16 帧、Q-former)、Video-LLaVA(8 帧、MLP)、Qwen2.5-VL(动态 FPS + TMRoPE)的对比。

动态 FPS 采样

def dynamic_fps_sampler(video, duration, motion_curve, max_frames=32): # motion_curve[i] = 第 i 秒的运动强度 total_motion = sum(motion_curve) # 按运动强度分配帧数 frames = [] for sec in range(int(duration)): n = max(1, int(max_frames * motion_curve[sec] / total_motion)) frames.extend(sample_frames_in_second(video, sec, n)) return frames[:max_frames]

时序定位评估

def evaluate_grounding(pred_start, pred_end, gt_start, gt_end, tolerance=0.5): # IoU 风格: 预测区间与真值区间的交并比 inter = max(0, min(pred_end, gt_end) - max(pred_start, gt_start)) union = max(pred_end, gt_end) - min(pred_start, gt_start) iou = inter / union if union > 0 else 0 return {"iou": iou, "within_tolerance": abs(pred_start - gt_start) < tolerance}

💡 时间编码为何独立于编码器:同样的 ViT、同样的帧,只换时间位置编码(1D RoPE → TMRoPE),TempCompass 也能涨几分。因为模型对「4.2 秒」与「第 15 帧」的内部表示完全不同——绝对时间让跨采样率的推理一致。

TMRoPE 旋转

def tmrope(q, t_absolute, h, w, d): # t 用真实秒数, 非帧索引 — 跨采样率一致 band = d // 3 return mrope_rotate(q, t=t_absolute, h=h, w=w) # 动态 FPS 下不均匀间距天然处理

三、框架对比

  • Video-LLaMA:16 帧片段 + 视频 Q-former + 音频分支,首个开源视频-LLM,固定片段无任意定位。
  • VideoChat/Video-LLaVA:简化,「投影前对齐」统一图像与视频表示,8~16 帧不处理长视频。
  • Qwen2.5-VL(TMRoPE):绝对时间戳 + 每 token 旋转 + 动态 FPS,支持「第几秒」定位。
  • VILA-1.5:交错视频 token,多图/视频统一。
  • VideoAgent:事件驱动采样,轻量检测器定位动作。

工程取舍:要任意时间定位用 Qwen2.5-VL(TMRoPE);要音视频联合用 Video-LLaMA;要统一图/视频表示用 Video-LLaVA;要事件精准用 VideoAgent。

四、可复用产物

本节产出 outputs/skill-video-vlm-frame-planner.md。给定视频任务(监控、动作识别、时序定位、摘要),它挑帧采样器、池化因子、输出格式与预期精度档。

五、练习

  1. 采样选择:为 3 分钟烹饪演示选均匀 vs 动态 FPS,用 token 数论证。

  2. TMRoPE 增量:TMRoPE 相对简单时间嵌入表,具体加了什么?

  3. JSON schema:写一个 VLM 能学会发出的时序定位 JSON schema,含错误情况。

  4. 读论文:读 Video-LLaVA 第 3 节「投影前对齐」,为什么这比分别训图像与视频编码器更好?

  5. 基准差距:查 VideoMME 排行榜,2026 年顶级开源与顶级闭源的差距是多少?差距里多少归因于时间编码 vs 基座 LLM 规模?

本节要点回顾

  1. 视频 ≠ 照片堆:有因果顺序、动作、事件时序,图像模型无法表达。
  2. 三种压缩:子采样(丢时间)、池化(丢空间)、Q-former(都丢一点)。
  3. 时间编码独立有效:同 ViT 同帧,只换时间编码也能涨分。
  4. Video-LLaMA:16 帧 Q-former + 音频分支,首个开源,固定片段无任意定位。
  5. Video-LLaVA:投影前对齐,统一图/视频表示,8~16 帧不处理长视频。
  6. TMRoPE:绝对时间戳、每 token 旋转、兼容动态 FPS,支持「第几秒」定位。
  7. 帧采样:均匀(丢峰值)、动态 FPS(运动自适应)、事件驱动(检测器)、关键帧(镜头边界)。
  8. 池化甜点:3×3 双线性每帧 64 token,5 分钟约 1.92 万 token。
  9. 四基准:VideoMME(综合)、TempCompass(顺序)、EgoSchema(长时程)、Video-MMMU(多学科)。
  10. 2026 实践:SigLIP2+TMRoPE、动态 FPS、3×3 池化、JSON 时间输出。

下一节,我们将进入长视频——百万 token 理解,处理整部电影、整场讲座,需要分层记忆、token 合并与检索增强,是上下文工程在多模态的极致考验。


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