SLAM++: SLAM at the Level of Objects

点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

作者:robot L

本文转载自:https://zhuanlan.zhihu.com/p/102562833

去年读了不少论文,但是感觉还是记录下来印象更深刻一些。就在知乎记录吧,内容基本都是是翻译过来的,由于时间有限,没有仔细润色,可能不太通顺,以后在慢慢改。

这里记录第一篇文章:

R. F. Salas-Moreno, R. A. Newcombe, H. Strasdat, P. H. Kelly. SLAM++: Simultaneous Localization and Mapping at the Level of Objects. IEEE Conference on Computer Vision and Pattern Recognition, 1352-1359, 2013.

摘要

R. F. Salas-Moreno et al. 展示了一个新的面向物体的3D SLAM框架,其利用了先验信息的优势:许多场景由重复,特殊类别的物体和结构组成。当一个手持深度相机在一个杂乱的场景中运动,实时3D物体识别和跟踪提供了6维相机-物体约束,通过位姿图进行优化。这提供了SLAM的描述和预测能力,其执行稠密表面重建,但是进行高度压缩的表示。作者证实在大大型杂乱环境中能够进行实时增量SLAM,包括回环,重定位,运动物体检测,和物体级别场景描述的生成。

1. 介绍

大多数当前实时SLAM系统在低层次实体级别进行操作(点,线,块或者非参数表面表示,例如深度地图),必须要鲁棒地匹配,几何地变换和优化从而能够表示真实世界的错综复杂。现代处理硬件允许细节和尺度的层次提升,更多的兴趣转向了面向环境中存在物体和区域的几何的语义标号。但是,这个过程的某些想法揭示了大量的计算浪费;以及在SLAM操作闭环中更好地考虑领域知识的潜力。

作者提出了一个实时定位和建图范式,利用3D物体识别跳过低层次几何处理,直接在面向物体级别产生增量构建的地图。当一个手持深度相机在一个杂乱环境中运动时,物体很可能重复出现的先验知识使得3D识别和相对物体位置的位姿图地图的创建变得可能。这个图在新测量到达时连续被优化,并且一直保持下次相机测量的最新,稠密和准确的预测。这些预测被用于鲁棒的相机跟踪和主动搜索区域的生成用于进一步的物体检测。

我们的方法基于最近在实时3D物体检测和6DoF基于ICP的位姿修正的高效GPU并行应用。作者展示伴随着物体级别场景描述的显然好处,该范式使得地图存储与稠密重建系统表示相比的大量压缩,却有相似的预测能力;很容易应用到大尺度回环检测,重定位和用于特定领域先验的巨大潜力。

图1. (上)在SLAM++中,一个杂乱的3D场景被实时高效地在物体级别跟踪和建图。(左)一个实时场景在当前位姿处与合成渲染的物体。(右)我们对比一个原始深度相机法向量图和对应的我们物体图的高质量预测,被用于相机跟踪和掩膜物体搜索。

2. 使用手持传感器的实时SLAM

在SLAM中,从一个运动传感器实时建立一个内部一致的地图能够在任意长时间的运动中产生无漂移的定位。我们还没有看到真实可用的SLAM系统,可以嵌入到低成本设备中,且无需被非专家用户考虑或者理解就能使用。直到最近,最好的系统使用单目或者双目被动传感器。稀疏特征滤波方法如Mono-SLAM被提高通过“关键帧SLAM”系统如PTAM,被用于跟踪和bundle adjustment(BA)的并行,从而得到更多的特征和更准确的跟踪。

最近,一个突破已经被提供通过“稠密SLAM”系统,其利用GPU处理硬件来重建和跟踪全表面模型,使用非参数如网格或者隐式模型来表示。虽然该方法可以使用RGB相机,如DTAM,消费级深度相机已经出现在高表现,鲁棒的室内3D建图中,特别是通过KinectFusion算法。新的发展如Kintinuous已经解决了更大尺度的应用通过滑动体素,子块或者octree;但是一个真正可扩展的,多分辨率的,具有回环的稠密非参数表面表示仍然很难以捉摸,并且在对称环境中一直很浪费。

从稀疏的基于特征的SLAM(世界被建模为一个无连接的点云),到稠密SLAM(假设场景包含连续表面),我们已经看到了先验场景知识的增加。在SLAM++中,我们设置甚至更强的假设:世界在重复物体的形式上具有内在的对称性。虽然我们提前定义了场景中的物体,我们计划该范式允许场景中的物体被自动识别和分割为显著的和重复的元素。

