Learned vs hand-crafted

经典SLAM是由手工设计的模块串联而成的流程:角点检测器(FAST、Harris)、描述子(ORB、SIFT)、匹配器(最近邻+比值测试)、鲁棒估计(RANSAC),以及非线性最小二乘后端。每一个组件都编码了人为的假设——什么样的特征算”好”、应该预期什么噪声分布、用哪些启发式规则来剔除外点。深度学习提供了另一种思路:让网络从数据中学习这些函数。

两种截然不同的策略

将学习方法应用于SLAM有两种途径,有必要将它们区分开来:

逐模块替换对照表

Level 5的大部分内容都是围绕某篇论文替换了哪个经典模块来组织的:

流程阶段手工设计标准方法学习型替代方案
关键点检测+描述FAST/Harris + ORB/SIFTSuperPoint、R2D2、DISK、XFeat
匹配最近邻+比值测试SuperGlue、LightGlue、LoFTR(无检测器)
地点识别词袋模型(DBoW)NetVLAD、Patch-NetVLAD、HF-Net
深度双目块匹配/深度传感器MonoDepth、MiDaS、Depth Anything
光流Lucas-Kanade、变分光流RAFT、SEA-RAFT
重定位针对三维地图的描述子匹配PoseNet(回归)、DSAC/ACE(场景坐标)
外点剔除/求解器RANSAC、Gauss-NewtonDSAC(软RANSAC)、展开式/隐式BA层

阅读一篇新论文时,首先要问的问题是:它对应表中哪一行,是否保留了经典后端?

各自的优势场景

学习型模块明显占优的场景是那些会破坏手工假设的条件:严重的光照变化、弱纹理、运动模糊、季节性或昼夜外观变化,以及宽基线匹配。学习型特征正是在这些变化上进行训练的,而手工设计的描述子只能覆盖其设计者所能想到的情形。

经典模块仍然占优的场景是纹理丰富、光照良好、高帧率的场景——ORB的计算成本要低几个数量级;经典几何方法能给出精确、可验证的解,不存在训练分布方面的顾虑;而且失效模式是可分析的。RANSAC的失败可以通过内点数量来诊断;而网络的失败往往是无声的。

端到端位姿回归尤其明显逊于几何方法:直接回归位姿的网络(PoseNet式)表现更像图像检索,而不像三角化,其误差不会像几何方法那样随着纹理增多或标定改善而减小。这正是该领域最终收敛到混合方案——学习型感知、几何式估计——的原因。

实用经验法则

问题偏向经典方法偏向学习方法
计算预算嵌入式CPU有GPU可用
环境受控、有纹理外观变化、低纹理
可解释性/可认证性必需可选
针对你所在领域的训练数据稀缺充足

采用学习型模块时的常见陷阱

混合方案的共识

在实践中,最成功的现代系统都是混合方案:学习型感知为经典几何优化提供输入(例如,在ORB-SLAM式流程中使用学习型特征,或DROID-SLAM围绕经典BA求解器进行学习型更新)。SLAM的最大似然机制很难被一个黑箱模型击败;而为其提供输入的感知层,才是学习方法首先见效的地方。Differentiability一节介绍了使这两部分能够联合训练的技术。

对SLAM的意义

Level 5中几乎每一篇论文都是”学习型与手工设计”这一光谱上的一个点,了解一种方法所处的位置,就能知道它解决了什么问题、代价是什么。在设计系统时,这一框架将”是否应该使用深度学习?”这一问题转化为具体的工程问题:哪个模块正在失效、你的平台是否负担得起推理开销,以及几何部分是否应该保持经典方式。

相关条目