OmniSTVG: Toward Spatio-Temporal Omni-Object Video Grounding¶
会议: ICLR 2026
OpenReview: https://openreview.net/forum?id=azcQJtcYTE
代码: https://jellyyao3000.github.io/OmniSTVG/ (项目页)
领域: 视频理解 / 多模态视频定位
关键词: 时空视频定位, 多目标定位, BOSTVG, OmniTube, Transformer
一句话总结¶
本文把经典「时空视频定位(STVG)只定位单个目标」的任务扩展成 OmniSTVG——定位文本查询里提到的所有目标(含交互对象),配套提出首个万级基准 BOSTVG(10,018 视频、287 类、目标数 1~10)和一个基于 DETR 思路的方法 OmniTube,在所有指标上超过被改造适配的现有 STVG 方法。
研究背景与动机¶
领域现状:时空视频定位(Spatio-Temporal Video Grounding, STVG)给定一句自由形式的文本查询,要在视频里把「目标」在空间(每帧 bounding box)和时间(起止时刻)上都定位出来,输出是一条时空管道(tube)。近年主流方法借鉴 DETR,走单阶段 Transformer 路线,端到端直接预测一条 tube,效果优于早期「先检测候选框再匹配」的两阶段做法。
现有痛点:现有 STVG 一次只定位查询里的单个目标。但现实里一句查询往往涉及多个目标——例如「大象踩上跷跷板时,拿着篮球的男人跳起来」里有大象和男人两个对象。两个问题随之而来:其一,只能定位单目标,多目标场景下要把模型反复跑多次,计算量翻倍、缺乏可扩展性;其二,目标往往不是孤立存在,而是与其他对象交互,现有方法忽略这些「交互对象」,丢掉了理解事件所需的上下文。
核心矛盾:STVG 的输出结构被「单目标 tube」这个先验框死了——它假设一句查询只对应一个被定位对象。而真正的视频理解需要把查询里每一个被提及的对象(无论数量、无论类别、含交互方)都同时定位出来。
本文目标:定义并解决一个新任务——把查询里提到的所有目标在时空上全部定位,每个对象输出一条独立的时空 tube,对象数量可任意(1 到多个),类别可不同。
切入角度:作者类比 Segment Anything(SA)——SA 是「分割图像里任意区域」,本文是「定位未剪辑视频里查询提到的任意对象」,把「全覆盖」这种思路迁移到视频时空定位。
核心 idea:在 DETR 式解码器里为每帧学习多组对象 query(而非单组),让模型一次性 ground 出所有目标;并用文本去引导从视频里挑出目标相关特征来生成 query,最后用简单的匹配+过滤策略把跨帧检测结果串成每个目标的时空 tube。
方法详解¶
整体框架¶
OmniSTVG 要解决的是「一句查询、多个目标、各自一条时空 tube」。本文方法 OmniTube 沿用 DETR 的 encoder-decoder 思路,把整条流水线拆成三块:先用多模态编码器把视频的 2D 外观、3D 运动和文本三路特征融成统一的多模态特征 \(\tilde{\mathcal{F}}\);再用时空解码器(空间分支 + 时间分支)分别学每个对象的空间位置(每帧 box)和共享的时间起止;最后用时空 tube 生成模块把跨帧的框匹配、过滤,串成每个目标的 tube。和现有单目标 STVG 最大的不同在于:空间解码器为每帧学多组 query(每帧 \(N_q\) 组),从而能同时定位任意数量的对象。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["输入:视频 + 文本查询"] --> B["多模态编码器<br/>ResNet101/VidSwin/RoBERTa<br/>三路特征自注意力融合"]
B --> C["文本引导的 Query 生成<br/>用文本相似度挑目标相关特征"]
C --> D["空间解码器<br/>每帧多组 query<br/>空间+时间注意力→预测 box 与词索引"]
C --> E["时间解码器<br/>每帧单 query<br/>预测共享起止时刻"]
D --> F["时空 Tube 生成<br/>匈牙利匹配跨帧框 + 时序裁剪过滤"]
E --> F
F --> G["输出:每个目标一条时空 tube"]
关键设计¶
1. OmniSTVG 任务与 BOSTVG 基准:把「单目标」放开成「全目标」
本文最根本的贡献是重定义任务本身。经典 STVG 一次只 ground 一个对象,本文提出 OmniSTVG:定位查询里提到的所有目标(含交互对象),每个对象输出一条独立时空 tube,对象数量任意、类别可不同。为支撑这个新任务,作者建了 BOSTVG——首个也是当时最大的 OmniSTVG 基准:10,018 个视频、1,020 万帧、287 个类别(取自 ImageNet 与 V3Det 并组织成由粗到细的层级),每段视频配一句自由文本查询,目标数从 1 到 10、平均 2.4。视频从 YouTube 采集(CC 许可),先用关键词搜 15K+ 再人工筛掉不适合的,保留每段一个 clip;标注分两类——时间上标起止时刻、空间上为每个对象逐帧标 box tube,并用「标注→三专家验收→不一致退回重标」的多轮策略保证质量(随机抽 100 段独立复标,IoU 达 0.90)。测试集还按目标密度切成 Low(1-3 目标)/ Medium(4-6)/ High(≥7)三档便于分析。和并行工作 DVD-ST 相比,BOSTVG 在「ground 所有对象(而非部分)」「支持不同类别(而非同类)」「规模 10K vs 2.75K」三方面都更进一步。
2. 文本引导的 Query 生成:让 query 从一开始就带目标线索
传统 DETR 式定位的 object query 是随机初始化的、与具体目标无关,在多目标场景下更难收敛到正确对象。本文改成用文本去「挑」视频里与目标相关的特征来初始化 query。具体地,先把融合特征反拼回三路 \([\tilde{\mathcal{F}}_a, \tilde{\mathcal{F}}_m, \tilde{\mathcal{F}}_t]\),对文本特征做平均池化得 \(\bar{\mathcal{F}}_t\);空间分支用外观特征算相似度、取 Top-\(M\) 最相似的特征再平均池化生成每帧的初始空间 query:
每帧生成 \(N_q\) 组 query(这是支持多目标的关键)。时间分支同理,但用运动特征 \(\tilde{\mathcal{F}}_m\) 生成初始时间 query \(p^0_i\);由于 OmniSTVG 里所有目标共享同一组起止时刻,时间分支每帧只需一组 query。这样得到的 query 自带目标相关信息,比随机 query 更易与多模态特征交互、定位更准(消融里 TG-SQG 单独加上即可提分)。
3. 时空解码器:先理帧内/帧间关系,再与多模态特征交互
为了同时建模「同一帧里多个对象的空间关系」和「同一对象跨帧的时间一致性」,空间解码器在每层先后做两个注意力块:空间注意力块 SAB 在同一帧的 \(N_q\) 组 query 间做 self-attention(\(\{\hat{q}^{k-1}_{i,j}\}=\text{SABlock}(\{q^{k-1}_{i,j}\})\)),时间注意力块 TAB 在同一对象跨帧的 query 间做 self-attention,之后再用 cross-attention 让 query 与外观+文本特征交互:\(Q_k = \text{CrossAttBlock}(\tilde{Q}_{k-1}, [\tilde{\mathcal{F}}_a, \tilde{\mathcal{F}}_t])\),堆叠 \(K=6\) 层。最后空间头(MLP)预测每帧每组 query 的 box \(B\in\mathbb{R}^{N_v\times N_q\times 4}\);借鉴 MDETR 还预测一个「词索引」\(G\)——把每个 box 对应到查询里某个词的位置,用来判定这个框属于哪个对象/类别。时间解码器结构类似但只用 TAB + cross-attention(与运动+文本特征交互),最后时间头预测每帧的起止概率 \(H_s, H_e\)。消融显示时间分支里 TAB 至关重要:去掉它 m tIoU 从 35.83 暴跌到 26.0 左右,说明时间建模是准确时序定位的核心。
4. 时空 Tube 生成:把跨帧的框匹配、裁剪、过滤成每个目标一条 tube
空间分支每帧给出 \(N_q\) 个框,需要把它们跨帧串成属于同一对象的 tube。本文用两步简单策略:(i) Tubelet 匹配——用框的空间位置和预测类别做匈牙利匹配,跨帧关联成 \(N_q\) 条初始 tubelet;(ii) Tubelet 过滤——先用时间分支预测的起止时刻裁剪每条 tubelet 的时间边界,再把一条 tubelet 内所有框的类别概率平均来定它的类别,最后剔除那些类别没在查询文本里出现的 tubelet。这一步把「冗余/无关对象」滤掉,只保留查询真正提到的目标,从而输出干净的多目标 tube 集合。设计上刻意保持简单,目的是给新任务提供一个可复现的参考基线而非追求复杂度。
损失函数 / 训练策略¶
模型同时预测空间 box 和时间起止时刻并联合优化(具体 loss 公式在补充材料,正文未给)。训练上:2D 与文本 backbone、多模态编码器用预训练 MDETR 初始化,3D backbone(VidSwin)冻结、其余端到端训练;Adam 优化器,backbone 学习率 1e-5、其余模块 1e-4;帧率 FPS=2 采样、文本长度 \(N_t=30\)、通道维 \(D_a/D_m/D_t/D=2048/768/768/256\),损失权重 \(\lambda_h=2, \lambda_k=1\)。
实验关键数据¶
主实验¶
由于没有专门为 OmniSTVG 设计的现成方法,作者把 TubeDETR、STCAT、CG-STVG 三个单目标 STVG 框架改造适配后在 BOSTVG 上对比,全部用 BOSTVGTra 训练以保证公平。
| 测试子集 | 指标 | OmniTube | STCAT† | CG-STVG† | TubeDETR† |
|---|---|---|---|---|---|
| Full | m tIoU | 35.83 | 33.31 | 32.09 | 31.05 |
| Full | m vIoU | 9.47 | 8.03 | 7.66 | 7.52 |
| Full | [email protected] | 6.17 | 3.35 | 3.56 | 3.14 |
| Low (1-3 目标) | m vIoU | 10.11 | 8.52 | 8.29 | 7.99 |
| Medium (4-6) | m vIoU | 7.24 | 6.20 | 5.30 | 5.81 |
| High (≥7) | m vIoU | 4.42 | 4.36 | 3.22 | 3.91 |
OmniTube 在所有密度档、所有指标上都领先;[email protected] 这种更严格的指标上优势尤其明显(6.17 vs 次优 3.56)。同时也能看到:随着目标数增多(Low→High),所有方法的 m vIoU 都明显下滑,说明多目标定位本身极具挑战。
消融实验¶
空间解码器(Tab. 4):
| 配置 | m tIoU | m vIoU | 说明 |
|---|---|---|---|
| 全去掉 | 34.33 | 8.25 | 无 TG-SQG/SAB/TAB |
| +SAB+TAB | 34.13 | 9.00 | 加帧内/帧间注意力 |
| +TG-SQG+TAB | 34.98 | 8.89 | 文本引导 query |
| +TG-SQG+SAB | 35.42 | 9.15 | |
| Full | 35.83 | 9.47 | 三者齐全 |
时间解码器(Tab. 5):
| 配置 | m tIoU | m vIoU | 说明 |
|---|---|---|---|
| 全去掉 | 26.06 | 6.66 | 无 TG-TQG/TAB |
| +TAB | 35.00 | 8.98 | 仅时间注意力 |
| +TG-TQG | 26.00 | 6.82 | 仅文本引导 query |
| Full | 35.83 | 9.47 | 两者齐全 |
关键发现¶
- 时间分支的 TAB 是时序定位的命脉:单独加 TAB 就把 m tIoU 从 26.06 拉到 35.00;而只加 TG-TQG(无 TAB)几乎不动(26.00),说明文本引导的 query 必须配上时间建模才能发挥作用,二者互补。
- 文本引导 query(TG-SQG)提供判别性目标线索:在空间解码器里,把 TG-SQG 与 SAB 或 TAB 任一组合都能提分,说明它让 query 带上了目标特异信息,更容易与多模态特征交互。
- 多目标越密越难:Low→Medium→High 三档上所有方法 m vIoU 单调下降,BOSTVG 平均每视频 516.2 个框,是难度的直接来源。
亮点与洞察¶
- 任务重定义本身就是最大贡献:把 STVG 从「单目标」放开到「查询里所有目标(含交互方)」,这个 framing 简单却打开一个新方向——类比 SA 的「全覆盖」思路迁移到视频时空定位,很有启发性。
- 「每帧多组 query + 共享时间 query」的非对称设计很巧:空间上对象各异所以每帧 \(N_q\) 组 query,时间上所有目标共享同一起止所以每帧只需 1 组——这个对任务结构的观察直接简化了时间分支。
- 用「词索引」把框对应到查询里的词:借鉴 MDETR 预测 box 对应的词位置来定类别,这一招让「过滤掉查询没提到的对象」变得自然可行,是多目标场景里把无关 tube 剔除的关键。
- 可迁移:「文本相似度 Top-M 选特征做 query 初始化」这种用语言锚定视觉 query 的做法,可迁移到其他开放词表/多目标的视频定位、检测任务。
局限与展望¶
- 方法刻意保持简单(作者自称 simple yet effective),tube 生成靠匈牙利匹配 + 启发式过滤,缺乏端到端的 tube 级建模,在高密度(≥7 目标)场景绝对性能仍很低([email protected] 接近 0)。
- 假设所有目标共享同一组起止时刻,这对「同一查询里不同对象出现时段不同」的场景是过强的假设。
- 损失函数细节、SAEncoder/注意力块结构、指标具体公式都放在补充材料,正文不完整(⚠️ 以原文补充材料为准)。
- BOSTVG 只考虑「目标确实出现在视频里」的情形,不含「查询提到但视频里没有」的负样本,离真实开放场景仍有距离。
相关工作与启发¶
- vs 经典 STVG(TubeDETR / STCAT / CG-STVG):它们一次只定位单目标,本文把它们改造适配到多目标设置作为基线;OmniTube 在每帧学多组 query + 文本引导生成,全面超过这些被适配的方法。
- vs DVD-ST(并行工作):DVD-ST 也支持多目标,但只定位同类目标、且忽略交互对象、数据仅 2,750 段;本文 OmniSTVG ground 所有对象(跨类别、含交互方),BOSTVG 规模 10,018 段更大。
- vs Segment Anything(概念灵感):SA 分割图像任意区域,OmniSTVG 定位视频里查询提到的任意对象——把「anything/all」的全覆盖范式迁移到时空视频定位。
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ 重定义任务 + 首个大规模基准,开辟新方向
- 实验充分度: ⭐⭐⭐⭐ 三基线对比 + 分密度子集 + 双解码器消融,但绝对指标偏低、缺端到端 tube 建模
- 写作质量: ⭐⭐⭐⭐ 动机清晰、图表完整;部分关键细节(loss/指标公式)外放补充材料
- 价值: ⭐⭐⭐⭐⭐ 数据集+任务+基线方法三件套,对后续 OmniSTVG 研究有奠基意义