《DXSLAM: A Robust and Efficient Visual SLAM System with Deep Features》(2020 IROS)
代码地址:https://github.com/ivipsourcecode/dxslam
参考解读:https://zhuanlan.zhihu.com/p/425643589
关于global feature和local feature的解释说明:https://www.zhihu.com/question/31039746/answer/50516028
1 简介
与手工设计的特征点相比,通过将深度卷积神经网络(CNNs)无缝融入到现代SLAM框架中,能够提升系统对环境和视角变化的鲁棒性
2 主要贡献
算法层面
- 提供了一个完整的SLAM系统,包含回环检测、全局优化和重定位功能,基于的所有特征都是通过最先进的CNN网络提取,增强了对环境和视角变化的鲁棒性
- 提出了一种更加鲁棒的基于全局特征检索和组间匹配的 重定位 方法,较传统BoW方法具有更高的成功率和更低的计算成本
- 提供了一种更可靠的基于全局和局部特征的 LCD 方法,通过训练新的视觉词汇对局部特征聚合
工程层面
- 系统通过Intel OpenVINO工具包对特征提取进行优化,将Fast BoW用于LCD中,对现代CPUs进行了优化,目前看来是第一个基于特征且无需GPUs能满足实时运行的SLAM系统
3 主要结构
3.1 Feature Extraction
使用的是HF-Net,输出分别包含关键点、局部描述子和全局描述子
作者选择使用HF-Net并不仅受其功能驱动,通过结果表明选用HF-Net得到的特征效果更好
作者使用Intel OpenVINO工具包对HF-Net的预训练模型进行优化,在x86 CPU上重新实现了模型的推理,整个模型仅tbilinear interpolation operation(双线性插值)不能通过OpenVINO进行优化,因此将他移到OpenVINO推理之后的后处理阶段
3.2 词袋训练
在OpenLORIS-Scene数据集上采用增量方式(incremental manner)训练词袋
- 在训练阶段,首先通过HF-Net提取关键点和局部描述子
- 对每个pair的相邻帧,利用暴力匹配法(Brute-force)进行匹配,匹配的点对划分到同一个叶节点中,叫做视觉单词,未匹配的特征将被分配到增加的一个新的节点,每个节点按照keypoints的得分最多保留前300个
- 为提高特征匹配和整个SLAM系统效率,采用FBoW构建词袋,词袋为二进制形式,加快了加载和特征匹配的时间(初始化时间DXSLAM:ORB-SLAM2 : 40ms:6s)
3.3 基于全局特征的重定位(Global Features)
这里涉及到图像global descriptor的获取方法
- 基于BoW的方法,例如ORB-SLAM2在重定位时聚合local descriptor,计算词袋向量作为对当前帧的global descriptor
- 基于CNN的端到端计算图像的global descriptor
作者在文中提到基于学习到的全局描述符实现粗略图像检索已被广泛验证比BoW方法对环境和视角变化更加鲁棒,因此作者采用CNN提取global descriptor,在关键帧数据库中寻找候选帧,之后采用RANSAC+PnP的标准方法在候选帧中筛选匹配点并计算位姿,组通常是2或3
3.4 基于local descriptor和global descriptor检测回环
3.4.1 回环检测和重定位的区别
错误的回环检测(FP)会对SLAM系统造成毁灭性的打击,因此对回环检测的精度要求较高,而对于重定位对Recall的要求更高
precision从预测结果出发,描述了检测出来的正例结果中多少是真实正例,即预测的正例多少是准确的;
recall从真实结果出发,描述了真实正例中有多少被挑了出来
3.4.2 DXSLAM的回环检测实现
从流程图中看到较ORB-SLAM2中在寻找闭环候选帧中加了基于global descriptor筛选的过程,关于这一步的说明:
Because the BoW matching method aggregates local features by their distributions and discards their spatial relations, false matches can occur
即局部描述子丢失了空间关系可能会造成错误匹配,而global descriptor可以保留这些信息,因此此步筛选是有意义的
4 评估
4.1 Feature Evaluation
作者首先在OpenLORIS-Scene数据集上将HF-Net与其他手工设计和CNN特征提取方法(SuperPoint、D2-Net)进行对比,并尝试了不同keypoint和descriptor的组合
- 为不影响比较feature的性能,测试中关闭了重定位和LCD功能
- 由于OpenLORIS-Scene中的corridor和home序列有较多featureless的场景,纯视觉的SLAM不太可能完全track整个场景,所以主要评估算法其他几个场景的表现(office + cafe + market)
- 顶线上的每个黑点代表一个数据序列的开始。 对于每种算法,蓝色的点和线表示成功的初始化和跟踪。 每个场景左上角的百分比值是平均正确率,越大意味着越稳健。 右下角的浮点值是平均ATE RMSE,越小表示越准确。
注:DS-SLAM也是清华20年的文章,通过SegNet网络和运动一致性检验去除动态点的影响,看CSDN上的测评不能cover大多数场景,效果较差
结论:
- 在上述给出的测试数据上HF-Net综合准确率和误差整体表现较好
疑问:
- 该数据集也是清华提出来的,在自己的数据集上测试自己的算法表现较为优异,应该再加下别的benchmark比如TUM dataset进行测试更具有说服力
- 作者在related work中提到GCNv2也是类似的将局部深度特征加入ORB-SLAM2中的工作,但唯独没有测试GCNv2的性能
GCNv2代码地址:https://github.com/jiexiong2016/GCNv2_SLAM
4.2 Re-localization Evaluation
OpenLORIS-Scene数据集的office场景下存在一些受控的挑战因素,作者在该场景下对重定位功能进行了测试
重定位评价指标定义如下
实验结果如下
结论:
- 所有情况下DX-SLAM2表现均比ORB-SLAM2好
- 仅在视角变化该factor影响因素下,DX-SLAM重定位功能失效
4.3 Loop Closure Detection Evaluation
在City Center和New College数据集上进行测试,作者增加了个实验组叫HF-FBOW,改组算法不使用global descriptor对闭环检测第一步得到的候选帧进行筛选剔除,直接将FBoW得到的相似度最大的帧作为候选帧,该实验可证明global descriptor对闭环检测的贡献
结论:
- HF-Net显著提高了ORB-SLAM2的回环检测能力
- local descriptor和global descriptor的组合进一步提高了LCD
4.4 Full System Evaluation
- 在OpenLORIS-Scene和TUM RGB-D数据集上对整个SLAM系统进行评估,除了与DS-SLAM和ORB-SLAM2对比之外,还增加了一组DX-SLAM-no-incre,该组算法未使用增量方式对字典进行训练
- 与feature evaluation相同,关注 office + cafe + market场景下的性能表现
4.4.1 Test on OpenLORIS-Scene
结论:
- 增量式训练词袋使得算法更高效合理(efficient and reasonable)
- DX-SLAM的表现更好
Test on TUM RGB-D
结论:
- DX-SLAM对动态场景具备一定的鲁棒性,虽然不能cover所有的场景(第一个)
- 在静态场景下表现效果接近,根据DS-SLAM2作者在文章说的是原始的ORB-SLAM2已经可以处理低动态场景并能实现较好的表现,因此改善有限
original ORB-SLAM2 can handle the low-dynamic scenarios easily and achieve good performance, so the space that can be improved is limited.
4.5 Runtime Performance
- 分别在CPU和GPU平台测试,使用的GPU为NVIDIA GeForce GTX 1070 GPU (GPU TDP 150 Watts),CPU为Intel Core i7-10710U (CPU TDP 15 Watts, full system TDP 25 Watts)
- 在OpenLORIS-Scene数据集上测试,固定图片大小为640×480像素
结论:
- 相较其他CNN-based方法,HF-Net更加高效
- 经过OpenVINO优化,在CPU平台上HF-Net每张图片耗时为46.2ms(21.6FPS),这只是通过HF-Net得到关键点和描述子的时间,不包括SLAM的track的时间,SLAM系统特征提取和跟踪两个线程,在ROS上铜鼓RGB-D相机读取图像,以15Hz的频率输出位姿,未来可以通过通过CNN剪枝(pruning)、量化(quantization)和软件优化(software optimization)提升表现
5 改进方向
- 改进专用于SLAM用例的CNN架构和训练策略来提取更好的特征,例如SEKD
- 将深度特征融入更先进的SLAM系统如orb-slam3
6 改进思路
- DX-SLAM + DS-SLAM(即A + B),在分割结果的基础上将动态特征点去除,问题在于HF-Net能否得到物体的轮廓特征