主要内容
基于RGB-D数据的语义建图(SLAM帮助语义)。具体过程如下
- 首先利用SSD执行单帧RGB图片(2D)物体检测。
- 接着基于检测结果和深度信息,利用3D分割算法进一步分割3D点云。
- 最终利用ORB-SLAM2的相机位姿信息将每帧的3D点云分割结果合并到地图中,建立语义点云地图。
特色:
- 非物体只维护点云,物体维护点云和类别标号。
- 点云分别在每个观测帧中维护。好处是闭环后点云也可以跟着观测帧的位姿变化。
- 语义更新:简单累加,取最大值。
未来工作
- 语义帮助SLAM。利用语义信息提高SLAM的精度,鲁棒性等。
N. Sunderhauf, T. T. Pham, Y. Latif, M. Milford, I. Reid. Meaningful Maps With Object-Oriented Semantic Mapping. IEEE/RSJ International Conference on Intelligent Robots and Systems, 5079-5085, 2017.
摘要
对于智能机器人与环境以有意义的方式交互,它们必须同时理解周围场景的几何和语义性质。至今主要研究已经分别解决了这些建图挑战,专注于几何或者语义建图。Sunderhauf等人解决了同时建立包含语义的物体级别的实体和基于点或网格的几何表示。作者同时建立了已知物体类别的之前未见过实体的几何点云模型,同时创建以这些物体模型为中心实体的地图。作者使用了稀疏,基于特征的RGB-D SLAM,基于图片的深度学习目标检测和3D无监督分割。
1. 介绍
对于移动机器人和环境有意义地交互,它们必须获得一个同时表达几何和语义信息的世界模型。但是,大多数现存在机器人建图和SLAM中的研究专注于建图一些语义类别但是忽略建模分离的物体实例或者需要一个已知的3D物体模型先验。
在本文中我们提供了一种创建更多有意义地图的方法,不需要之前方法的需求和限制:地图不仅表达了东西在世界的哪里,还包括了它是什么。我们的方法是及时的,由于专注于几何的机器人SLAM和基于深度学习的检测技术现在都足够成熟来被融合到一个面向物体的语义建图系统,可以创建丰富标号的地图,其具有几十个或者甚至几百个物体类别,同时维护几何准确性。
我们的语义建图是面向物体的,因为单独的物体实例是在我们地图中的关键实体。如图1所示,生成的环境地图富含语义信息,以分离的物体实例的形式。这些物体同时携带几何和语义信息以类别标号和置信度的形式。和早期工作的一个重要区分(如[2])是我们的地图不仅仅包含标号的独立3D点通过投影语义信息从图片到3D结构中。相反,物体是分离的实体,完全独立于地图的非物体部分。这允许更高级的场景理解,例如,机器人可以推理所有属于地图中的某个物体的3D点在操作中将会一起移动。
图1. 我们证实使用RGB-D数据面向物体的语义建图是可行的从小型的桌面环境(左)到办公室环境(中)到整个实验室环境(右)。图片展示了物体染色的3D地图结构。我们没有仅仅投影语义标号到3D点上,而是维护了地图中中心实体的的物体,并且不需要先验3D物体模型[1]。为此,我们的系统创建并扩展3D物体模型同时连续建图环境。物体检测和分类被执行使用卷积网络,同时一个无监督3D分割算法分配3D点的分割为每个物体检测。这些被分割的物体检测然后被融合到一个已知物体或者添加到地图的一个新物体中。ORB-SLAM2提供了一个全局SLAM解决方案,使得我们重建一个环境的3D模型,同时包含非物体的结构和多种物体的结构。
以物体为中心的方法由实例级别语义分割技术支持,其组合图片空间中基于有界框的物体检测和无监督3D分割。与我们的实例级别方法不同,语义分割方法例如[3][4]经常没有物体实例的标记,并且因此在单独的物体需要在地图中随时间被建模和操作的机器人建图设置中不可用。
我们的方法创建并扩展3D物体模型当它在建图环境时不需要如[1]中的先验已知3D模型。这在之前的技术中是非常重要的提高,因为一个语义类别的单独实例比如椅子可以在单个环境中变化很大,并且需要准确的3D模型对于这些变体在实际的机器人应用中是非常受限的。
在本文剩余部分,我们首先讨论相关工作在详细描述我们提出的系统之前。一个定量和定性的评估证实了语义建图系统被提供在第4节。最后我们讨论了结果和获得的启发,接着是在组合几何和语义建图领域的未来研究方向的讨论。
2. 相关工作
SLAM问题的几何方面已经被很好地理解并且达到了成熟的程度,其中城市级别地图可以被实时和准确地建立[5]。但是,这种地图的结果是几何实体(点,面,表面等),其对于建图和定位任务是有用的,但是不能在环境中在展示的实体上安排机器人完成一系列可能的操作。为了与环境进行交互,一种语义表示是必要的。语义标号的粒度依赖手头的任务。一个需要推理从A点移动到B点的机器人需要识别场景(房间,走廊,厨房灯),同时一个操作物体的机器人需要关于物体的识别和赋能信息(可以对这个物体做什么?如何抓取它?在环境中它的状态如何?)。
A. 语义建图
语义建图是一个给建图的实体赋值语义信息的过程(物体类别,身份,行为等)。它使用SLAM作为一个工具来推理环境中传感器的运动和位置,同时语义信息可以从一个不同的源头被获得。
第一批尝试语义建图的方法设计地图重建及重建地图的语义分割[6]-[8]。Pham等人[8]首先使用KinectFusion[9]从RGB-D图片中重建一个稠密3D模型,然后分配给每个3D点一个语义标号通过使用一个分层条件随机场(CRF)模型。Pillai和Leonard[7]使用一个单目SLAM系统来增强视频序列中物体识别的表现。他们展示了物体识别任务的表现被提高通过单目SLAM的时序支持。Herbst等人[6]提出一种无监督的算法用于物体发现通过比较通过多次访问同一场景得到的SLAM重建的3D模型。不像这些方法,我们的方法动态地跟踪相机,检测和重建物体模型。
其他语义建图方法包括在线场景重建和分割[10]-[16]。Mozos等人[10]分割范围传感器构建的地图到功能性的空间(房间,走廊,门口)使用一个隐马尔科夫模型。他们展示获得的语义信息可以被用于转化语义地图到一个拓扑地图。Pronobis等人[11][13]提出一个在线系统来构建环境的语义地图同时使用激光和相机。Cadena等人[14]使用不同物体检测器的机会分布式系统的组合得到的运动估计来超过单独系统。Vineet等人[15]提出一个在线的稠密重建方法,其解决了语义标号问题通过一个稠密连接的CRF。Kundu等人[16]推导了一个3D空间中的CRF模型,联合推理每个栅格的语义类别和占据。我们的工作,相反,建模物体为分别的实体,已经通知机器人它内在的性质(例如操作中的刚体运动等),其对于逐点标号的地图来说是不可能的。虽然我们能够使用一个后3D分割算法从逐点标号的地图中生成物体实例,这种方法对于在线系统来说是不高效的。
语义信息也能被加入到地图中通过物体模板匹配。Civera等人[17]匹配使用单目SLAM系统创建的地图点和一个已知的物体数据库,其使用基于特征的方法进行识别,能够被插入到地图中。这种方法创建了更完整的地图,允许尺度分辨率。类似地,Castle等人[18]在单目SLAM框架中使用平面已知物体。Salas-Moreno等人[1]创建基于物体的地图,其使用RGB-D信息来识别并插入一直物体模型。我们的工作区别于这些方法因为没有物体的先验数据库。我们的方法在线创建物体模型基于一个物体检测器的输出。
B. 物体检测和语义分割
纯几何对于物体检测任务来说是具有奇异性的,受机器学习领域的当前进步,丰富的先验能够从数据本身中被学习。具体地,我们对物体检测任务感兴趣,其能够被用于分离地图中的物体实例。一种用于物体检测的方法是基于建议的物体检测方法,其生成
与物体检测不同,语义分割[4]生成稠密的,逐像素的分类。这种方法用于语义建图的劣势在于它们缺少独立物体实体的标号。对于重叠物体的像素标号,因此,不允许场景中单个物体的识别,其可能导致SLAM框架中数据关联的奇异性。最近使用RGB图片朝向实例级别语义分割的工作包括[24]-[27]。虽然已经取得了巨大的进步,当前这些方法缺乏准确性和用于我们在线框架的速度。
3. 面向物体的语义建图
在本节,我们刻画了组成我们语义建图系统的主要成分。图2可视化了提出方法的关键步骤,同时图3可视化了不同成分之间的信息流。
图2. 在我们提出方法中的关键步骤可视化:(上-左)SSD[23]生成由边界框组成的物体建议框,类别标号和置信度。(上-右)我们的无监督3D分割算法在当前的RGB-D帧中对于每个物体创建了一个3D点云分割。(下一行)我们获得了一个包含语义实体的地图:物体携带一个语义标号,置信度,和几何信息。语义标号被染色在下左图片中。浅蓝色:显示器,粉色:书,红色:杯子,深蓝色:键盘。
A. SLAM
我们的语义建图需要观测一个场景时当前相机位姿的信息。该信息可能来自一个在后端运行的SLAM系统或者来自在一个已知地图上的定位。在本工作中,我们使用一个ORB-SLAM2的可用的RGB-D版本[5]来跟踪和建图,其同时使用RGB和深度信息用于稀疏跟踪。由深度通道生成的点云被投影到对应的传感器位置来得到一个环境的地图。
我们小心地称我们的方法是“语义SLAM”因为这需要两方面的信息流:SLAM帮助语义同时语义帮助SLAM。在提出的方法中,语义流只是单向的,即SLAM帮助语义;SLAM的输出(相机位姿,地图)被用于环境的一致语义标号。因此我们的工作属于“语义建图”的类别。但是,该系统可以被扩展到组合双向信息流但是现在被留到未来工作中。
B. 用于语义建图的物体检测
单独的物体在语义建图中是重要的实体。因此,一种定位和识别图片中不同物体实例的方法是需要的。即使这被认为是实例级别语义分割的过程[24]-[28],但是这些工作不足够快对于我们的语义建图框架。例如,DeepMask[28]一张图片需要1.6s。相反地,基于深度学习的物体检测方法已经展示处良好的结果和实时性表现[19]-[23]。
我们使用SSD方法[23]对每个关键帧以边界框的形式生成固定数量的物体建议框。SSD对每个建议提供一个类别标号和一个置信度得分
我们使用在COCO数据集上训练的网络用于我们的工作,其能够识别80类。一个前向传播通过网络的
C. 3D 分割
基于图片的物体检测方法很难返回适合物体的边界框(见图2上左)。但是,对于物体模型重建来说,生成一个准确的物体边界是需要的。为此,我们利用深度信息来生成一个准确的物体分割,然后将每个物体分割关联其中一个检测的物体标号或者不关联。
为了分割深度图片到物体中,我们跟随[31]中提出的无监督方法。我们首先过分割深度图片为超体素,并且构建一个连接临近超体素的邻接图。物体分割任务然后被构建为将图分割为连接的分量。但是,不像[31],它的图边通过分类边为1(保留)或0(切割)来启发式地切割,我们在每条边上设置一个权重,然后发现最优的输出通过使用Kruskal算法[32]。相同物体中的超体素之间的边应该保持地权重,否则高权重。令
我们建议读者参考[31]来了解提取3D场景中支持平面的技术细节,和[33]用于凸/凹计算。当执行时,3D分割一般消耗175ms。
D. 数据关联
在分割算法将一个3D点云分配给每个物体检测后,数据关联步骤确定是否被检测的物体已经在地图中存在或者作为一个新的物体对象被添加到地图中。我们执行这个通过一个两步流程:首先对于每个检测,一组候选物体路标被选择基于对应点云中心的欧式距离。然后我们执行一个路标和检测中3D点之间的最近邻搜索,并计算关联点对的欧式距离。一个K-D树结构帮助我们保持该步骤是高效的。一个检测被关联到一个已存在路标如果至少它的3D点的50%具有小于2cm的距离。数据关联步骤一般消耗30ms对于每个检测路标对。
E. 物体模型更新
如图3所示,在我们地图中的每个物体(i)分割的具有颜色的3D点云通过数据关联步骤关联到每个物体(ii)一个ORB-SLAM的因子图中路标被观测到的位姿的变量的索引。(iii)SSD物体检测器提供的每一类的置信度。后者是一个长度为
图3. 我们语义建图系统的综述。ORB-SLAM2执行每一帧RGB-D帧的相机定位和建图,SSD[23]检测每个RGB帧中的物体。我们改进的3D无监督分割方法分配一个3D点云分割到每个检测中。基于类似ICP匹配的数据关联得分决定是否在地图中创建一个新物体或者关联检测到一个现存物体中。在后者的情形中,地图物体的3D模型通过新检测的3D结构被扩展。每个物体存储3D点云分割,ORB-SLAM中的位姿图指针和每一类的置信度得分,当出现新的观测时被在线更新。
存储每个物体的点云分割允许我们重建一个物体模型当SLAM系统更新它的轨迹估计时,例如在闭环后。为了数据高效性,我们存储下采样点云,具有5mm的空间分辨率。该稀疏模型也被使用在上面描述的数据关联步骤中。
F. 地图生成
在我们系统中的地图被隐式地维护通过存储(i)在每个相机关键帧处观测的3D点云和(ii)存储分割的3D点云对于每个物体,和ORB的位姿图的指针。如果地图(或者它的子集)显式地被需要,例如用于路径规划或抓取点选择,我们可以通过根据对应位姿的最优估计投影存储的点云。当以这种方式创建地图时,我们维护1cm的分辨率对于非物体和0.5cm的分辨率对于物体。依赖应用需求,稀疏点云地图可以被转化为稠密网格通过合适的算法。
为了保证数据关联具有最新的信息,我们更新物体的点云模型当它被观测到时。