【论文分享】以视频搜视频的“时间橡皮筋”:解析 ICCV 顶会《MATR》如何用 Soft-DTW 与向量数据库重塑海量视频秒级定位

在我们之前对 Yogesh Kumar 博士论文三部曲的研读中:

  • 第一篇 《QDETRv》 解决了 “Where(它在哪儿)” —— 用时序记忆矩阵让 AI 在长视频中死咬住未知物体;
  • 第二篇 《Few-Shot RRV》 解决了 “How(怎么互动)” —— 用时空随机场看清主宾之间的动态动作因果。

今天,我们终于迎来了整套体系的终极压轴之作 —— 解决“When(关键事件在时间轴的几分几秒发生)”!

这篇发表于顶级计算机视觉会议 ICCV 2025 的前沿论文 —— 《Aligning Moments in Time using Video Queries》(提出了大名鼎鼎的 MATR 架构,即 Moment Alignment Transformer),彻底颠覆了传统的以文搜视频范式:

“无需苍白的文字提示,直接甩给 AI 一段 5 秒的短视频(Video Query),利用可微动态时间规整(Soft-DTW)拉齐时间快慢,在数小时的长视频甚至全网海量视频库中,秒级锁定相同动作或战术发生的起止时间戳(精确到 0.1 秒)!”

更让软件工程师兴奋的是:这项研究与现代软件工程中的“读写分离(CQRS)”以及我们之前探讨的 MyScaleDB 向量数据库 可以产生极其强悍的生产级工业联动!

在这篇博客中,我们将彻底拆解 MATR 的数学原理、PyTorch 代码实现,并结合软件架构视角,给出 “向量数据库海量粗筛 + MATR 时序弹性精排” 的万小时视频检索全套落地架构。

论文题目:Aligning Moments in Time using Video Queries
作者团队:Yogesh Kumar, Uday Agarwal, Manish Gupta, Anand Mishra (IIT Jodhpur, Microsoft)
收录会议:ICCV 2025 (IEEE/CVF International Conference on Computer Vision)
论文链接:https://openaccess.thecvf.com/content/ICCV2025/html/Kumar_Aligning_Moments_in_Time_using_Video_Queries_ICCV_2025_paper.html
博士毕业论文汇总 (arXiv):https://arxiv.org/abs/2610.21422 (Chapter 4 / Survey)
arXiv HTML 预览:https://arxiv.org/html/2610.21422v1
开源代码库:https://github.com/vl2g/MATR
核心领域:Video-to-Video Moment Retrieval (Vid2VidMR), Temporal Grounding, Differentiable DTW, Action Spotting
技术亮点:可微软动态时间规整 (Soft-DTW)、双阶段序列对齐 (Dual-Stage Alignment)、自监督时序增广预训练


01. 行业痛点:文字描述的“贫瘠带宽”与时间轴的“橡皮筋难题”

平时我们在视频平台搜索内容,最习惯的是以文字搜视频(Text-to-Video)。然而,人类语言的本质是高度抽象、信息带宽极低的“压缩包”。面对真实物理世界中微妙、飞速变化的复杂动态,文字往往苍白无力:

1
2
3
4
5
6
7
8
【文字的苍白 vs 视频的高带宽】

场景:足球战术分析
- 文字描述:“球员假动作变向晃过防守,随后二人连续撞墙配合传球,最后推射远角得分。”
(痛点:有成千上万种假动作,传球弧线、击球部位、跑位时机文字根本写不清楚,搜索结果充满幻觉)

- 视频切片:直接截取一段 6 秒的真实比赛剪辑作为 Query
(优势:包含了毫秒级的加速度、骨骼姿态、发力节奏、时空拓扑,信息密度高出文字成千上万倍!)

然而,当我们直接拿一段 6 秒的“短视频”去长视频里搜相同动作时,会迎头撞上一堵物理之墙 —— 时间轴的“橡皮筋难题(Temporal Elasticity)”:

1
2
3
4
5
6
7
【时间轴的伸缩不匹配 (Speed Discrepancy)】

