[论文笔记]Meaningful Maps With Object-Oriented Semantic Mapping

一、主要内容

这篇文章做的也是semantic mapping的工作,创新的点是,不单给了每个点类别,同时给出了object的概念,存储了每一个object的3d点云。最终的地图是由object的点云和背景构成的语义地图。
文章新意不太多,主要是加了物体检测,但是SSD+额外的基于几何的点云分割感觉有点绕弯。另一篇用mask RCNN的应该更好。(不过文章引用和related works写的很好。

贡献

进行instance-level的物体检测,构建以object为单位(object models as central entities)的地图,比基于纯语义分割的semantic mapping高了一级。

模块

  • SLAM:ORB-SLAM2
  • 检测框架:SSD
  • 分割框架:一个3D点云的分割方法:Geometrically consistent plane extraction for dense indoor 3D maps segmentation
  • 融合:概率累加、类ICP的object与map融合方法
  • 相机:RGBD相机(primeSense)

流程

在这里插入图片描述
整个系统分为六个部分:

  1. SLAM接受每一帧的RGBD图像,建立无语义的地图,估计相机位姿。
  2. SSD接受每一个关键帧的RGB图像,得到object的bounding box,类别标签和置信度。
  3. 3D Segmentation模块,接受SSD模块预测的object结果,深度图像,*我猜应该还有这一帧SLAM给出的相机位姿?*关联每一个2D RGB图像上预测的object,对应的3D点云,并有精细的边缘。
  4. Data Association:把预测到的每个object的3D点云加入地图里。
  5. Object Model Update:更新map中每个object的累计概率,或在闭环检测后更新位姿?
  6. Map Generation:生成带有语义的地图。其实不知道这一步是干啥的,上面的描述应该是检测到物体就直接加在地图里了,虽然object的信息是额外存储的,可能这一步是想说,可以在map中加或不加语义信息?

二、模块详解

1. SLAM

这里提了一下,SLAM+semantic 应该是双向促进的。本文只用SLAM增益了语义分割(提供位姿),但没有通过语义信息增益SLAM。
其他就是正常的ORB SLAM2了。

2. SSD

使用的是COCO预训练的模型,这里就存在一个问题,coco数据集主要面向室外场景,在文章实验的室内环境中,识别到的物体只有10个,导致漏检很多。
此外说了一下为啥不用instance level semantic segmentation,主要是因为它们慢啊=-=。

3. 3D Segmentation

是基于几何的方法,存在会把两个相连的同类物体分隔为一个的情况。

4. Data Association

object是一个高层的抽象概念,维护的是object的几何,点云是它的一个属性。
其包含:对应3D点云、类别的累积概率、SLAM模块的位姿索引。
对于当前帧识别到的物体,若已存在,就把它加进去调整,若不存在,则插入。
判断是否存在,使用了类似ICP的方法,首先根据点云重心的欧式距离,找出最接近的一组候选object,然后使用最近列,看这个object和候选object直接,所有点对之间的欧式距离,如果超过50%点对的距离小于一个阈值,就认为是匹配到的object。

5. Object Model Update

更新object的累计概率。就是简单的累加,把新加入object这个类别的置信度加在累计置信度上。判断类别时就argmax一下。
由于不是通过semantic segmentation获取的像素类别,因此在发生位姿变换、闭环检测时,map中点的标签就需要根据对应object的标签更新。因此,系统把每个object存储下来,构建地图或调整位姿时映射到地图中就好。

三、问题和思考

文中实验表明,运行过程中,漏检比较多,误检比较少。3D点云分割、深度图噪声、相机分辨率和预训练的模型都有影响。也提出了一些改进的方法。
我觉得主要还是,分割和检测是分开的,整个系统就很繁琐,也容易出错。用端到端的方法应该会有提升。

你可能感兴趣的:(SLAM,论文笔记)