物体SLAM具有许多基于特征SLAM方法的特性。不像稠密非参数方法,地图中相对少的离散实体使得联合优化所有物体位置来产生全局一致地图变得可能。地图实体现在是物体而不是点特征的事实把我们推到了一个前所未有的更强的位置;在6DoF中跟踪一个物体是足够的来定位一个相机,可靠地重定位一个丢失的相机或者回环检测可以在少量物体测量的基础上执行,由于它们的高度显著性。进一步地,并且更重要地,通过完全由我们对已知物体的稠密预测引导的主动跟踪和目标检测,即时目标检测提供了高效性和鲁棒性。

SLAM++和计算机视觉和机器人社区中场景重建和地图语义标号不断增长的兴趣相关,虽然我们强调在后处理几何标号和我们提供的闭环的,实时算法之间巨大的不同。最精致的工作之一由Kim完成。深度相机首先被用于扫描一个场景,类似于我们后面结果中提到的尺度和物体内容,然后所有数据被融合成一个单独的大点云。离线学习到的物体模型,用于处理大量实时物体类型,被匹配到联合帧中,优化相似性和物体配置约束。结果很令人印象深刻,虽然强调点在标号而不是辅助建图。我们可以在丢失数据中看到问题,不能被解决通过非交互的捕捉。其他好的使用RGB-D数据的标号工作由Silberman和Ren et al.完成,使用核描述子用于外观和形状来标记单个具有物体和区域特性的深度相机图片,

一些发表的方法使用物体检测,我们也这样做,目的不仅是标号而且提高了重建和跟踪;但是这些没有和我们相近的想法,包括实时处理,全3D操作,稠密预测和现代的图优化后端的组合。为了给出这类工作的概要,SRLAM组合了平面物体检测到基于特征的单目SLAM中。这些物体一旦通过SIFT描述子检测到,就会提高SLAM的质量优于它们已知的大小和形状,虽然物体只是简单的海报,并且场景比较小。同时,在EKF SLAM范式中,Ramos et al.证实了一个2D激光/相机系统,使用物体检测来生成离散的实体到地图中而不是使用原始的测量。最终,相同的物体检测辅助重建的想法在离线SFM中被使用。Bao et al.表示场景为一组点,物体和区域在二视角SfM中,并在图优化中联合昂贵地解决用于标记和重建,考虑所有场景实体的关联。

3. 方法

SLAM++在图2中给出综述,细节如下。

图2.  SLAM++流程图概述。给定一个实时深度地图,我们首先计算表面测量的顶点和法向量地图,作为序列跟踪和物体检测流程的输入。(1)我们使用在当前SLAM图中捕捉的稠密多物体场景预测以一种迭代最近点方法跟踪实时相机位姿(2)接下来我们尝试检测物体,之前存储在一个数据库中,现在在实时帧中,生成具有估计位姿的检测候选。候选通过具有检测位姿初始化的第二次ICP估计被精修或者拒绝。(3)我们增加成功检测到的物体到SLAM图中,以物体-位姿顶点的形式,与实时估计的相机-位姿顶点通过测量边相连。(4)来自SLAM图的物体提供一个预测深度和法向量地图到当前估计帧中,使得我们能够主动搜索那些没有被图中的当前物体描述的像素。我们在每个物体和实时图片间运行一个单独的ICP,得到额外的相机-物体约束到SLAM图中。

3.1创建一个物体数据库

在某个特定场景的在线操作之前,我们通过KinectFusion的交互式扫描快速制造重复出现物体的高质量3D模型,其中物体被没有重叠地圈出来。物体的网格使用Marching Cubes从KinectFusion的截断有向距离体素(Truncated Signed Distance Volume,TSDF)中提取出来。网格中的一小部分人工编辑被执行来分割物体和地面,并使用一个坐标系标记它,从而特定领域的物体约束可以被使用。重建物体然后存储在一个简单的数据库中。

3.2 SLAM地图表示

我们的世界表示是一张图,其中每个节点或者存储物体j的估计SE(3)位姿(相对固定世界坐标系的旋转和平移),或者存储相机在时间戳i处的历史位姿。每个物体节点标注为物体数据库中的一种类型。每个相机中的物体位姿的SE(3)测量在图中存储为一个因子,连接一个相机位姿和一个物体位姿;在相机位姿间表示相机运动估计(如,来自ICP),或者特定领域的结构化先验,如物体的特定类型必须和地面在同一个平面。图优化的细节参考3.5节

3.3 实时物体识别

我们遵从Drost et al.的方法通过网格来识别3D物体的6DoF位姿,在一个深度图片中。我们给出并行实现的细节,达到了多物体多实例的实时检测通过完全探索GPU的细粒度并行。