Query 示范教学短视频:
[准备摆臂 (2.0s)] ──────────> [起跳滞空 (3.0s)] ──────────> [落地缓冲 (2.0s)] (总计 7.0 秒)

Target 实战快节奏长视频:
[准备 (0.4s)] ──> [腾空 (0.8s)] ──> [落地 (0.4s)] (总计 1.6 秒)
  1. 节奏与快慢严重错位:同一个投篮动作,示范动作慢放要 5 秒,实战爆发只需 1.5 秒。如果逐帧按绝对时间相减比对,特征完全错位;
  2. 长视频背景稀释:目标长视频长达数小时,99% 的时间都在闲聊或静止,暴力全时序计算会让注意力机制瞬间陷入“注意力稀释(Attention Blur)”;
  3. 时间戳标注成本极其昂贵:在成千上万小时的视频中人工打标“从第几秒开始到第几秒结束”,标注成本令人望而生畏。

02. 任务形式化定义:以视频搜视频时刻检索(Vid2VidMR)

我们将以视频搜视频时刻检索的形式化数学输入与输出定义如下:

flowchart LR
    subgraph Inputs["系统输入端 (Inputs)"]
        Q["Query 短视频 V_q = {q_1, q_2, ..., q_M}<br/>长度为 M 帧的动作样本"]
        T["Target 长视频 V_t = {t_1, t_2, ..., t_N}<br/>长度为 N 帧的长视频 (N ≫ M)"]
    end

    Inputs --> MATR["MATR 神经系统<br/>(Soft-DTW + 双阶段 Transformer)"]

    MATR --> Outputs["系统输出端 (Output Moment)"]
    subgraph Outputs["时序区间预测"]
        MOM["精准起止时间戳 [τ_start, τ_end]<br/>例如: [01:14:22.5 ➔ 01:14:31.2]<br/>及前景匹配置信度 score ∈ [0, 1]"]
    end
  • 查询输入:短视频切片 Vq={qi}i=1MV_q = \{q_i\}_{i=1}^M;
  • 搜索空间:长视频序列 Vt={tj}j=1NV_t = \{t_j\}_{j=1}^N(N≫MN \gg M);
  • 目标输出:预测目标事件在长视频进度条中的开始与结束连续时间戳 [τstart,τend][\tau_{\text{start}}, \tau_{\text{end}}],以及当前时间窗口的置信度得分 pmatch∈[0,1]p_{\text{match}} \in [0, 1]。

03. 核心精髓:解构 MATR 的三大破局绝技

针对时间轴的非线性伸缩与无标注数据难题,MATR 提出了三大环环相扣的绝技:

1
2
3
4
5
             【MATR 三大破局绝技】

绝技一:可微动态时间规整 (Soft-DTW) ────> 将时间轴当橡皮筋拉伸,平滑求导打通梯度反传
绝技二:双阶段序列对齐架构 (Dual-Stage) ──> 融前矩阵粗对步调 + 融后 Cross-Attention 抠细节
绝技三:自监督“时序增广”预训练 ────────> 故意将视频快进慢放自己搜自己,零成本学会速度不变性

🌟 绝技一:可微动态时间规整(Soft-DTW)—— 让走迷宫可以“反向求导”

动态时间规整(DTW)在数学上非常直观:它画了一张表格(横轴是长视频的 5 帧,纵轴是短视频的 3 帧):

1
2
3
4
5
6
7
8
9
10
       【长视频 Target 的 5 帧】
1.举手 2.停顿 3.停顿 4.击球 5.收杆
┌────────┬────────┬────────┬────────┬────────┐
1.举手│ ★ 0分 │ 0分 │ 0分 │ 100分 │ 100分 │
├────────┼────────┼────────┼────────┼────────┤
2.击球│ 100分 │ 100分 │ 100分 │ ★ 0分 │ 100分 │
├────────┼────────┼────────┼────────┼────────┤
3.收杆│ 100分 │ 100分 │ 100分 │ 100分 │ ★ 0分 │
└────────┴────────┴────────┴────────┴────────┘
(分值代表画面差异,0分表示长得一模一样,100分表示完全不像)

