ORB特征均匀提取策略对性能的提升有多大?

2019 年 9 月 16 日 计算机视觉life

点击上方“计算机视觉life”,选择“星标”

快速获得最新干货


本文知乎作者杨小东授权转载,未经授权禁止二次转载

原文: https://zhuanlan.zhihu.com/p/57235987

在ORB-SLAM(2)的论文中,作者提到了一种使图像中提取的ORB特征分布更加均匀的方法。这种策略是否有助于提高SLAM的性能?为什么作者不使用OpenCV中的ORB特征提取的实现?本文将通过实验,比较这两种ORB特征提取方法对ORB-SLAM2性能的影响。

两种ORB特征器效果对比

随便从TUM数据集中取出一张照片,分别使用OpenCV的实现和ORB-SLAM2的实现提取1000个ORB特征,效果如下图。很明显,OpenCV提取的特征点比较集中,出现了扎推现象。而ORB-SLAM2提取的特征点,分布比较均匀。

直观上想象,特征点分布比较集中,极端情况就是所有特征都集中到了一点,那么相机的位姿就无法解算。特征点分布太过集中,SLAM系统的精度可能会有所下降。下面,通过实验验证这一想象。


实验条件:

数据集: TUM RGB-D数据集中的6个序列 (严谨的说,以下结论目前只适用于RGB-D相机,没有测试单目和双目的效果)
系统:Ubuntu 16.04
CPU: Intel® Core™ i7-8700 CPU @ 3.20GHz × 12
OpenCV: 3.3.1
ORB-SLAM2参数配置:使用ORB-SLAM2原版配置

轨迹精度对比

采用的评测标准是absolute trajectory error(ATE) RMSE, 结果见下图。大部分序列下,ORB-SLAM2版本的精度更高。fr1_xyz序列,OpenCV版本的精度稍高,但是和ORB-SLAM2的精度也差不太多。而OpenCV的版本在fr2_3h序列中出现了跟丢现象,直到最后也没有找回,所以测试轨迹精度的数据只占了整个序列开始很小一部分,在轨迹精度上稍显高一些。实际上,fr2_3h的序列中,相机运动的较快,场景中也距离相机较远,光线也不好。ORB-SLAM版本在所有序列上都没有跟丢,因此鲁棒性更高。总之,ORB-SLAM2的均匀化特征提取的策略提高了系统的精度和鲁棒性。



轨迹误差对比, ATE, RMSE (m). 
备注:freiburg1_xyz(fr1_xyz),  freiburg1_desk(fr1_desk), freiburg2_360_hemisphere(fr2_3h), freiburg2_desk(fr2_desk), freiburg3_long_office_household (fr3_loh), freiburg3_sitting_halfsphere(fr3_sh)


轨迹误差


地图对比

就ORB-SLAM2的版本而言,地图点比较均匀和稀疏,关键帧之间的边相对较少。这似乎表明ORB-SLAM2的均匀提取策略降低了特征的重复性,不利于保证同一个特征在多帧之间都提取到

而OpenCV版本的地图点比较集中,这是由于OpenCV选择响应最高的点所导致的。关键帧之间的边也更加密集,这似乎说明响应高的那些ORB特征点具有更好的复现性,可以在连续的更多帧重复提取、跟踪。但是,需要注意的是,这些特征点都集中在一起,即便形成了更强大的网络,获得的估计精度还是没有ORB-SLAM2版本的高。也就是说,特征点均匀分布是可以提高系统精度的。


序列fr2_desk的地图


下面再看一下,在fr2_desk序列中,每个frame追踪到的地图点的个数。ORB-SLAM2版本相对于OpenCV版本追踪的地图点数量要少,这也与上图中OpenCV版本的关键帧网络更加稠密相互印证。但是,这并不能表明ORB-SLAM2追踪的质量差,因为有可能是ORB-SLAM2的地图点的数量本来就少呢?所以我又统计了以下地图中关键帧的数量和地图点的数量。ORB-SLAM2版本的关键帧数量比OpenCV版本的还多,但是地图点的数量没有OpenCV版本的多。ORB-SLAM2版本中,地图点少,关键帧多,原因可能是1. ORB特征的复现性不好,不能在较多帧之间追踪,构造更多的地图点。2. 均匀化的提取策略提取的特征点数量没有OpenCV原版实现中提取特点数多。(这两点目前没有验证。)

值得注意的是,虽然ORB-SLAM2版本每一帧跟踪的特征点数少,但是最终的轨迹精度却很高。这就体现出ORB-SLAM2特征提取方法的优越性了,可能是特征点分布比较均匀的功劳。OpenCV版本跟踪的点数虽多,但是这些点比较集中。


序列fr2_desk中每帧追踪到的地图点个数——直方图
每个序列的地图中关键帧的数量
每个序列的地图中地图点的数量


地图点存活率对比

提取ORB特征,一是为了构造地图点,二是为了实现数据关联。一个ORB特征点对应的地图点被越多的帧观测到,那么就能形成越强大的Graph,从而也能保证系统的精度。也就是说,多帧之间的ORB特征应具有很好的重复性,这样才能保证形成强大的网络。一个地图点能够被越多的帧观测到越好。于是,我统计了每个特征点相连的关键帧数量。从这幅图似乎感觉两种特征提取方法差别不大,可能对数据影响最大的是实验环境和运动轨迹吧?


