跳转至

Back on Track: Bundle Adjustment for Dynamic Scene Reconstruction

会议: ICCV 2025 (Oral)
arXiv: 2504.14516
代码: 暂无公开代码
领域: 3D视觉 / 动态场景重建 / 视觉SLAM
关键词: 束调整(Bundle Adjustment), 动态场景重建, 运动解耦, 3D点跟踪, 深度优化

一句话总结

提出BA-Track框架,通过学习型3D点追踪器将观测到的运动解耦为相机引起的运动和物体自身运动,使传统束调整(BA)能够无差别地处理静态和动态点,在相机位姿估计(ATE在Sintel上达到0.034,较SOTA降低一半以上)和稠密3D重建上取得显著提升。

背景与动机

传统SLAM系统依赖束调整(BA)进行相机位姿估计和场景重建,但其核心假设是场景静态,依赖极线约束。在日常视频中,动态物体运动与相机运动交织在一起,严重违反极线约束。现有方案有两类思路: 1. 过滤动态区域(如DynaSLAM、ParticleSfM、LEAP-VO):检测并剔除动态元素再做BA,但导致重建不完整,丢失动态物体的几何信息 2. 独立建模动态运动(如MonST3R):用光流或运动mask单独处理动态区域,但不同元素的运动估计可能不一致

这两种方案都不令人满意:前者丢信息,后者不一致。需要一种能同时处理静态和动态元素的统一框架。

核心问题

如何让传统束调整在动态场景中正常工作? 关键insight是:如果我们能从动态点的观测运动中分离出"相机引起的运动分量",那么这些动态点在局部参考帧中就表现得像静态点一样,极线约束就可以对所有点适用。

方法详解

整体框架

BA-Track包含三个阶段: 1. Stage I - 运动解耦3D追踪器:学习型前端,将观测运动解耦为相机运动和物体运动 2. Stage II - 束调整:用解耦后的相机运动分量对所有点(含动态点)做BA,恢复相机位姿和稀疏3D结构 3. Stage III - 全局优化:用BA的稀疏深度约束来优化稠密深度图,确保时序一致性

关键设计

  1. 运动解耦机制(Motion Decoupling):采用双网络设计而非单网络。主追踪器\(\mathcal{T}\)(6层transformer)预测总运动\(X_{\text{total}}\),动态追踪器\(\mathcal{T}_{\text{dyn}}\)(3层transformer,更浅以提效率)预测动态分量\(X_{\text{dyn}}\)。静态分量通过以下公式获得: $\(X_{\text{static}} = X_{\text{total}} - m \cdot X_{\text{dyn}}\)$ 其中\(m \in [0,1]\)是学习得到的动态标签,静态点\(m=0\)时静态分量等于总运动,动态点\(m=1\)时需要减去物体运动。实验证明双网络方案远优于单网络直接回归静态分量的方案(ATE从0.091降至0.065)。

  2. RGB-D束调整:将解耦后的静态运动分量输入经典BA框架。优化变量包括每帧相机位姿\(\mathbf{T}_t \in SE(3)\)和查询点深度\(\mathbf{Y}\)。目标函数为: $\(\arg\min_{\{\mathbf{T}_t\}, \{\mathbf{Y}\}} \sum W_n^i(j) \|\mathcal{P}_j(\mathbf{x}_n^i, y_n^i) - X_n^t(j)\|_\rho + \alpha \|y_n^i - d(\mathbf{X}_n^i)\|^2\)$ 其中\(W_n^i(j) = v_n^i(j) \cdot (1 - m_n^i)\)综合了可见性和动态标签的置信度。通过Gauss-Newton + Schur分解高效求解。位姿更新时用严格阈值(\(\delta_v=0.9, \delta_m=0.9\))过滤动态点;深度更新时使用所有点以充分利用运动解耦的优势。

  3. 全局深度优化(Global Refinement):BA只优化了稀疏查询点的深度,稠密深度图仍不一致。引入2D尺度网格\(\theta_t\)对每帧深度图做乘性缩放:\(\hat{D}_t[\mathbf{x}] = \theta_t[\mathbf{x}] \cdot D_t[\mathbf{x}]\)。通过两个损失联合优化:

  4. 深度一致性损失\(\mathcal{L}_{\text{depth}}\):使缩放后的稠密深度与BA稀疏深度对齐
  5. 场景刚性损失\(\mathcal{L}_{\text{rigid}}\):保持静态点之间的3D距离在不同帧间不变

损失函数 / 训练策略

  • 3D追踪器在TAP-Vid-Kubric数据集(11000个序列)上训练,使用AdamW优化器,学习率\(3 \times 10^{-4}\),总共100k步
  • 每次迭代都提供监督(多尺度监督),使用指数衰减权重\(\gamma=0.8\)
  • 总损失 = 3D轨迹损失 + 可见性BCE损失 + 动态标签BCE损失
  • BA阶段使用\(\alpha=0.05\)平衡重投影损失和深度损失
  • 全局优化阶段用Adam优化器优化尺度网格参数

实验关键数据

相机位姿估计(Table 1)

数据集 指标 BA-Track (本文) LEAP-VO DPVO ParticleSfM
MPI Sintel ATE↓ 0.034 0.089 0.115 0.129
MPI Sintel RTE↓ 0.023 0.066 0.072 0.031
MPI Sintel RRE↓ 0.115 1.250 1.975 0.535
AirDOS Shibuya ATE↓ 0.028 0.031 0.146 0.275
Epic Fields ATE↓ 0.385 0.486 0.394