DTW 的规则很简单:从左上角出发,只能往右、往下或往右下走,走到右下角,找到一条总惩罚分最小的路线(★ 路线):

  • 短视频的 1.举手 对应了长视频的 1.举手、2.停顿、3.停顿;
  • 短视频的 2.击球 对应长视频的 4.击球;
  • 短视频的 3.收杆 对应长视频的 5.收杆。

这样,时间轴就像橡皮筋一样被拉伸了,快慢不一的动作被完美对齐!

在形式化数学定义中,它在短视频 MM 帧与长视频候选段 NN 帧之间构建了一个代价距离矩阵 D∈RM×N\mathbf{D} \in \mathbb{R}^{M \times N}:

  • 单元格 D(i,j)=∥qi−tj∥22\mathbf{D}(i, j) = \|\mathbf{q}_i - \mathbf{t}_j\|_2^2 表示两帧画面的特征差异;
  • 算法从左上角 (1,1)(1, 1) 走到右下角 (M,N)(M, N),寻找一条总代价最小的累计路径。

传统 DTW 为什么无法用于深度学习?(不可导的死穴)

传统 DTW 在状态转移时使用绝对极小值函数 min⁡()\min():

R(i,j)=D(i,j)+min⁡(R(i−1,j),  R(i,j−1),  R(i−1,j−1))\mathbf{R}(i, j) = \mathbf{D}(i, j) + \min \Big( \mathbf{R}(i-1, j), \; \mathbf{R}(i, j-1), \; \mathbf{R}(i-1, j-1) \Big)

min⁡()\min() 本质上是一个条件分支选择操作,它的导数在非极值点处处为 0,导致 PyTorch 的反向传播(Backpropagation)链条在此处彻底中断! 神经网络无法据此调整前端特征提取器的权重。

Soft-DTW 的数学突破(平滑可导的软极小值)

作者引入了带有温度系数 γ>0\gamma > 0 的 Soft-Min(软极小值算子):

min⁡γ(a1,a2,a3)=−γ⋅log⁡(e−a1/γ+e−a2/γ+e−a3/γ)\min^\gamma(a_1, a_2, a_3) = -\gamma \cdot \log \left( e^{-a_1/\gamma} + e^{-a_2/\gamma} + e^{-a_3/\gamma} \right)

  • 当 γ→0\gamma \to 0 时,它完美收敛于硬 min⁡\min;
  • 核心优势在于:因为全是平滑的对数与指数运算,整个动态规划矩阵在数学上处处连续、处处可导!
  • 梯度可以顺滑地穿透整个 DTW 网格,反向驱动视觉编码器自适应调整特征,使得即便两段视频动作一快一慢,对齐后的累积代价也能最小化。

🌟 绝技二:双阶段序列对齐(Dual-Stage Sequence Alignment)

为什么不把长短视频的帧直接扔进 Transformer 的 Cross-Attention 里?

  • 长视频包含 99% 的无关背景噪音;
  • 如果一上来就全量算注意力,微弱的动作特征会被海量背景稀释,且纯注意力缺乏时间单调性约束,容易发生“动作倒放错位”。

MATR 采用了层次分明的 “两道筛子”:

flowchart TD
    subgraph S1["第一阶段:融合前粗对齐 (Pre-Fusion)"]
        Q_IN["Query 帧序列 [B, M, D]"] & T_IN["Target 候选窗口 [B, N, D]"] --> D_MAT["计算帧间距离矩阵 D(i, j)"]
        D_MAT --> SDTW["跑 Soft-DTW 动态规整"]
        SDTW --> ALIGN_PRIOR["生成粗对齐时序先验 (Alignment Prior)<br/>排查并校正快慢错位"]
    end

    subgraph S2["第二阶段:融合后精对齐 (Post-Fusion)"]
        ALIGN_PRIOR & T_IN --> COND_T["带先验的长视频特征投影"]
        COND_T & Q_IN --> CA_BLOCK["Transformer 跨时序注意力层 (Cross-Attention)<br/>深入分析主体相对空间与微观交互"]
        CA_BLOCK --> HEADS["双预测头:<br/>1. 分类头 (置信度得分 score)<br/>2. 边界头 (精确回归时间戳 τ_start, τ_end)"]
    end

    S1 --> S2
  1. 第一阶段(融合前):用浅层矩阵与 Soft-DTW 进行滑动粗筛,打上节奏映射先验,排除时间轴拉伸错位的干扰;
  2. 第二阶段(融合后):带上节奏先验进入 Transformer 深度解码器,只针对候选高疑区域细致分析光照、形变与交互姿态;
  3. 输出精修:边界回归头直接输出相对起止秒的偏移量,实现高精定位。

