T2SGrid: Temporal-to-Spatial Gridification for Video Temporal Grounding¶
会议: CVPR 2026
论文: CVF Open Access
代码: 无
领域: 视频理解
关键词: 视频时序定位, 网格化, 多模态LLM, 时序建模, 滑动窗口
一句话总结¶
T2SGrid 把视频时序定位(VTG)从"逐帧处理"改造成"逐片网格图处理"——用滑动窗口把若干连续帧按行主序拼成一张 2D 网格图喂给 Vision-LLM,让模型用它擅长的空间推理能力去读时序,再配一个"整段网格共用一个文本时间戳"补全绝对时间感知,在 Charades-STA / ActivityNet 上让没有时序编码的 Qwen2-VL-7B 的 mIoU 从 7.9 飙到 44.3。
研究背景与动机¶
领域现状:视频时序定位(Video Temporal Grounding, VTG)要根据自然语言 query 定位出对应的视频片段,输出形如"从 X 秒到 Y 秒"。现在主流做法是把 Vision-LLM(如 Qwen2.5-VL)搬过来用,给它补一套时序感知机制。
现有痛点:补时序感知的三条路线各有硬伤。① 位置编码(+PE):能建模相对顺序,但抓不住"绝对时间位置",而 grounding 恰恰要的就是绝对时间戳,还得额外加编码模块;② 文本时间戳(+TextNum):给每一帧前面塞一个 "Frame 1" / "1 second" 文本 token,视频一长,文本 token 数量爆炸式增长,视觉注意力被稀释得越来越分散;③ 视觉编号(+VisualNum):直接把帧号画在图像上,破坏了图像本身的空间细节,而空间细节正是 Vision-LLM 做语义理解的命根子。
核心矛盾:Vision-LLM 是在静态图像上训出来的,空间推理能力极强但时序推理是短板。把视频拍成"一长串帧序列"线性喂进去,作者通过可视化交叉注意力发现:模型只会逐帧识别"画面里有什么物体"(靠静态物体显著性),却抓不住"物体在帧间怎么动",时序注意力峰值严重偏离 Ground Truth。也就是说,序列化处理逼着模型做逐帧物体匹配,丢掉了帧间的运动线索。
本文目标:在不新增专用时序模块、不大规模标注新数据集的前提下,让 Vision-LLM 真正读懂时序。
切入角度:既然模型空间推理强、时序推理弱,那干脆把时序问题翻译成空间问题——把时间维度"折叠"进空间维度。作者观察到(Figure 2)现代 Vision-LLM 本来就能读懂网格拼图:给它一张 3×3 的帧拼图,它能从左上到右下推断出 "before / after" 的相对顺序,甚至能指出第 6 格里的咬人动作。这说明网格布局天然就编码了时序。
核心 idea:用滑动窗口把连续若干帧按行主序拼成一张 2D 网格图(gridification),让标准 ViT 直接当一张图来处理,用空间注意力捕捉局部时序动态;再用"每张网格图配一个复合文本时间戳"补回绝对全局时间感知。
方法详解¶
整体框架¶
T2SGrid 的核心是把"视频 = 帧序列"重新表述为"视频 = 网格图序列"。整条流程分两步:先用滑动窗口时空网格化把视频切成若干窗口、每个窗口内的 \(k\) 帧拼成一张网格图 \(G_i\);再做 T2SGrid 时序建模——一方面靠网格的行主序布局隐式编码窗口内的相对时序,另一方面在每张网格图前面插一个文本时间戳(如 "from Frame 0 to 11")建立绝对全局时序,最后把"文本时间戳 + 网格图"交错成一个序列喂给 Vision-LLM。整个框架既可以训练无关(training-free)直接套在现成模型上,也可以再用 LoRA 微调进一步增强。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["输入视频<br/>T 帧"] --> B["滑动窗口时空网格化<br/>窗口大小 k、步长 s<br/>k 帧按行主序拼成网格图 Gi"]
B --> C["隐式时序编码<br/>行主序布局 → patch 坐标<br/>唯一映射出帧的时间索引"]
B --> D["绝对全局时序感知<br/>每张 Gi 前插复合文本时间戳<br/>'from Tstart to Tend'"]
C --> E["文本时间戳 + 网格图<br/>交错序列喂给 Vision-LLM"]
D --> E
E -->|training-free 或 LoRA 微调| F["输出时间区间<br/>'From x to y'"]
关键设计¶
1. 滑动窗口时空网格化:把时间折进空间,又不牺牲分辨率
这一步针对的痛点是:逐帧线性处理让模型只见物体不见运动。做法是给视频定义窗口大小 \(k\) 和步长 \(s\),第 \(i\) 个窗口取连续 \(k\) 帧 \(W_i = \{f_{i \times s}, f_{i \times s+1}, \dots, f_{i \times s+k-1}\}\),再把这 \(k\) 帧按行主序(左到右、上到下)拼成一张复合网格图 \(G_i\),布局灵活只要 \(M \times N = k\)(如 9 帧拼成 3×3)。关键之处在于网格化只是把原分辨率帧拼起来,不做任何下采样,空间细节一点不丢。作者点明:均匀采样逐帧处理本质上就是 \(s=1, k=1\) 的退化情形,而把 \(k>1\) 后,处理中心帧 \(f_t\) 时模型同时看到邻域 \(f_{t-4}, \dots, f_{t+4}\),拿到了完整的动态上下文。步长 \(s\) 用来调重叠:短视频设 \(s<k\) 引入重叠,避免把一个关键动作劈到两张网格里、保住时序连续性;长视频设 \(s=k\) 无重叠,避免冗余计算。这套设计天然适配长视频和各种帧率。
2. 网格布局的隐式时序编码:行主序 = 一种确定性的位置编码
这一步要解决的是"网格图本身是空间的,时序信息藏在哪"。作者用一条坐标映射把它讲透了:设每行 \(N_c\) 帧,某帧在网格里的行列坐标是 \((r_f, c_f)\),它的时间索引唯一确定为 \(t_f = r_f \times N_c + c_f\)。而自注意力实际操作的是 patch 级坐标 \((r_p, c_p)\) 及其 2D 位置嵌入 \(E(r_p, c_p)\),帧坐标可由 patch 坐标还原:\(r_f = \lfloor r_p / h_{patch} \rfloor\),\(c_f = \lfloor c_p / w_{patch} \rfloor\)。代入得 \(t_f = \lfloor r_p / h_{patch} \rfloor \times N_c + \lfloor c_p / w_{patch} \rfloor\),说明时间索引是 patch 坐标的良定义函数——也就是说,模型现成的 2D 位置嵌入里已经蕴含了推断帧时序所需的全部信息,无需显式时间戳或帧号就能做隐式时序推理。这正是"为什么 Vision-LLM 能直接读懂网格时序"的数学解释,也是本文区别于 IG-VLM、DynImg 等只用网格做粗粒度 VQA 的关键:他们没意识到网格空间布局里本就编码了细粒度时序。
3. 复合文本时间戳:补回滑动窗口丢掉的绝对时间
滑动窗口 + 网格只编码了窗口内的相对时序(动作连续性),却丢了每个片段在全局时间轴上的绝对位置。可 VTG 要输出 "Xs to Ys" 这种精确时间戳,绝对时间不能少。作者的解法是:在把每张网格图 \(G_i\) 喂给模型前,给 prompt 前面拼一个文本时间戳——\(\text{Prompt}_i = (\text{"from } T_{start} \text{ to } T_{end}\text{."}; \ \text{Image: } G_i)\),\(T_{start}, T_{end}\) 是第 \(i\) 张网格对应的起止时间。与 TextNum 给每一帧都塞时间戳不同,这里是一整张网格图(多帧)只共用一个复合时间戳,文本 token 数量大幅下降、不稀释视觉注意力。多张网格按"文本-图像"交错组织,这些绝对时间戳串成一条贯穿全片的连续时间链,让模型既能推理网格内的动态、又能定位它在整段时间轴上的位置。
实验关键数据¶
主实验¶
在 Charades-STA / ActivityNet 上评测,指标为 mIoU 和 R@1(IoU 阈值 0.3/0.5/0.7)。T2SGrid 既能 training-free 插到各种 Vision-LLM 上,也能微调(T2SGrid-FT)。下表是 Charades-STA 上的代表性结果("+T2SGrid" 为 training-free 直插):
| 模型 | [email protected] | [email protected] | [email protected] | mIoU |
|---|---|---|---|---|
| Qwen2-VL-7B(无时序编码) | 8.7 | 5.4 | 2.4 | 7.9 |
| + T2SGrid | 70.1 (+61.4) | 46.7 (+41.3) | 20.1 (+17.7) | 44.3 (+36.4) |
| + T2SGrid-FT | 76.9 | 60.6 | 35.9 | 53.2 |
| LLaVA-OneVision-1.5-8B(纯静态图训练) | 19.8 | 6.7 | 2.3 | 14.5 |
| + T2SGrid | 45.0 (+25.2) | 26.3 (+19.6) | 11.9 (+9.6) | 28.8 (+14.3) |
| GPT-4o | 55.0 | 32.0 | 11.5 | 35.4 |
| + T2SGrid | 57.3 (+2.3) | 36.7 (+4.7) | 14.8 (+3.3) | 36.9 (+1.5) |
| Qwen3-VL-8B(已用文本时间戳) | 69.3 | 43.4 | 17.5 | 43.1 |
| + T2SGrid | 71.4 (+2.1) | 47.0 (+3.6) | 20.7 (+3.2) | 44.9 (+1.8) |
最亮眼的是 Qwen2-VL-7B:它本身没有时序编码,直插 T2SGrid 后 mIoU 从 7.9 暴涨到 44.3,直接超过一堆专门微调过的 VTG 视频 LLM;再 LoRA 微调到 53.2 拿下最佳。纯静态图训练的 LLaVA-OneVision 也有 +14.3 mIoU 的大幅提升,印证了"借空间推理能力做时序理解"的有效性。而对已经用文本时间戳建模的 Qwen3-VL-8B,提升较小(+1.8 mIoU),作者归因于本文的局部时序编码与它原有的时间戳方案有轻微冲突。
T2SGrid 在 VQA 任务上同样有泛化力(Table 3,Qwen2-VL-7B):
| Benchmark | 子指标 | Qwen2-VL-7B | + T2SGrid |
|---|---|---|---|
| Video-MME | 时序感知 | 60.0 | 74.5 (+14.5) |
| Video-MME | 时序推理 | 41.7 | 50.2 (+8.5) |
| MVBench | All | 51.7 | 58.3 (+6.6) |
| VideoInstruct | 时序理解 | 2.47 | 2.52 |
消融实验¶
组件消融(Charades-STA, Qwen2-VL-7B)逐个加回三大组件:
| ComTextNum | 滑动窗口 | 网格 | [email protected] | [email protected] | [email protected] | mIoU |
|---|---|---|---|---|---|---|
| ✗ | ✗ | ✗ | 8.7 | 5.4 | 2.4 | 7.9 |
| ✓ | ✗ | ✗ | 53.5 | 23.2 | 7.9 | 32.9 |
| ✓ | ✓ | ✗ | 58.3 | 35.1 | 13.6 | 36.5 |
| ✓ | ✓ | ✓ | 70.1 | 46.7 | 20.1 | 44.3 |
时序建模策略对比(同一 Qwen2-VL-7B baseline,含 token 数和推理时间):
| 策略 | [email protected] | mIoU | mToken | mTime/s |
|---|---|---|---|---|
| PE | 53.1 | 33.8 | 5760.4 | 1.69 |
| TextNum | 53.5 | 32.5 | 5791.2 | 1.45 |
| VisualNum | 60.7 | 38.5 | 5760.4 | 2.17 |
| Ours(无重叠) | 64.5 | 41.2 | 5766.1 | 1.43 |
| Ours(有重叠) | 70.2 | 44.3 | 7909.7 | 2.31 |
关键发现¶
- 网格化是贡献最大的组件:只加文本时间戳(ComTextNum)mIoU 已从 7.9 跳到 32.9;再加滑动窗口到 36.5;最后把窗口转成 2D 网格直接拉到 44.3(+7.8),证明"局部隐式时序编码"才是核心增益来源。
- 无重叠版几乎零额外开销:因为只是把原分辨率帧拼到一张图,无重叠设置下 mToken(5766)和逐帧输入(5791)基本持平,却比 VisualNum 推理快 34.1%;要更高精度就开重叠,仅多 6% 时间换 14% 性能。
- 网格尺寸有甜区:随窗口增大性能上升(g11 s1 的 32.9 → g43 s12 的 41.2 mIoU),但过大(g44 s16)反而掉到 35.9——拼太多帧会让单帧太小、空间细节受损。g43 在两个数据集上都是最优配置。
亮点与洞察¶
- "把时序问题改写成空间问题"是个很漂亮的视角转换:不去补模型的时序短板,而是把任务搬到模型的空间强项上,等于绕开了"给 Vision-LLM 重训时序能力"这条昂贵的路。
- 用坐标映射公式把"网格隐式编码时序"讲成了数学事实(\(t_f = \lfloor r_p/h_{patch}\rfloor \times N_c + \lfloor c_p/w_{patch}\rfloor\)),而不是停留在"模型好像能读懂网格"的直觉,这让方法的可信度大大提升。
- "多帧共用一个复合时间戳"是对 TextNum 的精准改良:抓住了 TextNum"每帧一戳导致 token 爆炸、注意力稀释"的真痛点,用分组时间戳一招化解,是可迁移到其他长视频任务的省 token trick。
- 几乎 plug-and-play:training-free 就能给任意 Vision-LLM 大幅涨点,对没时序编码的模型尤其立竿见影,落地成本极低。
局限与展望¶
- 对已有强时序方案的模型增益有限:Qwen3-VL-8B 这种本就用文本时间戳的模型只涨 +1.8 mIoU,作者承认本文局部编码与其原方案有冲突,如何兼容/融合两套时序信号是个开放问题。
- 网格尺寸需要调参且有上限:g44 s16 就开始掉点,说明"一张图塞太多帧→单帧太小→空间细节受损"的 trade-off 客观存在,最优 grid 配置可能随数据集/视频时长变化,需要针对性 ablation。⚠️ 论文主要在 Charades-STA / ActivityNet 这两个相对短的 VTG 数据集上验证,超长视频下窗口数量膨胀后的可扩展性还需更多证据。
- 重叠模式的开销:开重叠虽涨点,但 mToken 从 ~5766 涨到 7909、推理时间也上升,长视频上这部分成本会被放大。
- 可改进方向:让网格布局自适应(按动作密度动态决定 \(k\) 和 \(s\)),或把隐式网格时序与显式时间戳做更优融合而非简单冲突。
相关工作与启发¶
- vs 逐帧 + 位置编码 / 文本时间戳 / 视觉编号(+PE / +TextNum / +VisualNum):三者都在"帧序列"范式内打补丁——PE 抓不住绝对时间、TextNum 让 token 爆炸稀释视觉注意力、VisualNum 在图上画字破坏空间细节。本文跳出帧序列范式,把帧折进空间网格,既不牺牲分辨率也不增 token(无重叠时),是范式级而非补丁级的改动。
- vs IG-VLM / DynImg 等网格化 VQA 方法:他们也把多帧拼成一张图,但只用于 VQA 的粗粒度事件理解(IG-VLM 选少量关键帧拼大图,DynImg 放大一个关键帧加小图当时序线索),都没保住细粒度时序顺序。本文是第一个揭示并利用"空间网格本身就编码了内在时序" 并把它用到 VTG 的工作,把网格化从 VQA 推广到了需要精确时序的 grounding 任务。
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ "时序→空间网格化"的视角转换很巧,且首次把网格内隐式时序用于 VTG
- 实验充分度: ⭐⭐⭐⭐ 跨 4 个模型 + VTG/VQA 多 benchmark + 组件/策略/网格配置多重消融,但数据集偏短视频
- 写作质量: ⭐⭐⭐⭐ 注意力分析 + 坐标映射公式把"为什么有效"讲得很清楚
- 价值: ⭐⭐⭐⭐⭐ training-free 即插即用、近零额外开销大幅涨点,落地价值高