单个地图点观测到的关键帧数量


特征提取时间

ORB-SLAM2的特征提取时间为10.24±2.64 ms,OpenCV的特征提取时间为9.11±2.82 ms。两者差别不大。

总结

ORB-SLAM2中的ORB特征提取方法相对于OpenCV中的方法,提高了ORB-SLAM2的轨迹精度和鲁棒性。增加特征提取的均匀性可以提高系统精度,但是似乎会降低特征提取的重复性。

我只用了TUM RGB-D数据集的6个序列来测试,因此相关结论仅供参考。

从零开始学习三维视觉核心技术SLAM,扫描查看介绍,3天内无条件退款

早就是优势,学习切忌单打独斗,这里有教程资料、练习作业、答疑解惑等,优质学习圈帮你少走弯路,快速入门!

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、算法竞赛、图像检测分割、人脸人体、医学影像、自动驾驶、综合等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

推荐阅读

从零开始一起学习SLAM | 为什么要学SLAM?

从零开始一起学习SLAM | 学习SLAM到底需要学什么?

从零开始一起学习SLAM | SLAM有什么用?

从零开始一起学习SLAM | C++新特性要不要学?

从零开始一起学习SLAM | 为什么要用齐次坐标?

从零开始一起学习SLAM | 三维空间刚体的旋转

从零开始一起学习SLAM | 为啥需要李群与李代数?

从零开始一起学习SLAM | 相机成像模型

从零开始一起学习SLAM | 不推公式,如何真正理解对极约束?

从零开始一起学习SLAM | 神奇的单应矩阵

从零开始一起学习SLAM | 你好,点云

从零开始一起学习SLAM | 给点云加个滤网

从零开始一起学习SLAM | 点云平滑法线估计

从零开始一起学习SLAM | 点云到网格的进化

从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码

从零开始一起学习SLAM | 掌握g2o顶点编程套路

从零开始一起学习SLAM | 掌握g2o边的代码套路

从零开始一起学习SLAM | ICP原理及应用

从零开始一起学习SLAM | 用四元数插值来对齐IMU和图像帧

可视化理解四元数,愿你不再掉头发

视觉SLAM技术综述

研究SLAM,对编程的要求有多高?

深度学习遇到SLAM | 如何评价基于深度学习的DeepVO,VINet,VidLoc?

现在开源的RGB-D SLAM有哪些?

详解 | SLAM回环检测问题

汇总 | SLAM、重建、语义相关数据集大全

吐血整理 | SLAM方向国内有哪些优秀的公司?

最强战队 | 三维视觉、SLAM方向全球顶尖实验室汇总

SLAM方向公众号、知乎、博客上有哪些大V可以关注?

汇总 | 最全 SLAM 开源数据集

综述 | SLAM回环检测方法

干货总结 | SLAM 面试常见问题及参考解答
2019 最新SLAM、定位、建图求职分享,看完感觉自己就是小菜鸡!
2019暑期计算机视觉实习应聘总结

2018年SLAM、三维视觉方向求职经验分享

经验分享 | SLAM、3D vision笔试面试问题


最新AI干货,我在看  

登录查看更多
3

相关内容

即时定位与地图构建(SLAM或Simultaneouslocalizationandmapping)是这样一种技术:使得机器人和自动驾驶汽车等设备能在未知环境(没有先验知识的前提下)建立地图,或者在已知环境(已给出该地图的先验知识)中能更新地图,并保证这些设备能在同时追踪它们的当前位置。
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
56+阅读 · 2020年6月26日
【CVPR2020-Oral】用于深度网络的任务感知超参数
专知会员服务
25+阅读 · 2020年5月25日
基于视觉的三维重建关键技术研究综述
专知会员服务
154+阅读 · 2020年5月1日
【经典书】精通机器学习特征工程,中文版,178页pdf
专知会员服务
347+阅读 · 2020年2月15日
一种小目标检测中有效的数据增强方法
极市平台
117+阅读 · 2019年3月23日
一种关键字提取新方法
1号机器人网
21+阅读 · 2018年11月15日
【泡泡一分钟】动态环境下稳健的单目SLAM
泡泡机器人SLAM
13+阅读 · 2018年3月22日
文本识别 OCR 浅析:特征篇
开源中国
16+阅读 · 2018年1月6日
三大特征选择策略,有效提升你的机器学习水准
深度学习世界
8+阅读 · 2017年10月24日
Risk-Aware Active Inverse Reinforcement Learning
Arxiv
7+阅读 · 2019年1月8日
Arxiv
5+阅读 · 2018年12月18日
Arxiv
6+阅读 · 2018年7月9日
Arxiv
5+阅读 · 2018年5月1日
Arxiv
6+阅读 · 2018年3月12日
VIP会员
相关资讯
一种小目标检测中有效的数据增强方法
极市平台
117+阅读 · 2019年3月23日
一种关键字提取新方法
1号机器人网
21+阅读 · 2018年11月15日
【泡泡一分钟】动态环境下稳健的单目SLAM
泡泡机器人SLAM
13+阅读 · 2018年3月22日
文本识别 OCR 浅析:特征篇
开源中国
16+阅读 · 2018年1月6日
三大特征选择策略,有效提升你的机器学习水准
深度学习世界
8+阅读 · 2017年10月24日
Top
微信扫码咨询专知VIP会员