🌟 绝技三:自监督时序增广预训练 ——“自己扭曲搜自己”

标注视频起止时间戳需要极高的人工成本。作者在数据工程上再次展现了四两拨千斤的巧思 —— 用纯算法规则合成自监督考题:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
第 1 步:从互联网随手抓取一段 10 分钟未标注长视频 [ 00:00 ───────────── 10:00 ]。
│
▼
第 2 步:随机裁切一段 15 秒原始动作作为 Ground Truth:[ 03:10 ──── 03:25 ]。
│
▼
第 3 步:【核心技术点】对这 15 秒短片施加“时序节奏摧残 (Temporal Augmentation)”:
- 暴力快进:隔帧抽帧,将 15 秒压缩为 7.5 秒 (动作加速 2 倍);
- 慢速插帧:将 15 秒拉长为 25 秒 (变成慢动作);
- 随机掉帧与色彩抖动:随机置空 20% 的画面,模拟丢包与噪点。
│
▼
第 4 步:将已被改得“面目全非”的短片作为 Query 喂给模型:
考题:“在 10 分钟原视频里,把这段动作最开始和结束的位置给我找出来!”
  • 绝对精准的真值(Ground Truth):其起始位置天然就是 [03:10, 03:25],完全不需要人类打标;
  • 逼迫模型学会“快慢不变性”:由于测试短片的速度被随机改变,模型如果死记硬背帧率必得零分,它必须强迫自己理解动作因果的本质演进!

04. 机械架构落地:核心算法的 PyTorch 纯代码实现

对于软件工程师而言,理解算法最直接的方式莫过于看代码。MATR 的核心模块全部基于标准 PyTorch 算子构建:

1. 可微 Soft-DTW 的纯 PyTorch 实现

利用 torch.logsumexp 巧妙消除不可导的 min⁡()\min():

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import torch
import torch.nn as nn

class SoftDTW(nn.Module):
def __init__(self, gamma=0.1):
super().__init__()
self.gamma = gamma

def _soft_min(self, a, b, c):
# 核心 trick: 使用 logsumexp 构造平滑可导的 min 函数
stacked = torch.stack([-a / self.gamma, -b / self.gamma, -c / self.gamma], dim=-1)
return -self.gamma * torch.logsumexp(stacked, dim=-1)

def forward(self, query_feats, target_feats):
"""
query_feats: [B, M, D] - 短视频时序特征
target_feats: [B, N, D] - 候选长视频时序特征
"""
B, M, D = query_feats.shape
_, N, _ = target_feats.shape

# 计算帧间两两欧氏距离矩阵: [B, M, N]
dist_mat = torch.cdist(query_feats, target_feats, p=2) ** 2

# 初始化动态规划张量 (边界填充正无穷大,起点置为 0)
dp = torch.full((B, M + 1, N + 1), float('inf'), device=query_feats.device)
dp[:, 0, 0] = 0.0

# 执行张量动态规划递推 (PyTorch Autograd 会完整记录计算图,支持 backward)
for i in range(1, M + 1):
for j in range(1, N + 1):
cost = dist_mat[:, i - 1, j - 1]
prev_min = self._soft_min(
dp[:, i - 1, j], # 压缩
dp[:, i, j - 1], # 伸展
dp[:, i - 1, j - 1] # 一对一匹配
)
dp[:, i, j] = cost + prev_min

return dp[:, M, N] # 返回终点累计最优对齐代价

