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的稀疏深度约束来优化稠密深度图,确保时序一致性
关键设计¶
-
运动解耦机制(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)。
-
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\))过滤动态点;深度更新时使用所有点以充分利用运动解耦的优势。
-
全局深度优化(Global Refinement):BA只优化了稀疏查询点的深度,稠密深度图仍不一致。引入2D尺度网格\(\theta_t\)对每帧深度图做乘性缩放:\(\hat{D}_t[\mathbf{x}] = \theta_t[\mathbf{x}] \cdot D_t[\mathbf{x}]\)。通过两个损失联合优化:
- 深度一致性损失\(\mathcal{L}_{\text{depth}}\):使缩放后的稠密深度与BA稀疏深度对齐
- 场景刚性损失\(\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追踪器,扩展到更大更多样的动态数据集可能提升泛化性
与相关工作的对比¶
- vs DROID-SLAM / DPVO:这些是学习型VO/SLAM方法,但假设静态场景,在高动态场景下位姿估计严重退化。BA-Track通过运动解耦消除了这一限制
- vs MonST3R:MonST3R用光流motion mask过滤动态区域后做全局位姿优化,需要大量显存(48GB GPU限制90帧),且在动态区域重建不完整。BA-Track通过解耦允许动态点参与优化,更高效
- vs LEAP-VO / ParticleSfM:采用轨迹过滤策略去除动态outlier,但信息损失。BA-Track保留所有点的信息,且在Sintel ATE上超越LEAP-VO一倍以上
- 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重建领域有重要推动