【Jev】VideoJev: System One Model for Video Understanding and Interaction

note

  • VideoJev:Qwen3.5 + Scoring Head + 两阶段多任务 SFT + 视频 KV Cache 复用
  • VideoJev 把传统视频大模型的「生成式问答」,改成了「直接对候选答案或视频时间位置打分」,并通过视频缓存和多 Query 联合推理降低时延。它比一般的 Yes/No Decision 模型更值得关注的一点是:把视频时间定位(Temporal Grounding)和视频多选问答(Video QA)统一成同一种候选评分机制。
  • 三个贡献:
    • 任务统一:用共享 Scoring Head 同时处理时间定位和视频多选问答,而不只是普通分类。
    • 视频计算复用:通过 Cached / Joint Inference 解决同一视频被反复提问的计算浪费。
    • 针对视频时序定位的训练设计:BCE + SoftIoU,兼顾逐时间位置判断与完整事件区间。
  • 研究动机: 传统 Video-LLM 依赖自回归生成答案,存在推理时延高、重复处理视频等问题。
  • 核心方法:
    • 统一决策架构: 基于 Qwen3.5 增加 PointerHead(两个 Linear + QK 点积),将视频时间定位和多选问答统一为 Query-Candidate 匹配打分。
    • 两阶段训练: 先冻结 Backbone 训练 Head,再联合微调语言 Backbone;时间定位采用 BCE + SoftIoU,多选问答采用 CE。
    • 高效推理: 支持视频 KV Cache 复用及多 Query 联合推理,避免重复编码与自回归生成。
  • 实验结果: 相同训练数据下,相比 Qwen3.5 AR SFT,视频问答准确率由 72.8% 提升至 74.7%,时间定位 mIoU 由 64.1 提升至 65.4。

