Zhang, Liang, Leqi Wei, Peiyi Shen, Wei Wei, Guangming Zhu, and Juan Song. “Semantic SLAM Based on Object Detection and Improved Octomap.” IEEE Access 6 (2018): 75545–59. https://doi.org/10.1109/ACCESS.2018.2873617.
1 Introduction
基于ORB-SLAM2,利用YOLO 实现物体检测,剔除掉先验动态物体上的特征点,提高精度;并建立物体级语义八叉树地图,且优化了制图的速度。
本文的贡献:
- 本系统可以检测80-200 种物体种类,而现有的语义制图系统只能检测不超过20个种类;
- 本系统不需要先验3D 模型就可以实现对环境中物体的3D 建模;
- 本系统利用的是物体级模型信息,而不是像素级的。
3 System Overview
3.1 SLAM Analysis
大多数基于特征的SLAM 系统基于一个强假设:移动物体上的特征点数量要远小于静态物体特征点数量。
八叉树地图Octomap 不仅可以存储RGB 和位置信息,还可以保存语义信息,且利用概率模型来构建更为精准的地图。
3.2 ORB-SLAM Analysis
ORB-SLAM2 的架构如Fig. 1所示,包含三个并行处理的线程:
- Tracking:负责实时定位每一帧图片对应的位姿,并决定哪些图片作为关键帧。与前一帧进行特征匹配并利用BA 进行位姿优化,如果跟踪失败,利用Bag of Word 进行全局重定位,将地图中的特征点进行重投影并进行位姿优化。
- Local Mapping:在获取一个新的关键帧之后,该线程对新地图点进行三角化,利用BA 对关键帧和地图点进行位姿优化,并对冗余的关键帧和低质量的地图点进行剔除。
- Loop Closing:对关键帧进行回环检测,若检测成功,计算相似度转换作为环路累积漂移,然后进行对齐、融合与位姿优化。
3.3 Overview of Semantic SLAM system
本文提出的语义SLAM 系统架构如Fig. 2所示,本系统是基于ORB-SLAM2 构建的,ORB-SLAM2 负责相机定位,并利用每一个RGB-D 图片帧进行制图。
tracking 线程使用关键帧进行跟踪,来减小移动物体的影响;local mapping 线程添加少量的关键帧来创造语义信息,因为语义信息的提取满足实时的要求。
本系统使用YOLO 网络对关键帧进行物体检测,并使用CRF (Conditional Random Field) 进行物体正则化来对YOLO 检测出的物体置信度进行矫正优化,该过程使用MS-COCO 数据集的统计数据计算得到的物体间约束。
当获取了每个物体的准确标签后,利用滤波器对特征进行筛选,并利用投影的点云来创建临时的物体模型;在此基础上,利用数据关联决定创建新的模型或是与地图中现有的模型进行融合。
最后,Map Generation 利用存储在物体中的点云生成八叉树地图,并使用多线程和Fast Line Rasterization 算法进行加速。
3.4 Relationship between Keyframes and Objects
借鉴ORB-SLAM2 系统中关键帧和地图点之间的关系来创建本系统关键帧和物体之间的联系。
本系统中,每个物体 $O_i$ 需包含:
- 物体中点云的坐标;
- 固定数量的类别标签,以及通过递归贝叶斯更新recursive Bayesian update 计算的置信度;
- 观测到该物体的关键帧;
- 物体中点云的Kd-tree 结构(用于快速查找);
- 物体所属的类别标签;
- 物体被观测的数量。
每个关键帧 $K_i$ 需包含:
- 用于物体检测的相应RGB 图片;
- 用于产生点云的相应深度图片;
- 本关键帧中观测到的物体。
4 Semantic Mapping
4.1 Improved SLAM
ORB-SLAM2 中,tracking 线程的步骤:
- 提取ORB 特征;
- ORB 特征与reference 帧进行特征匹配,初步计算相机位姿并返回匹配地图点(通过搜索相关的关键帧来获取)的数量;
- 利用匹配地图点进行位姿优化;
- 决定哪些帧作为关键帧。
为了减小动态物体的影响,对跟踪线程的第二步进行更改:由之前的reference 帧改为与关键帧进行特征匹配,这是因为旧的关键帧不包含动态物体的特征点。
跟踪线程的第三步改为:与第二步的结果比较匹配内点数量,来判断当前帧是否跟踪失败。
4.2 Object Detection
利用在COCO 数据集上训练的Tiny YOLO 网络进行物体检测。
4.3 Object Regularization
常规的物体检测等网络没有考虑上下文信息(场景信息),使用CRF 可为语义提取过程添加上下文信息约束,CRF 擅长对分类器的类别得分与图片的局部信息进行建模,可以视为一个最大后验概率问题。定义unary potentials 来对像素或图像块的所属类别进行概率建模,定义pairwise potentials 来对像素间或图像块间的关系进行建模。
作者构建了一个基于物体的概率稠密CRF 算法,较基于像素的方法大大减少了计算复杂度,相应的Gibbs 能量方程如下所示:
与文章(Runz 和 Agapito, 2017)相似,$x$ 表示类别标签;$i, j$ 取值1 到 $k$ ,其中 $k$ 表示地图中物体的数量;$Z$ 是归一化参数。本物体级 CRF 的目标是最小化 $E(x)$ ,相应的unary potentials 和 pairwise potentials 表示为:
其中,$\mu$ 函数被称为标签兼容性函数,用来描述相邻位置两个不同标签同时出现的可能性;$f_{i, j}$ 是第 i 个物体和第 j 个物体的约束。
其中,$p_{i, j}$ 表示两个物体出现在同一视野中的概率,通过对COCO 数据集进行统计分析获取,如Fig. 4所示,对角线数字表示该物体在数据集中出现的次数。
由此,本系统实现了同时利用YOLO 和 CRF 实现对物体分类的置信度确定。
4.4 Temporary Objects Generation
在确定物体的类别标签后,使用feature filter 根据物体类别实现对特征点和地图点的筛选。作者将属于先验动态物体的ORB 特征、地图点、DBoW 特征进行剔除,只保留先验静态物体的特征。
在动态物体特征剔除之后,生成包含物体尺寸、类别、置信度的得分以及点云的临时物体模型,并对噪声点进行剔除。
4.5 Data Association
本系统中的DA 是用来判定检测物体是新观测到的还是地图中已存在的。
首先,为每个临时物体模型寻找候选匹配模型。可轻易找出与当前关键帧相关联的历史关键帧,以此确定候选匹配模型,该过程如Fig. 7所示。
然后,在候选匹配模型中选取最相似的模型。本过程在临时模型和候选模型的点云间进行nearest neighbor search ,计算匹配点对之间的欧氏距离;该过程利用k-d 树来加速匹配过程;选取匹配数量最多且超过一定阈值的候选匹配模型作为成功匹配的模型,若没有成功匹配,则视为新模型添加进地图中。
4.6 Object Model Update
若模型成功匹配,则点云与类别置信度需要进行融合。利用recursive Bayesian update 来更新相应的概率分布:
4.7 Map Generation
在制图中,移动物体以及测距误差会造成很多误差,八叉树地图使用概率模型来解决该问题。八叉树地图的每个叶子节点存储被占用或空闲的概率,当新的3D 点被插入时会更新概率:
其中,$n$ 表示叶子节点;$z_t$ 表示观测;$P(n|z_t)$ 表示在给定观测 $z_t$ 时体素 $n$ 被占用的概率。
此外,除了占用概率,体素中还会存储固定数量的类别标签以及置信度得分。
八叉树地图绘制过程中会消耗大量的时间来计算空的体素,作者利用优化来加速该过程,如Fig. 10所示。