跳转至

Qwen3-VL系列是如何理解视频时序的?

来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247484721&idx=1&sn=47b5f3d1a24b44f14745b1e275525217&chksm=f01eb648c7693f5ed2ee9e12bdaaa29748934fb25447a3027d7e2e6e89d9d576603efed496b6#rd

此前最困扰的一个问题就是, - 纯VL模型通过一张张图片排列的方式,和所谓能原生理解视频的模型,区别是什么?

  • 视频模型对视频的时序信息的理解尺度是怎样的?是精准到每帧?亦或是只能感知到一秒一秒?

01 —

一个简单的预实验

带着这样的疑惑,我开展了以下分析和实验:

使用程序自动生成一些这样的简单的小视频,视频中的小球原本是黄色,某刻开始变成洋红色并持续一会儿,最后变回黄色。 然后将这个视频交给Qwen3.5-max模型让他进行判断哪段区间是洋红色。 具体而言,分别让模型判断帧区间和时间区间。 采用了FPS 0.5、1、2、4分别进行实验。 结果惊人的一致! 时间区间命中准确率是100%,而帧区间是0%。

02 —

详细机制分析

就着简单的实验结果,对Qwen实际机制进行分析很快就找到了答案: Qwen3.5-9B/chat_template.jinja: 视频最初表示为 <|vision_start|><|video_pad|><|vision_end|>。

img

transformers/models/qwen3_vl/processing_qwen3_vl.py: 计算两帧平均时间,并生成加视觉占位块。

img

最后得到的视频图像占位结构类似于这样: <|vision_start|> <0.1 seconds><|vision_start|><|video_pad|> × 64<|vision_end|> <0.6 seconds><|vision_start|><|video_pad|> × 64<|vision_end|> ... <19.6 seconds><|vision_start|><|video_pad|> × 64<|vision_end|> <|vision_end|>

如果希望模型回答帧区间而不是时间区间,他的回答会有这样的一个思考过程: 1. 模型看到事件(洋红色)出现在标为约 9.1、9.6、10.1、10.6 秒的时间视觉块,11.1 秒已经恢复黄色; 2. 它注意到呈现给 Decoder 的视觉块相隔约 0.5 秒,而用户要求的原始采样率是 4 fps; 3. 它把洋红视觉块识别为第 19–22 个 temporal group,第 23 组恢复黄色; 4. 最终没有把 temporal group 编号直接当作采样帧号,而是遵守用户要求的 4 fps 原始采样帧坐标,输出 [37,45)。 实际上是多进行了好几步复杂推理

03 —

总结

普通VL逐帧堆叠 VS Qwen原生视频时序模型:

1. 普通图片式VL模型(逐帧排列)

核心逻辑:将视频拆分为独立图片,按顺序拼接输入,无专属时序编码、无时间锚点。模型仅能依靠图片序列顺序模糊感知先后关系,无法精准判断时间长度、帧间隔、事件精准发生时段,时序信息感知能力极弱,且完全无法适配动态帧率视频。 普通VL逐帧模型:只有空间顺序感知,无真实时间概念,不懂“间隔多久、持续几秒”,仅能识别画面变化顺序;

2. Qwen3.5原生视频理解模型(在时间戳上经过了专门的预训练)

核心逻辑:时间戳优先的结构化时序建模,拥有专属视频时序编码机制。模型的视觉内容与秒级时间戳强绑定,可精准捕捉事件的起止时间、持续时长、时序先后关系,具备真正的视频动态理解能力,而非静态图片的顺序拼接。

❌ 非精准逐帧级:不绑定原始物理帧,无法精准对应每一个采样帧; ✅ 精准时间切片级:以自定义均匀时间单元为感知粒度,可精准识别秒级甚至亚秒级事件起止时间,时间维度精度极高;

            预览时标签不可点




































<div class="