BA-Net
Tang 2019 · 论文
一句话总结 — BA-Net(ICLR 2019)将光束法平差变成了一个可微的网络层,通过带有学习特征金字塔和紧凑基深度图参数化的特征度量BA(feature-metric BA)来求解稠密SfM问题,并实现端到端训练。
问题
传统SfM流水线是模块化的——特征提取、匹配和光束法平差是各自独立设计和优化的——因此特征从未针对其所服务的几何估计任务进行过优化。几何BA只使用角点/斑点特征,并受困于匹配外点;光度(直接法)BA使用所有像素,但其目标函数高度非凸,因此对初始化、曝光变化和运动物体十分敏感。将学习与BA统一起来的障碍在于,BA是一个迭代的Levenberg–Marquardt(LM)过程,其中包含两个不可微的if-else判断:收敛阈值终止条件,以及阻尼因子 的升/降更新。BA-Net提出的问题是:能否通过一个可微的BA层来求解稠密SfM,使来自重建损失的梯度直接训练特征本身?
方法与架构
网络接收多张图像,输出相机位姿 和稠密深度图 ;一个共享的DRN-54骨干网络接入两个头,其输出在BA层中汇合。
- 特征金字塔(BA所对齐的对象)。 一个FPN风格的自上而下路径带有侧向连接,将骨干特征图 上采样2倍,与 拼接,并施加一个 卷积将通道数降到128,得到每张图像的金字塔 。BA最小化的是特征度量误差,而不是强度误差或重投影误差:
其中 将3D点投影到图像上, 是图像 中一个带深度 的归一化像素, 是图像 的位姿。经过BA训练后,学到的特征会形成一个具有平滑盆地的清晰全局最小值(不同于RGB距离或预训练分类特征),从而扩大了收敛半径。
- 基深度图(BA所优化的对象)。 逐像素深度(在 分辨率下有7.68万个未知量)被替换为一个学习到的单目编码器-解码器,其最后一层特征图作为128个基深度图 (一个 矩阵):
因此BA只需优化组合权重 (带有学习到的初始值 ),同时ReLU保证深度非负,而稠密的逐像素深度依然可以被恢复。
- BA层(可微LM)。 每次迭代计算残差 、雅可比矩阵 、高斯-牛顿Hessian矩阵 及其对角线 ,然后进行标准的LM步骤
两个不可微的判断被去除的方式是:(i)固定迭代次数(“不完全优化”:每个金字塔层5次LM迭代,3层从粗到细共15次迭代,每次迭代都进行特征warp),以及(ii)用一个MLP来预测 :对 在像素上进行全局平均池化,得到一个128维向量,送入四个带ReLU的全连接层。这样每一步都成为一个可微函数 ,而解的更新 (深度权重用加法,位姿用SE(3)指数映射)可以从位姿/深度一路反向传播到特征金字塔。位姿被初始化为单位旋转和零平移。
- 训练。 采用监督方式:四元数旋转损失 、平移损失 ,以及berHu深度损失;使用ADAM优化器,初始学习率0.001,骨干网络由DRN-54初始化。
实验结果
- ScanNet(1413条训练序列/100条测试序列;547991个训练对和2000个测试对):BA-Net达到1.018°旋转误差 / 3.39厘米平移误差,相比DeMoN的3.791° / 15.5厘米,光度BA的4.409° / 21.40厘米,以及几何BA的8.56° / 36.995厘米;深度abs-rel为0.161,RMSE(线性)为0.346,相比DeMoN的0.231 / 0.761。无论在ScanNet还是在DeMoN自身的训练数据上训练,它都优于DeMoN。
- KITTI(Eigen划分;在里程计序列09/10上以5帧片段测试):深度abs-rel为0.083,sqr-rel 0.025,RMSE 3.640,RMSE-log 0.134——优于有监督方法(Eigen方法abs-rel 0.203)和无监督方法(Zhou方法0.208,Wang方法0.151,Godard方法0.148);ATE为0.019,相比0.045(Wang 2018)和0.063(Zhou 2017)。
- 附录中的消融实验比较了学习特征与预训练特征、BA与直接SE(3)位姿回归、可微LM与高斯-牛顿法,以及预测 与常数 ——每个组件均有帮助;附录还报告了最多5视角的多视角SfM结果以及与CodeSLAM的比较。
对SLAM的意义
BA-Net是”可微光束法平差”这一方向的开创性论文:它证明了SfM/SLAM核心的经典几何优化可以存在于网络内部并被端到端训练,将多视角几何硬编码为结构,同时只学习几何本身无法提供的部分(特征和深度基)。这一方案成为DROID-SLAM和DPVO(可微稠密BA层)以及诸如Theseus这类通用可微优化库的核心,而其低维可优化深度的思想与CodeSLAM风格的潜在深度编码密切相关。如果你想理解现代学习式SLAM后端,这里是一个很好的起点。