如一般霍夫变换(Generalised Hough Transform),在Drost et al.的方法中,一个物体通过在参数空间的投票累计被检测和定位。投票的基础是点对特征(Point Pair Features, PPFs)间的对应;在物体表面成对有向点的相对位置和法向量的四维描述子。具有法向量估计的点在双边滤波后的深度图片中随机采样得到。这些样本两两组合生成PPFs,投票用于包含相似PPF的6DoF模型配置。

每个物体网格的一个全局描述在GPU上被生成,通过离散化具有相似值的PPFs,并在通过并行的基础操作如减法,遍历和排序建立的搜索数据结构中存储它们(见算法1),由现代GPU模板库如Bolt提供。类似的结构也被建立从每个当前帧中。这个过程一般消耗不到5ms就能完成160K PPFs,并在未来当它们能够被自动分割时,能够被用于描述新物体类别。

匹配类似模型场景的特征可以被高效地并行执行通过一个向量化的二分搜索,为每个匹配产生一个投票。缓存中投票的累积在GPU中非常昂贵,许多县城需要原子操作当增加一个公用的内存位置来避免竞争条件。为了克服该问题,每个投票被表示为64位整数代码(图4),可以被高效地保存同时并行地减少。

排序放置对应的模型点,场景参考点并在内存中连续地对齐角度。这个通过并行减少来完成来累计相等的投票代码(算法2)。在峰值搜索后,用于每个场景参考点的位姿估计在CPU上聚类,根据[6]中的平移和旋转阈值。

3.3.1 主动物体搜索

标准的Drost et al.的识别算法的应用是高度成功的当物体占据大部分相机视场,但是对于物体较远或者被其他物体遮挡时效果较差,由于较差的采样点收敛。这里我们认识到SLAM++的主要好处之一。系统的视角预测能力意味着我们可以在深度像素的图片空间生成一个掩膜,它还没有被投影的已知物体所描述。这个测量的深度图片使用这些掩膜被裁剪,然后采样在未描述的区域进行(见图3)。

图3.  具有主动搜索的物体识别。(上-左)来自传感器的测量法向量地图。(上-右)来自图的预测视角。(下-左)白色为将要搜索的未描述的区域。(下-右)掩膜法向量地图用于识别

物体检测的结果经常是多个簇的峰值和量化的定位结果。这些必须传递到下一节解释的ICP精修中。

3.4 相机跟踪和使用ICP的准确物体位姿估计

从粗到精的跟踪:在KinectFusion中,最新的体素地图被用于计算到之前估计相机位姿处的视角预测,使得在线相机估计使用一个快速稠密ICP算法完成。在SLAM++中,和KinectFusion中早期建图阶段相对不完整的模型不同,我们跟踪一个完整的高质量的多物体模型预测。和KinectFusion相同,我们计算当前场景几何的参考视角预测,包含一个深度地图和一个法向量地图,在之前估计帧位姿中呈现,该位姿表示6DoF刚体变换,定义为特殊欧式群SE(3)的元素。我们更新当前相机到世界的变换通过估计一系列m次增量位姿更新,其参数化为一个六维向量,定义了一个SE(3)中的转动,其中第一次增量更新初始化为单位值。我们迭代地在实时深度地图中所有可用的合法像素上最小化整个深度图片点-面尺度:

这里  和  是投影数据关联的在对应像素  处估计的预测顶点和法向量,通过投影像素u处的顶点  从实时深度地图到参考帧,使用相机内参K和标准针孔投影函数  。当前实时顶点通过当前增量变换  被变换到参考帧:

我们选择  为一个鲁棒的Huber罚函数代替KinectFusion中使用的显式点相容性检测,从而使得一个软外点下降加权。一个基于高斯牛顿的梯度下降法在(1)中使用,得到正规方程的解决方案:

其中  是雅克比矩阵,  计算鲁棒核函数对当前估计误差的导数。我们解决6x6线性系统使用Cholesky分解。将求解得到的向量  通过指数映射到SE(3)中,我们由之前估计的变换:

估计的实时相机位姿  从而得到通过组合最终的增量变换  到前一帧位姿:

跟踪收敛:我们使用一个最大值m=10,并使用两个简单的原则检查优化过程中较差的收敛。首先,我们不尝试跟踪预测模型,如果它的像素收敛低于全图片的1/8。其次,在一次优化迭代结束后,我们在实时图片中计算与预测模型正确匹配的像素的比值,通过不考虑点面大于某阈值的像素。

跟踪模型初始化:我们使用稠密ICP位姿估计和收敛检测用于两个SLAM++中更进一步的关键成分。首先,我们注意到我们使用真实世界物体作为特征经常是容易产生歧义的,并且从单一视角很难分辨。因此,给定一个候选物体和检测的位姿,我们在检测的物体位姿中运行相机模型ICP估计,并使用之前描述的原则检测收敛性。我们发现对于正确检测的物体,来自检测器的位姿估计误差在30度旋转和50cm平移之内。这允许一组更保守的阈值,和早期的不正确物体的拒绝。