2. MATR 双阶段网络类骨架

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class MATR(nn.Module):
def __init__(self, d_model=512, nhead=8, num_layers=4):
super().__init__()
self.soft_dtw = SoftDTW(gamma=0.1)
self.pre_proj = nn.Linear(d_model, d_model)

# 跨时序 Transformer 解码器
decoder_layer = nn.TransformerDecoderLayer(d_model=d_model, nhead=nhead, batch_first=True)
self.cross_attn_decoder = nn.TransformerDecoder(decoder_layer, num_layers=num_layers)

# 预测头
self.cls_head = nn.Sequential(
nn.Linear(d_model, 128),
nn.ReLU(),
nn.Linear(128, 1),
nn.Sigmoid()
)
self.boundary_head = nn.Sequential(
nn.Linear(d_model, 128),
nn.ReLU(),
nn.Linear(128, 2),
nn.Sigmoid() # 预测相对起止时间偏移量
)

def forward(self, query_feats, target_windows):
# 1. 融前 Soft-DTW 时序弹性先验计算
dtw_loss = self.soft_dtw(query_feats, target_windows)

# 2. 融后 Cross-Attention 深度特征融合
target_proj = self.pre_proj(target_windows)
fused = self.cross_attn_decoder(tgt=target_proj, memory=query_feats)
pooled = fused.mean(dim=1)

# 3. 边界与置信度预测
scores = self.cls_head(pooled)
boundaries = self.boundary_head(pooled)
return scores, boundaries, dtw_loss

05. 架构认知破局:专用轻量模型 vs 多模态大模型(Video-LLM)

很多人初看论文会误以为“这必须依赖庞大昂贵的通用大语言模型(LLM)”。实际上完全相反!

MATR 是一个纯正的专用轻量级时序模型(Dedicated Temporal Model)。在真实工程落地中,它展现出了对通用多模态大模型的压倒性工程优势:

评估维度 通用多模态大模型 (如 Video-LLaVA, GPT-4o) MATR 专用轻量时序模型 工业软件工程评价
模型参数量 70 亿 ~ 700 亿 (7B ~ 70B) 仅约 1000 万 ~ 3000 万 (10M ~ 30M) MATR 参数量缩小了 300 ~ 2000 倍
显存与硬件门槛 必须配备 24GB~80GB 专业显卡 (A100/H100) 仅需 50MB ~ 200MB 显存 MATR 能直接塞进几百元的边缘盒或手机芯片
单次推理延迟 5 秒 ~ 30 秒(逐词自回归生成) 10 毫秒 ~ 20 毫秒 (0.015s) MATR 可达 60+ FPS,轻松跑满线上高并发
输出确定性 存在严重语言幻觉(容易瞎编时间戳) 确定性数值回归 严格基于数学连续坐标输出,零废话
训练成本 需几百张 GPU 跑数周,花费数十万元 单张 RTX 4090 显卡几小时训完 普通开发团队即可轻松私有化复现与迭代

06. 生产级实战架构:MyScaleDB 向量粗筛 + MATR 弹性精排

在学术论文中,作者评测的是“拿一个 Query 暴力遍历几百个视频”。但在真实的千万级商业视频库中,暴力扫库会瞬间打爆算力!

结合现代系统工程的 “读写分离(Write Once, Query Many)” 哲学以及我们此前深入探讨的 MyScaleDB 向量数据库,业界最具性价比的双层漏斗生产架构如下:

flowchart TD
    subgraph Offline["阶段一:离线特征编译 (Write Once 写入流水线)"]
        V["10 万小时海量长视频库"] --> SLICE["滑动窗口切片 (如每 5 秒一个切片)"]
        SLICE --> ENC["前置冻结视觉底座 (如 VideoMAE / CLIP)<br/>提取 512 维稠密特征向量"]
        ENC --> DB[("MyScaleDB 向量数据库<br/>存储向量 + Metadata (video_id, start_time, end_time)")]
    end

    subgraph Online["阶段二:在线毫秒级检索 (Query Many 查询流水线)"]
        Q["用户输入 6 秒短视频 Query"] --> Q_ENC["提取短视频 Embedding 向量"]
        Q_ENC --> V_SEARCH["MyScaleDB 向量粗筛 (ANN Search)<br/>从千万级切片中瞬间滤出 Top-50 候选窗口<br/>【耗时 < 10ms】"]
        
        V_SEARCH --> RERANK["【MATR 时序精排与对齐器】<br/>对 Top-50 候选调用 Soft-DTW 解决快慢错位<br/>【耗时 < 15ms】"]
        
        RERANK --> OUT["精准剪辑输出:<br/>在【视频ID-883】的 01:23:15.2 ~ 01:23:21.8"]
    end

