GradSLAM
Murthy 2020 · 论文
一句话总结 — 一个PyTorch框架,将稠密SLAM表述为一个完全可微的计算图——对信赖域优化、表面测量、融合与光线投射进行平滑重参数化——从而使梯度能够从3D地图端到端地流回到2D像素。
问题
将表示学习与SLAM相结合是一个开放性问题,因为SLAM系统高度模块化且复杂。从功能上看,SLAM将原始传感器输入转化为关于机器人与环境状态的分布——如果这个映射 是可微的,那么梯度 就能回答”某个特定像素测量对最终3D地图的贡献有多大?“这一问题,基于任务的误差信号也就可以端到端地训练表示。但稠密SLAM的多个组件是不可微的,或者其梯度几乎处处为零:LM求解器要做离散的增阻/减阻决策,建图涉及裁剪/索引/阈值化以及新元素与已有元素的硬性判定,而光线投射则沿射线进行离散步进。
方法与架构
GradSLAM将每个非平滑模块替换为尽可能精确的可微替代版本,然后将它们组合成完整的处理流程。
可微LM(LM)。 对于目标函数 ,LM步骤必须通过比较当前迭代点与前瞻迭代点处的误差范数 和 ,来决定是增阻还是减阻。GradSLAM用基于广义逻辑函数构建的平滑门控函数替换这个离散开关:
其中 控制衰减速率, 限定阻尼范围——整个优化器由此变成一个可微计算图。
可微建图与融合。 表面测量通过三种方式被平滑化:每个有效像素的测量值是其邻域的一个核函数 (在2D中为双线性插值);一次实时测量与地图元素之间的关联是软关联,以受深度传感器特性启发的高斯衰减 (其中 是相对相机射线的径向深度)在最近的候选元素之间进行分散;并且默认情况下每次测量都被视为一个交给可微融合步骤处理的新元素。融合操作(其使地图规模与已探索体积成正比,而非与时间成正比)使用逻辑衰减函数来平滑经典加权平均方案中生硬的截断阈值。
可微光线投射。 射线以一个以像素深度测量值为中心的高斯衰减,在其所穿过的所有体素上进行池化;射线相对于像素位置的导数采用Igehy风格的有限差分,基于相邻射线计算:。
案例研究。 三个经典稠密系统由这些模块重新组合而成:KinectFusion(TSDF体,其截断SDF 采用平滑逻辑截断,因为 中的取整算子以及在 处的硬截断都会阻断梯度)、PointFusion(surfel地图,采用本文的软关联建图方法和PointFusion的融合规则),以及**ICP-SLAM**(帧到帧ICP里程计以及帧到模型两种变体)。所有这些都完全在GPU上运行,并暴露出相对于任意中间变量(相机位姿、像素强度/深度、优化器参数、相机内参)的梯度。
实验结果
- LM与经典求解器对比: 在一组共100个曲线拟合问题(分别针对指数、正弦和sinc函数;参数从中采样;迭代10/50/100次)上,LM在参数空间和函数空间的MSE方面均与LM表现几乎一致。
- 轨迹精度(ICL-NUIM living_room_traj0分片,ATE/RPE): ICP-Odometry为0.01664/0.0237,对比不可微版本的0.029/0.0318;ICP-SLAM为0.01660/0.0204,对比0.0282/0.0294;PointFusion为0.0072/0.0101,对比0.0071/0.0099;KinectFusion为0.016/0.021,对比0.013/0.019——可微化”在性能上几乎没有实质变化”。
- 重建质量: 在同一序列的一个子片段上,可微KinectFusion得分为21.301,而Kintinuous为18.625(论文提醒该比较对其自身有利,因为平滑截断保留了一些噪声伪影,而Kintinuous只保留高置信度的点)。
- 在TUM RGB-D、ScanNet以及一段内部采集的Intel RealSense D435序列上给出了开箱即用的定性结果。
对SLAM的意义
GradSLAM是首个通用的可微SLAM框架,将”SLAM作为一个层”从一句口号变成了可运行的研究代码。它与BA-Net、Theseus和LieTorch属于同一运动——将几何优化嵌入到网络内部——并为使用来自下游建图质量(而非逐帧标签)的监督信号来训练感知模块(深度先验、传感器噪声模型、代价函数)打开了大门。这个开源的PyTorch库仍是可微机器人感知研究的常见起点。
相关条目
- Differentiability — 为何可微几何流程重要
- BA-Net — 作为网络层的可微光束法平差
- Theseus — 通用的可微非线性最小二乘库
- Lietorch — PyTorch中的可微李群运算
- ElasticFusion — 与gradSLAM可微化的系统相关的surfel融合谱系
- KinectFusion — 本文以可微方式重新实现的TSDF融合流程