相机-物体位姿约束:给定SLAM++中被检测物体的积极集合,我们进一步估计相对相机-物体位姿参数,被用于推导场景位姿图约束。为了完成这个,我们运行实时帧和每个当前帧可见的模型物体间的稠密ICP估计。计算一个单独的相对位姿估计的能力引入了从后续的位姿图中修正较差初始化或者不正确跟踪物体的可能性。通过分析相机-物体位姿估计的收敛性的统计特性,我们可以保持插入物体的内点-外点比值,并且剔除表现较差的那些。

3.5 图优化

我们将估计i时刻的历史位姿  和静态物体  作为一个图优化问题。 表示帧i中的物体j的6DoF测量,  表示它的逆测量协方差,可以使用近似的Hessian  被估计(其中  是来自最后一轮物体ICP迭代的雅克比)。 是相机i和i+1间的相对ICP约束,其中  是对应的逆协方差。位姿  和  是变量,在优化过程中调节,  和  是测量,因此是常量。所有变量和测量都是6DoF,并表示为SE(3)中的元素。一个示例图在图5中展示。

图5.  实例图描述四个运动相机位姿(红)和三个静止物体位姿(蓝)。物体观测是二元相机-物体约束(黄),两个相机的相对ICP约束为橘黄色。我们也应用一元结构约束编码先验信息。

我们最小化所有测量约束的和:

其中  是马氏距离,  是SE(3)的对数映射。生成的最小二乘问题被解决通过LM算法;潜在的正规方程的稀疏性被探索通过使用一个稀疏的Cholesky分解求解器。

3.5.1 包含结构先验

额外的信息可以被加入在图中为了提高优化问题的鲁棒性和准确性。在我们当前的应用中,我们使用一个结构化平面先验,物体定位在一个公共的地面平面上。世界参考坐标系w定义在x和z轴的地面平面上,y轴与其垂直。地面平面通过使用初始估计 隐式地检测。它的位姿  在优化过程中保持固定。为了惩罚来自地面平面的收敛性,我们增强能量,

使用一组一元约束  ,其中  。特别地,我们设置y轴方向的平移  是0,x和z轴方向的旋转  和  是0。我们使用后续的逆先验协方差:

其中  是正权值。由于物体可能在x-z平面上位于任何位置,并且在y轴的旋转方向上没有任何约束,因此对应的权值设置为0;先验成分  ,  和  不影响能量函数,可以设置为任意值。

3.6其他先验

地面平面约束可以有超过位姿图外的值。我们可以指引点对特征采样并在物体的无约束自由度中为位姿投票。在ICP方法中,先验可以被用于能量最小化的一部分,从而将位姿拉向场景约束的位姿。虽然这个还没有实现,我们至少剔除了远离地面表面的物体位置。

3.7 重定位

当相机跟踪在系统中丢失后,进入重定位模块。这里一个新的局部图被创建并且进入跟踪,当至少三个物体和之前跟踪的长期图匹配时(见图6)。图匹配通过同时考虑局部和长期图作为一组网格中的有向点,并进入3.3节中的识别过程来完成。我们使用物体位置作为顶点,它们的x轴作为法向量。在长期图中匹配的最高投票的顶点被用于替代当前局部图中观测的顶点,并且相机跟踪被重新弃用,丢弃局部图。

图6.  重定位过程。当跟踪丢失,一个局部图(蓝色)被创建并和一个长期图进行匹配(红色)。(上)在重定位几帧后的物体场景和相机。(下)用于匹配的提取的有向点。连接性描述了检测序列,并且在识别过程中不被使用。

推荐阅读:

吐血整理|3D视觉系统化学习路线

那些精贵的3D视觉系统学习资源总结(附书籍、网址与视频教程)

超全的3D视觉数据集汇总

大盘点|6D姿态估计算法汇总(上)

大盘点|6D姿态估计算法汇总(下)

机器人抓取汇总|涉及目标检测、分割、姿态识别、抓取点检测、路径规划

汇总|3D点云目标检测算法

汇总|3D人脸重建算法

那些年,我们一起刷过的计算机视觉比赛

总结|深度学习实现缺陷检测

深度学习在3-D环境重建中的应用

汇总|医学图像分析领域论文

大盘点|OCR算法汇总

重磅!3DCVer-论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-论文写作与投稿 微信交流群,目前已满2000+人,旨在交流顶会(ICRA/IROS/ROBIO/CVPR/ICCV/ECCV等)、顶刊(IJCV/TPAMI/TIP等)、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近1000+星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

 圈里有高质量教程资料、可答疑解惑、助你高效解决问题

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值