InstantSfM

Zhong 2025 · 论文

一句话总结 —— 一个完全基于GPU、与PyTorch兼容的全局SfM流水线,采用稀疏感知优化,在大场景上相比COLMAP速度最高提升约40倍,同时精度相当。

问题

成熟的SfM系统仍以CPU为中心,构建在传统优化工具链(Ceres风格求解器)之上,这造成了”与现代基于GPU、由学习驱动的流水线之间日益严重的不匹配”,并限制了可扩展性——大规模图像集合可能需要数小时到数天才能处理完。GPU加速的光束法平差(bundle adjustment)已展现出并行稀疏优化的潜力,但将其扩展为一个完整的全局SfM系统,一直受到两个未解决问题的阻碍:恢复度量尺度,以及数值鲁棒性(离群点滤除可能使相机/点约束不足,产生秩缺陷的正规方程,从而破坏Levenberg-Marquardt求解器)。InstantSfM构建了这样一个完整的系统。

方法与架构

InstantSfM遵循全局范式(与GLOMAP类似):先做旋转平均(rotation averaging),再做全局定位(global positioning,GP),最后做光束法平差(BA)——所有阶段均在GPU上以PyTorch实现,并使用稀疏雅可比矩阵。GP从旋转后的射线方向 vij\mathbf{v}_{ij} 联合估计点 Xj\mathbf{X}_j、相机中心 ti\mathbf{t}_i 以及每个观测的尺度 sijs_{ij}:

θ=argminX,t,si=1Cj=1Pρ(vijsij(Xjti)22)\boldsymbol{\theta}=\arg\min_{\mathbf{X},\mathbf{t},s}\sum_{i=1}^{C}\sum_{j=1}^{P}\rho\left(\|\mathbf{v}_{ij}-s_{ij}(\mathbf{X}_{j}-\mathbf{t}_{i})\|^{2}_{2}\right)

随后BA通过最小化重投影误差 rij=Π(ζi,Xj,Ki)xij\mathbf{r}_{ij}=\Pi(\boldsymbol{\zeta}_{i},\mathbf{X}_{j},\mathbf{K}_{i})-\mathbf{x}_{ij} 来精调姿态 ζi\boldsymbol{\zeta}_i、内参 Ki\mathbf{K}_i 和点。二者均用LM步骤求解 (JJ+λdiag(JJ))Δθ=Jr(\mathbf{J}^{\top}\mathbf{J}+\lambda\operatorname{diag}(\mathbf{J}^{\top}\mathbf{J}))\Delta\boldsymbol{\theta}=-\mathbf{J}^{\top}\mathbf{r},其中BA的雅可比矩阵 JR2CP×(7C+3P)\mathbf{J}\in\mathbb{R}^{2CP\times(7C+3P)} 以块稀疏形式存储与处理。使其成为一个完整系统的两个贡献是:

rijd=1Depth(ζi,Xj,Ki)1d^ij,θ=argmini,jρ(rij+λdrijd)\mathbf{r}^{d}_{ij}=\frac{1}{\text{Depth}(\boldsymbol{\zeta}_{i},\mathbf{X}_{j},\mathbf{K}_{i})}-\frac{1}{\hat{d}_{ij}},\qquad \boldsymbol{\theta}=\arg\min\sum_{i,j}\rho\left(\mathbf{r}_{ij}+\lambda_{d}\mathbf{r}^{d}_{ij}\right)

无效的深度像素(天空、高光反射)通过一个二值掩码 mijm_{ij} 处理,该掩码设定参考值 d~ij1=mijd^ij1\tilde{d}^{-1}_{ij}=m_{ij}\cdot\hat{d}_{ij}^{-1},在一次统一的GPU运算中将该项退化为仅有重投影误差——不需要针对每个观测做线程分歧的分支判断。

实验结果

对SLAM的意义

离线SfM是SLAM研究的主力工具:它产生伪真值轨迹、标定参数以及用于训练NeRF/3DGS和基于学习的SLAM系统的带姿态图像——将其速度提升一个数量级会缩短这整个生态系统中每一次迭代循环的时间。InstantSfM延续了从COLMAP确立的缓慢增量式CPU流水线(沿袭GLOMAP的全局公式化)向外转移的趋势,而它将深度先验融入雅可比矩阵的技巧,是将学习到的先验融合进经典估计方法(而非取而代之)的一个清晰范例。其动态参数提取的思路——每次迭代都重构问题以保持正规方程满秩——在任何驻留GPU的SLAM后端中都具有广泛的实用价值。

相关条目