工程两步协同机制

  1. 第一层(海量粗筛):MyScaleDB 负责“广撒网”
    • 离线将海量长视频切成 5 秒切片并向量化存入 MyScaleDB;
    • 在线查询时,在 10ms 内从 10 万小时视频中瞬间缩小至最有希望的 50 个时间窗口(Top-50 Candidates);
  2. 第二层(时序精修):MATR 负责“量尺度”
    • 向量数据库无法解决“动作快慢被拉伸、或真实起点偏移了 1.3 秒”的微观问题;
    • MATR 接收这 50 个候选窗口,在毫秒内执行 Soft-DTW 弹性时序对齐,直接给出精确到 0.1 秒的最终剪辑点。

这套“向量数据库做召回 + MATR 做弹性重排”的组合拳,不仅将推理吞吐提升了成百上千倍,更彻底扫平了学术原型走向工业级系统的落地鸿沟!


07. 工业落地全景:那些已经在用的国民级产品

这项算法思想早已在真实商业产品中落地开花:

  1. 抖音 / 剪映(CapCut)——“拍同款”与“动作节奏对齐”:
    用户自拍一段舞蹈或运球视频,即便节奏忽快忽慢,软件能通过 Soft-DTW 原理自动拉伸对齐模板动作的高光点;
  2. YouTube Content ID ——“版权反搬运与二创盗用排查”:
    针对黑产将原版影视“加速 1.2 倍、插帧慢放、裁切画中画”的恶意洗稿,系统凭借时序不变性在全网秒级定位盗用片段的时间区间;
  3. NBA 官方转播(Second Spectrum)与腾讯/咪咕体育 ——“战术高光自动剪辑”:
    教练给一段 5 秒的复杂掩护配合录像,算法在整场 90 分钟录像中精准捞出相同跑位的所有攻防瞬间;
  4. 特斯拉 Autopilot / FSD ——“影子模式数据挖掘机”:
    给一段“危险近距离加塞”的示例短片,云端从车队上传的数亿小时无标注录像中,自动把同类险情发生的时间段切片打包送训。

08. 博士三部曲终极总结:机器看懂世界的完整拼图

至此,Yogesh Kumar 博士在计算机视觉顶会发表的整套视频理解体系,构筑起了一座结构严谨的宏伟大厦:

篇章 顶会论文 解决终极命题 核心底层杀手锏 系统工程落脚点
第一篇 (Where) AAAI 2024 (QDETRv) 目标在哪儿?
(单样本未知物体追踪)
循环记忆矩阵 (Recurrent Memory)
+ 合成轨迹预训练 (SOT)
启发 Meta SAM 2 流式记忆银行,轻量端侧实时追踪
第二篇 (How) CVPR 2023 (RefRelations) 如何交互?
(小样本动态关系定位)
TT-分部时空随机场
+ 置信度传播 (BP) + TransE 平移几何
升维静态场景图,看透长时序动态因果逻辑
第三篇 (When) ICCV 2025 (MATR) 何时发生?
(以视频搜视频时刻检索)
可微动态时间规整 (Soft-DTW)
+ 双阶段对齐 + 自监督时序增广
携手 MyScaleDB 向量库,构筑千万级长视频秒级定位引擎

当人工智能不再依赖苍白模糊的文字转述,而是学会直接用时间轴去对齐时间轴、用空间记忆去追踪目标、用图结构去理解因果,机器视觉才真正拥有了穿透物理现实的动态认知之眼。