ATE在Sintel上从之前最好的0.089(LEAP-VO)降至0.034,降幅超过60%。RRE从0.535降至0.115,降幅近80%。

深度评估(Table 2)

数据集 指标 BA-Track+ZoeDepth ZoeDepth原始 MonST3R CasualSAM
Sintel AbsRel↓ 0.408 0.467 0.335 0.387
Sintel TA↑ 54.1% 47.3% 58.5% 54.7%
Bonn AbsRel↓ 0.084 0.087 0.063 0.169
Bonn TA↑ 95.0% 94.8% 96.4% 73.7%

消融实验要点

  • 运动表示消融(Table 3)
  • 只用总运动做BA → ATE=0.137(最差)
  • 总运动 + 动态mask过滤 → ATE=0.047
  • 单网络直接预测静态分量 → ATE=0.091
  • 双网络运动解耦 → ATE=0.065
  • 双网络运动解耦 + 动态mask过滤 → ATE=0.034(最佳)
  • 关键结论:双网络解耦远优于单网络回归静态分量

  • 全局优化消融(Table 4,Bonn crowd2)

  • 无优化 → AbsRel=0.121, TA=89.6%
  • \(\mathcal{L}_{\text{depth}}\) → AbsRel=0.103, TA=95.0%
  • \(\mathcal{L}_{\text{rigid}}\) → 小幅提升
  • 两者结合 → 最佳效果,互补性明显

  • 深度先验鲁棒性:在ZoeDepth、UniDepth-V2、Depth Anything V2三种不同深度先验下均表现稳健,证明方法与深度模型选择无关

亮点

  • 核心insight巧妙:不是过滤动态点,而是解耦运动让动态点变"伪静态",从而让经典BA直接在所有点上工作,思路优雅
  • 双网络解耦设计:分开预测总运动和动态分量,比单网络直接预测静态分量效果好很多。直觉上一个网络同时学视觉追踪和运动模式太难,双网络各司其职
  • 传统优化 + 深度学习的混合范式:前端用学习型追踪器提供鲁棒先验,后端用经典BA保证几何一致性,取长补短
  • 内存高效:不同于MonST3R在48GB GPU上只能处理90帧,BA-Track可处理长序列(如Epic Fields的1000帧)
  • 全局深度优化轻量:只用2D尺度网格(参数量少)而非复杂的神经网络做深度优化

局限性 / 可改进方向

  • 需要已知相机内参:假设相机内参已知或由其他方法估计,未联合优化内参
  • 长时遮挡和复杂运动:在长时间遮挡或训练集中未见过的复杂运动模式下可能失败
  • 非刚性物体:对高度形变的非刚性物体建模不佳(TAP-Vid-Kubric中此类数据不足)
  • 深度优化模型简单:仅使用乘性尺度网格优化深度,更复杂的变形模型(如神经网络)可能效果更好
  • 训练数据:仅在合成数据(Kubric)上训练3D追踪器,扩展到更大更多样的动态数据集可能提升泛化性

与相关工作的对比

  1. vs DROID-SLAM / DPVO:这些是学习型VO/SLAM方法,但假设静态场景,在高动态场景下位姿估计严重退化。BA-Track通过运动解耦消除了这一限制
  2. vs MonST3R:MonST3R用光流motion mask过滤动态区域后做全局位姿优化,需要大量显存(48GB GPU限制90帧),且在动态区域重建不完整。BA-Track通过解耦允许动态点参与优化,更高效
  3. vs LEAP-VO / ParticleSfM:采用轨迹过滤策略去除动态outlier,但信息损失。BA-Track保留所有点的信息,且在Sintel ATE上超越LEAP-VO一倍以上
  4. vs Robust-CVD / CasualSAM:属于测试时优化方法,需要数小时处理时间。BA-Track在精度和效率上都有优势

启发与关联

  • 与ideas中的测试时训练用于持续3D场景动力学外推相关:该idea关注4D场景动力学的在线外推,BA-Track的运动解耦思路可以为其提供更好的运动分解基础——先做运动解耦再做动力学建模可能比直接在混合运动上做TTT更有效
  • 运动解耦的思路可以推广到更多任务:如self-supervised depth estimation中的动态区域处理、视频理解中的运动分析等
  • 双网络分别学不同方面的设计哲学值得在其他场景复用:一个网络学总体特征,另一个学残差/差异特征

评分

  • 新颖性: ⭐⭐⭐⭐☆ 运动解耦让动态点变"伪静态"的insight很巧妙,但核心组件(3D追踪器、BA、尺度图优化)都是已有技术的组合
  • 实验充分度: ⭐⭐⭐⭐⭐ 在3个数据集上做位姿评估+3个数据集做深度评估,消融实验覆盖运动表示、网络架构、深度优化、深度先验等多个维度,非常全面
  • 写作质量: ⭐⭐⭐⭐⭐ 论文结构清晰,motivation到方法到实验的逻辑链条完整,图示直观(特别是Figure 4的运动解耦示意图)
  • 价值: ⭐⭐⭐⭐⭐ 作为ICCV Oral实至名归,核心贡献是将传统BA扩展到动态场景的统一框架,方法简洁有效,在位姿估计上取得压倒性优势,对SLAM和3D重建领域有重要推动