文章目录

  • note
    • 一、研究动机
    • 二、论文核心
      • [1. 统一架构:共享打分头](#1. 统一架构:共享打分头)
      • [2. 时序定位:从"选区间"到"拼片段"](#2. 时序定位:从"选区间"到"拼片段")
      • [3. 消除位置偏见](#3. 消除位置偏见)
      • [4. 可复用的视觉计算(本文效率核心)](#4. 可复用的视觉计算(本文效率核心))
      • [5. 训练方案](#5. 训练方案)
    • 三、实验结果
      • [时序定位(3 个 benchmark)](#时序定位(3 个 benchmark))
      • [多选视频问答(4 个 benchmark)](#多选视频问答(4 个 benchmark))
      • [与自回归微调的受控对比(相同数据 + 相同设置)](#与自回归微调的受控对比(相同数据 + 相同设置))
    • 四、分析

一、研究动机

VideoJev: System One Model for Video Understanding and Interaction

⚡️首个视频理解Jev模型,大幅度提高精度的同时提速3-100倍

🔗https://huggingface.co/papers/2610.18615

🌟https://github.com/MCG-NJU/VideoJEV

概括:VideoJev 把"看视频做决策"这件事,从"逐字生成答案"改成了"直接给选项打分",让视觉智能体既能理解语义,又能毫秒级响应。

视觉智能体的核心痛点不是"看不懂",而是"反应慢"。

现有方案存在一条难以弥合的鸿沟:

路线 优势 致命短板
判别式视觉模型 预测高效 依赖任务特定的模型设计、标签空间固定
视频多模态大模型(MLLM) 语义理解广、语言接口灵活 决策必须靠逐 token 自回归生成------生成时间戳或答案文本,哪怕最终输出只是一个紧凑的结构化选择

而智能体交互的真实场景是:同一个视频,连续追问。一个做饭助手要先确认"盐加了没",再决定"下一步加什么"。每一次追问都重新编码视频、重新生成一遍,计算浪费极其严重。

这正是 System One 范式的用武之地------Jev 已经证明,可以输出"类型化的概率判断"供软件直接使用,无需逐 token 生成。但 Jev 面向的是图像,视频还多了一层要求:时间结构 ,以及跨查询共享昂贵的视觉上下文。

核心洞察:把视频理解统一成"结构化判断"(structured judgment),就能在不牺牲语义灵活性的前提下,获得高效、可复用的决策接口。


二、论文核心

VideoJev 围绕两条原则构建:直接候选打分 + 可复用的视觉计算。

1. 统一架构:共享打分头

关键改造(对预训练 MLLM 动刀):

  • 删掉最后的 MLP 层和语言模型输出头
  • 新增 两个特殊 token:<|option_end|>(候选读出)和 <|decide|>(查询级决策读出),初始化自 <|im_end|>
  • 两个线性投影把隐状态映射到 512 维并归一化,用余弦相似度算 logit:

s i = 10   u ⊤ v i + b s_i = 10 \, u^\top v_i + b si=10u⊤vi+b

固定缩放系数 10 + 可学习偏置 b,控制输出 logit 的量级。

一个头,两种任务,靠候选与输出规则区分:

任务 候选 监督方式 输出
时序定位(Temporal Grounding) 时间戳文本区间 多标签二分类 BCE + 软 IoU 损失 解码出连续事件片段
多选视频问答(Video QA) 答案文本选项 交叉熵(softmax) 最高概率选项

对应头的代码:

python 复制代码
class PointerHead(nn.Module):
    """One query/key similarity per native two-frame temporal group."""
    def __init__(self, hidden, dimension=256, head_norm='none', *,
                 similarity='dot_product', logit_scale=10.0):
        super().__init__()
        if head_norm not in ('none', 'layernorm'):
            raise ValueError('Unknown pointer head normalization')
        if similarity not in ('dot_product', 'cosine'):
            raise ValueError('Unknown pointer head similarity')
        if not math.isfinite(logit_scale) or logit_scale <= 0:
            raise ValueError('Pointer head logit scale must be finite and positive')
        self.similarity = similarity
        self.head_norm = head_norm
        self.q = nn.Linear(hidden, dimension)
        self.k = nn.Linear(hidden, dimension)
        self.bias = nn.Parameter(torch.zeros(()))
        self.dimension = dimension
        self.scale = dimension ** -.5 if similarity == 'dot_product' else float(logit_scale)
        nn.init.normal_(self.q.weight, std=.005)
        nn.init.normal_(self.k.weight, std=.005)
        nn.init.zeros_(self.q.bias)
        nn.init.zeros_(self.k.bias)
        # Keep the historical initialization/RNG order and state keys unchanged
        # when disabled. Each branch has its own learnable affine parameters.
        if head_norm == 'layernorm':
            self.q_norm = nn.LayerNorm(hidden, eps=1e-5, elementwise_affine=True)
            self.k_norm = nn.LayerNorm(hidden, eps=1e-5, elementwise_affine=True)

    def forward(self, pairs, query):
        # FP32 scoring, including under AMP.
        if self.head_norm == 'layernorm':
            keys = self.k(self.k_norm(pairs.float()))
            q = self.q(self.q_norm(query.float()))
        else:
            keys = self.k(pairs.float())
            q = self.q(query.float())
        if self.similarity == 'cosine':
            # Normalize the projected vectors, not the incoming LLM features.
            # The scale is fixed; the existing scalar bias remains trainable.
            keys = nn.functional.normalize(keys, dim=-1, eps=1e-6)
            q = nn.functional.normalize(q, dim=-1, eps=1e-6)
        return torch.einsum('bgd,bd->bg', keys, q) * self.scale + self.bias

2. 时序定位:从"选区间"到"拼片段"

  • 骨干网络对时间做 2 倍压缩,每两帧一组,得到 K 个候选区间
  • BCE 损失监督每个区间是否落在标注事件内(多标签,允许多个区间同属一个事件)
  • 软 IoU 损失(按区间时长加权)显式奖励"覆盖完整事件",弥补 BCE 只看局部不看病程整体的缺陷
  • 解码:用固定阈值 τ=0.25 调整 logit,Kadane 算法 O(K) 时间找出和最大的连续非空区间

3. 消除位置偏见

训练时对不依赖选项位置的题目 做可复现、与答案无关的排列打乱并更新正确项索引;涉及选项位置或前序轮次的题目保留原顺序。推理时按给定顺序,取最高 p i p_i pi。

4. 可复用的视觉计算(本文效率核心)

因果语言模型天然让视频前缀独立于后续查询,因此:

  • Cached 推理:视频编码 + prefill 一次,后续查询从缓存分支,只需跑查询/候选/读出 token
  • Joint 推理 :多个查询及其候选列表共用一个视频前缀,各带独立 <|decide|>,一次前向拿全部分数
  • 训练同款布局:同视频的多查询拼接,共享视频计算

5. 训练方案

  • 骨干:Qwen3.5-4B(稠密)与 Qwen3.6-35B-A3B(MoE)
  • 数据 :
    • 时序定位:TimeLens-100K + TimeLens2-93K,区间转候选级标签
    • 多选 QA:约 24 万题 / 1.9 万视频的自建语料,涵盖游戏、体育、烹饪、音乐舞蹈、户外、手工,视频 4 分钟至近 2 小时
  • 两阶段训练:先冻结骨干、训新打分头(让打分头在稳定表征空间里起步,类比 MLLM 的 projector 对齐),再微调语言骨干

Video-LLM 时间定位训练流程

阶段 训练参数 Loss
Stage 1:Head Warmup 只训练新增 Scoring Head,冻结 Backbone Grounding:BCE;QA:CE
Stage 2:Joint Training 训练语言 Backbone、标记 Embedding 和 Head,视觉编码器保持冻结 Grounding:BCE + 2×SoftIoU;QA:CE

训练数据包括:

  • TimeLens-100K
  • TimeLens2-93K
  • 团队整理的约 19K 视频 、240K 道多选问题

这里最有意义的是 SoftIoU Loss:除了判断每个时间位置是否属于事件,还直接优化预测时间段与 GT 时间段的整体重合程度。论文消融显示,加入 SoftIoU 后:

  • Grounding 平均 mIoU:60.7 → 65.3
  • 提升 4.6 个百分点

三、实验结果

时序定位(3 个 benchmark)

相对各自骨干的 Instruct 模式 ,VideoJev-4B 与 VideoJev-35B-A3B 的平均 mIoU 分别提升 6.7 / 10.8 点 ,实测推理加速 2.8--3.1×。

多选视频问答(4 个 benchmark)

两个模型性能与其骨干的 Thinking 模式相当 ,同时推理加速超过 100×。(计时生成式基线同样复用了视频前缀,以保证对比公平。)

与自回归微调的受控对比(相同数据 + 相同设置)

模型 平均 grounding mIoU 优势 平均 QA 分数优势
VideoJev-4B vs 自回归微调 +1.3 +1.9

这直接证明:性能增益来自"直接决策学习"本身,而非单纯数据红利。


四、分析

强在哪里

  1. 范式迁移做得干净。用"候选打分 + 输出规则"这一个杠杆撬动了两类任务,既不牺牲 MLLM 的语义先验,又彻底绕开生成开销。
  2. 效率与质量兼得,且可组合。Cached 适合流式追问,Joint 适合批量查询,同一套视频前缀机制在训练和推理对齐,是真正的系统工程闭环。
  3. 消融有说服力。与自回归微调的等数据对照,把"架构收益"从"数据收益"里剥离出来,论证链完整。

需要留意的边界

  1. 任务形式受限。统一接口目前只覆盖"时序定位 + 多选",开放生成(描述、长回答、工具调用)仍需另想办法,作者也把"开放行为"寄托于"结构化判断的组合"而非直接生成。
  2. 阈值与解码依赖超参。τ=0.25、窗口 1、Kadane 解码都是经验设定,在极长视频或稀疏事件上是否鲁棒,需更多 ablation。
  3. 位置打乱的副作用值得审视。多数题打乱是好事,但"依赖选项位置"的题需保留原序------这个判定本身若有误,就会成为隐患。
  4. 数据透明度。24 万 QA 为内部自建语料,外部难以复现与横向对比;骨干版本(Qwen3.5/3.6)也较新,需留意其官方基线是否对等。
  5. 速度数字的口径。100× 是与 Thinking 模式比,而非与 Instruct 或纯生成比;Cached/Joint 的加速还依赖命中率与批大小,落地时实测为准。

总体判断 :这是一篇"动机清晰---设计统一---工程扎实"的工作,核心价值不在于提出新损失或新模块,而在于重新定义了视频智能体的决策接口------把昂贵的理解变成可缓存、可批处理的打分,让视频 MLLM 从"会回答"走向"能干活"。

相关推荐
想会飞的蒲公英5 天前
Jev 模型详解:不生成文字的决策模型,接口、置信度与评测边界
人工智能·jev
山顶夕景6 天前
【CVPR2026】VideoSSR: Video Self-Supervised Reinforcement Learning
视频理解·视频问答·多模态理解·grpo·rlvr
Rocky Ding*8 天前
VideoChat3 深度解析:视频理解的效率,来自时空压缩与主动感知的共同设计
论文阅读·人工智能·深度学习·机器学习·aigc·ai-native·视频理解
loong_XL9 天前
决策模型做内容安全检测:从踩坑到上线
数据库·安全·jev·决策模型
山顶夕景10 天前
【VLM】DeepSeek-V4.1-Flash: Pushing the Limits of KV Cache Compression
多模态·kv·vlm·infra
小毕超11 天前
性能比肩闭源 Jev 1.13,开源决策模型 StartLux-Decision 介绍及本地部署 支持文本/图片决策
jev·决策模型·startdecision
liuchangng12 天前
类Jev项目Kev从入门到实战(6):Jev / Kev / Laya 对比
人工智能·jev·kev
山顶夕景12 天前
【VLA】Qwen-VLA:VLM+DiT统一多模态理解与连续机器人动作生成
机器人·多模态·扩散模型·具身智能·vla·dit·vlm
唯鹿13 天前
Jev初体验记录
人工智能·ai·jev