Multi-View 3D Point Tracking


本文提出了首个数据驱动的多视角3D点跟踪器,通过kNN关联与时空Transformer实现高精度、鲁棒的前馈式跟踪,支持任意点跟踪与多视角融合。


Metadata

Multi-View 3D Point Tracking

文章来自2025ICCV,作者是Frano Rajiˇc和 Haofei Xu等人,arxiv地址为

[[2508.21060] Multi-View 3D Point Tracking

相关工作

Scene flow(场景流)

在三维空间中,对连续两帧图像之间的每个可见点估计其三维运动向量(即位移),是光流在3D空间的推广,同时通常的方法对图像中每一个像素或点云中的每一个点都估计一个3D运动向量,而不是只估计某些关键点的运动,即为Dense

通常会构建一个能量函数(energy function),包含数据项(如光度一致性)和正则项(如平滑性约束),然后通过迭代优化求解,但是其速度慢且依赖多视角输入(相比MVTracker需要多得多的同步相机),且目前大多数场景流方法仍然只处理相邻的两帧图像,无法建立长时间跨度的3D点对应关系。

2D Point Tracking

在视频序列中,持续追踪某些特征点(可能是角点、纹理点等)在整个时间轴上的位置变化,一般能够跨数十甚至数百帧保持对点的追踪,即使发生遮挡、模糊、光照变化等,即为Long-term

CoTracker使用self-Attention,利用其他已知轨迹点的信息来帮助当前点的匹配;LocoTrack将传统的基于相关性的匹配方法升级为 双向4D相关,即两个空间维度x,y和两个时间维度(前一帧后一帧),有更强的局部匹配能力。

3D Point Tracking

3D点跟踪的目的是在视频序列中,持续追踪空间中的某些3D点(比如物体表面的一个角、人的鼻子等),形成一条跨越多帧的3D轨迹。相比Scene flow有可以长期追踪。

基于单目输入的3D跟踪(Monocular 3D Tracking)

SpatialTracker把2D扩展到3D,使用Triplane表示法(我暂时不太了解,接下来会看一看)编码3D场景,同时融合深度信息(模型估计或辅助输入);DELTA不只是追踪稀疏的关键点,而是尝试估计整张图像平面上所有像素的稠密3D轨迹。这两种方法都依赖monocular input,同时目前很多前沿工作仍聚焦于“如何用单摄像头做尽可能好的3D跟踪”,本质上存在深度模糊性。

基于多相机 + 几何重建的方法

Dynamic 3DGS将整个动态场景建模为随时间变化的3D高斯分布集合(每个高斯代表一个局部颜色+位置+尺度+透明度),可以同时做高质量的3D重建与点跟踪,具有很高的几何精度,但是其致命缺点是需要 极多的同步摄像头(27个) 和额外的深度传感器来提供初始点云,严重依赖极端复杂的采集设备难以在真实世界广泛应用

Method

概述

作者的目标是实现在线的、跨多视角的3D点跟踪,输入是多个摄像头同步拍摄的RGB图像帧(不同角度同时拍照),且所有摄像头的内外参数已知;系统可以逐帧处理视频而并非离线处理(即online)。

输入是来自 V 个不同视角的视频序列,每一帧图像中,都有一些指定的查询点(query points),需要把这些点一直跟踪到最后一帧,形成一条连贯的3D轨迹,同时得到每一帧的预测可见性(visibility)

整体流程可以概括为:

多视角输入 → 深度估计 → 3D点云融合 → 特征提取 → 跨帧匹配 → 输出3D轨迹

问题的抽象描述

已标定的多视角视频序列$ I_v^t \in \mathbb{R}^{H \times W \times 3} $,有V个摄像头,T帧图像,$I_v^t$为第v个摄像头在t帧时拍摄的图像。

每个查询点 $q^n$ 由四个元素组成:

  • 查询帧 $t_n^q$​:查询点出现的时间帧。

  • 查询点的初始三维位置$(x_q^n, y_q^n, z_q^n)$:在世界坐标系下,查询点的初始位置。

共有N个查询点,即为:

相机内参矩阵 $ K_v^t \in \mathbb{R}^{3 \times 3} $ 和外参矩阵 $ E_v^t \in \mathbb{R}^{4 \times 4} $

需要得到查询点p的3D轨迹及可见性:

同时假设查询帧 $t_n^q$ 时刻,初始位置就是真实值(ground truth),即为:

点云编码

提取特征图与深度图

对每一个$I_t^v$,使用CNNbackbone来提取特征图${\Phi}_t^v$,输出三维张量(高度,宽度,通道数),即$H/S \times W/S \times d$,即为stride=S的下采样,同时特征图设置不同尺度

深度图有两种来源,一是外部深度估计模型(如DUSt3R),二是直接输入的真是深度图

像素投影到3D坐标

从左到右依次为相机外参矩阵,相机内参矩阵,像素坐标转换的齐次坐标,像素对应的深度值(没有深度值的点会被略过)

最终得到3D点$x\in \mathbb{R}^3$

构建融合的3D特征点云

也就是把3D点x和其在特征图中的向量进行绑定,把V个视角在同一帧t提取到的3D点+特征对合并为统一的3D点云,s代表点云的尺度(例如1~4),不同尺度用于不同粒度的匹配

初始化跟踪点

每一个查询点$q^n$都需要一个特征$f_t^n$来方便后续的匹配,初始化方法为在查询帧$t_q^n$,去最高分辨率的3D特征点云$X_{t_q^n}^1$中找到距离初始位置$p_{t_q^n}^n$最近的3D点,将其特征$\phi^{n,*}$作为跟踪点的初始特征用于后续的匹配和更新。

注意这里的$f_t^n$是需要随时间更新的。

多尺度空间相关性(Spatial Correlation)

KNN相关性

  • 对于第 n 个正在跟踪的点,在第 t 帧、第 s 个尺度下:
    • 有一个当前的位置估计值 $\hat p_t^n$​(上一帧的结果或预测)。
    • 我们去s 层尺度的3D特征点云 $X_t^s$​ 中,找离它最近的 K 个点,记为 $N_K(\hat p_t^n,X_t^s)$。
    • 对每一个邻居点$(x^k,\phi^k)$,我们计算它的特征$\phi^k$和当前跟踪点的外观特征$f_t^n$的相似度:用点积表示。
    • 所有这些相似度组成一个集合 $C_t^{n,s}$,即为“相关性向量”。

这里的尺度还是上面提到的(1~4),分辨率从高到低。

编码3D偏移量

对每一个邻居点$(x^k,\phi^k)$,不仅要传递其相似度,还要拼接其相对位置偏移(这里是only offset,作者在后文讲述了这是效果最好的方式),可以表述为

使用Transformer迭代跟踪

对于每一个追踪点n和时间t,构造一个token $G_t^n$

从左到右依次是

$\eta(\hat p_t^n-\hat p_{t_q^n}^n)$相对位置编码,表示从起点移动了多少,本文为正弦位置编码

$f_t^n$ 当前时刻点的外观特征

$C_t^{n,s}$上面提到的多尺度KNN相关性

$\hat v_t^n$当前对可见性的估计

Transformer处理

这里简要概述,不做详细解释,类似CoTracker

首先是时序自注意力(Temporal),每个点回顾自己过去几帧的表现,学习运动模式(如匀速、加速)并帮助预测下一帧位置

其次是空间交叉注意力(Vitural Tracks),引入一组可学习的虚拟轨迹(learned virtual tracks),这些不是真实点,而是模型内部的“空间查询” ,作用是建模空间上下文关系

最后进行输出,但是并不直接输出最终位置,而是输出残差更新并进行迭代优化

前者是建议的位置调整量,后者是建议的特征调整量。

共进行M次迭代优化,每次迭代后,都用新的位置重新计算kNN相关性,构成一个反馈循环

输出

在最后一个迭代后,同时输出位置$p_t^{n,M}$和最终的特征$f_t^{n,M}$,并且用最终特征来预测可见性$\hat v_t^n$

$W$在这里是一个可学习的投影矩阵,最后输出0~1之间的概率,同时这个可见性也作为下一帧的输入

窗口化推理(Windows Inference)

模型使用 Transformer 和 M 次迭代 refinement,内存和计算开销大,无法一次性加载整个长视频,因此需要分段处理,引入滑动窗口。

设定一个最大窗口长度 $T$(比如 T=8 或 16 帧),对于更长的视频(长度 $T’ > T$),我们将其划分为多个重叠的时间窗口,每个窗口长 $T$ 帧,相邻窗口之间平移 $T/2$帧(即重叠一半),这样可以确保轨迹在窗口边界处连续。

每个窗口之间进行轨迹传播,处理完第$j$个窗口后,$j+1$个窗口不在从头初始化,而是接续前面的轨迹,从而实现跨窗口的连续跟踪,即使某个窗口中点被遮挡,也能靠前后窗口恢复。

Supervision

文章使用的损失函数包含了位置误差和可见性分类误差,前者作为主任务。

位置损失的计算为

N个查询点,M次迭代,J个窗口,T帧,

$\gamma ^{M-m}$是指数衰减权重,$\gamma$小于1,因为结果越到后面越重要。

可见性损失的计算为

即对所有窗口、所有帧、所有点的可见性预测误差求和

B-BCE是平衡二元交叉熵损失,赋予少数类(例如不可见)更高的权重,惩罚更重

实验设计

数据集和指标

论文在三个数据集上进行实验,涵盖合成与真实场景:

Multi-View Kubric:合成数据集,包含8至12个相机视角,场景为桌面级物体交互。提供真值深度和3D点轨迹,用于主实验和融研。

DexYCB:真实数据集,包含8个同步相机,记录手与物体的交互过程。深度由DUSt3R等估计方法提供,用于评估在真实噪声条件下的泛化能力。
Panoptic Studio:真实大场景数据集,配备27个以上相机,记录多人活动。深度同样依赖估计方法或传感器输入,用于测试在复杂、多视角环境下的性能。

所有实验统一使用3D空间中的轨迹匹配指标进行评估,包括Average Jaccard (AJ)、δavg、Overall Accuracy (OA) 和 Mean Tracking Error (MTE)

指标 全称 含义 趋势
AJ Average Jaccard 3D轨迹匹配度(IoU) 越高越好
δavg Average Distance 预测点与真值平均距离 越高越好
OA Overall Accuracy 误差 < 5cm 的帧占比 越高越好
MTE Mean Tracking Error 平均欧氏误差(cm) 越低越好

对比实验

论文将MVTracker与三类方法进行对比:

  • 单视角方法:包括CoTracker3、DELTA、LocoTrack,仅使用单个视角输入,代表当前主流视频点跟踪型。

  • 多视角学习方法:包括Triplane、SpatialTracker,利用多视角特征进行3D建模。

  • 优化类方法:包括Shape of Motion、Dynamic 3DGS,依赖测试时序列级优化,非前馈推理。

对比在Multi-View Kubric、DexYCB和Panoptic Studio上进行,评估不同方法在AJ、δavg、OA和MTE上的表现

消融实验

点关联组件

在Multi-View Kubric上训练不同变体,训练步数为总步数的25%,使用8 GPUs。对比三种关联编码方式:

  • “No offset”:不使用偏移向量,仅依赖邻居点特征。

  • “Offset + location”:拼接偏移向量与邻居点的绝对世界坐标。

  • “Offset only”:仅使用相对偏移向量。

最终结果是使用 offset only效果最好

相机布局

  • Panoptic Studio:选择4个相机,设置三种布局:对称分布(Setup A)、邻近分布(Setup B和C)

  • DexYCB:选择连续的4个相机,分别为视图1–4(Setup A)、3–6(Setup B)、5–8(Setup C)。

最终结果是MVTracker对相机布局是Robust的

训练增强

  • 训练时输入视图数量的可变性(从1到8视图随机采样)

  • 深度图来源的混合使用:同时使用真值深度和估计深度进行训练

在附录A中提供额外分析,包括深度估计质量对跟踪性能的影响;模型对深度噪声的鲁棒性测试;不同深度估计器(如DUSt3R、SPARF等)下的性能对比;以及典型失败案例分析,这里不做阐述。


文章作者: Chen Zhou
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Chen Zhou !
  目录