泡泡图灵智库,带你精读机器人顶级会议文章
标题:SegMatch: Segment Based Place Recognition in 3D Point Clouds
作者:Renaud Dubé, Daniel Dugas, Elena Stumm, et al.
来源:ICRA 2017
编译:黄文超
审核:杨小育
欢迎个人转发朋友圈;其他机构或自媒体如需转载,后台留言申请授权
摘要
大家好,今天为大家带来的文章是SegMatch:基于片段的3D点云地点识别。
在3D数据中进行地点识别是一个具有挑战性的任务,已有算法通常是基于2D图像的。对应3D点云,一般有基于局部特征和基于全局特征两类方法。基于局部特征的方法的缺点在于具有歧义性和对环境变化不鲁棒,而基于全局特征的方法则依赖于观测点。作者提出了SegMatch,一种基于3D片段匹配的可靠地点识别算法。基于片段的描述子在基于局部和全局的描述子之间提供了良好的折衷,结合了他们的优势,同时减少了他们各自的缺点。SegMatch不依赖于“完美分割”的假设,也不依赖于环境中“对象”的存在,这使得该算法能够在大规模,非结构化环境中可靠地运行。作者定量地证明了SegMatch可以在KITTI数据集的序列上以1Hz的频率实现精确定位,同时进一步展示了该算法能够实时、可靠地检测闭环,这一操作是在线执行的。此外,SegMatch算法的源代码公开。
主要贡献
1、提出了SegMatch,基于片段的3D点云地点识别算法;
2、提供了SegMatch的一个开源实现,能够在线、实时地进行闭环检测和定位;
3、在真实世界应用中对算法进行了详尽的评估。
算法流程
图1 系统架构。作者使用了模块化的设计,将系统分为四个模块:点云分割,特征提取,片段匹配和几何验证
点云分割
首先定义一个圆柱体区域提取局部点云,随后使用体素网格去滤除噪声。经过预处理后的点云使用文献 [22]中的算法进行分割(地面已经事先去除)。
特征提取
分割出点云之后就要对每个片段提取特征,这样可以压缩原始数据,从而有效地对片段进行识别和分类。这里作者使用了两种特征:① f1,基于特征值的特征,是一个七维的向量,其定义参考文献[23];② f2,基于直方图的特征,是640维的向量,由10个直方图组成,编码了点云的形状,具体的计算方法参考文献[6]。
片段匹配
在进行匹配之前,通过kd树在特征空间检索候选的匹配对象以提高效率,随后这些候选对象就输入分类器进行分类。在本文中,作者使用了随机森林,因为随机森林的分类性能不输于AdaBoost,同时对噪声(如错误的标注)不敏感。为了比较两个片段 Ci 和 Cj,作者将其各自的 f1 相减取绝对值之后将这三个向量(总共21维)都输入了分类器。至于直方图特征,作者计算其交集,得到一个10维的向量。最后随机森林分类器得到一个匹配得分 w,设定一个阈值就可以得到匹配的结果。注意这里满足匹配的结果可能不止一个,还需要后续的一步处理。
几何验证
这里使用了随机采样一致算法(RANSAC)进行几何验证,得到具有几何一致性的聚类,可以获得 6DOF 的变换和地点识别的候选。
[6] W. Wohlkinger and M. Vincze, “Ensemble of shape functions for 3d object classification”
[22] B. Douillard, J. Underwood, et al “On the segmentation of 3d lidar point clouds”
[23] M. Weinmann, B. Jutzi, and C. Mallet, “Semantic 3d scene interpretation: a framework combining optimal neighborhood size selection with relevant features”
主要结果
本文主要在KITTI数据集上进行实验。序列6用于训练分类器,序列0包含大型的回环,而序列5则用于展示算法的实时性能。训练集的产生过程如下:一个点云序列首先用来产生地图并且提取片段,随后当同一个地点被访问到时,就根据对应关系生成ground truth,使用 k 最近邻在特征空间中查找前200个样本作为该地点的正样本,而其他则作为负样本。作者使用这个方法生成了2000个正样本,800000负样本。
片段匹配性能实验
为了验证片段匹配方法的优劣,作者将本文提出的算法(RF_eigen+shapes)与基于欧氏距离阈值的算法(L2)和仅基于特征值特征的随机森林算法(RF_eigen)进行了对比,各算法的参数见下表,图3展示了ROC曲线,图4为示例的正确匹配的片段。
图3 三种算法的ROC曲线
图4 SegMatch算法检测到的正确匹配的片段
定位实验
根据上述训练出的分类器,设假正例率FPR为 0.2 作为分类器的工作点。同时作者提出了一个供比较的baseline系统,该系统基于Harris 3D特征点提取,FPFH特征描述,并使用几何验证进行匹配。图5展示了没有成功定位的概率随车辆运行距离的变化。RF_eigen+shapes方法总是能够在55米内成功定位,而L2方法则需要67米,RF_eigen需要88米。对于L2方法,虽然速度最快,但是造成了14次错误的定位;而基于随机森林的两种方法在35米内定位成功的概率为95%。
图5 定位不成功概率随行驶距离的变化
回环实验
首先使用ICP算法来给相邻的激光雷达帧间添加约束,并且建立全局地图,这必然会导致漂移,如图6(a)所示,其中红点表示分割和回环检测的执行地点,蓝线表示检测到的回环,没有误检测。(b)图展示了添加回环约束,经过位姿图优化之后的地图。
图6 SegMatch回环实验结果
Abstract
Place recognition in 3D data is a challenging task that has been commonly approached by adapting image-based solutions. Methods based on local features suffer from ambiguity and from robustness to environment changes while methods based on global features are viewpoint dependent. We propose SegMatch, a reliable place recognition algorithm based on the matching of 3D segments. Segments provide a good compromise between local and global descriptions, incorporating their strengths while reducing their individual drawbacks. SegMatch does not rely on assumptions of ‘perfect segmentation’, or on the existence of ‘objects’ in the environment, which allows for reliable execution on large scale, unstructured environments. We quantitatively demonstrate that SegMatch can achieve accurate localization at a frequency of 1Hz on the largest sequence of the KITTI odometry dataset. We furthermore show how this algorithm can reliably detect and close loops in real-time, during online operation. In addition, the source code for the SegMatch algorithm is made publicly available.
如果你对本文感兴趣,想要下载完整文章进行阅读,可以关注【泡泡机器人SLAM】公众号。
点击阅读原文,即可获取本文下载链接。
欢迎来到泡泡论坛,这里有大牛为你解答关于SLAM的任何疑惑。
有想问的问题,或者想刷帖回答问题,泡泡论坛欢迎你!
泡泡网站:www.paopaorobot.org
泡泡论坛:http://paopaorobot.org/bbs/
泡泡机器人SLAM的原创内容均由泡泡机器人的成员花费大量心血制作而成,希望大家珍惜我们的劳动成果,转载请务必注明出自【泡泡机器人SLAM】微信公众号,否则侵权必究!同时,我们也欢迎各位转载到自己的朋友圈,让更多的人能进入到SLAM这个领域中,让我们共同为推进中国的SLAM事业而努力!
商业合作及转载请联系liufuqiang_robot@hotmail.com