一、物体级语义建图
物体的提取与描述
由于这篇文章重点不在准确度上,所以在前端使用了现成的双目里程计去获取帧的位姿。除了前端里程计的线程,该框架还开辟了一个物体提取线程和一个物体描述线程。
物体提取方面,不同于CUBESLAM、QuadricSLAM这类典型算法,这篇文章利用VisualDet3D这一深度学习模型进行提取,这一模型本身是一个用单目相机做3d目标检测的模型,所以直接可以得到物体3d包围框的参数信息,这一方法大大节省了几何方法提取物体的复杂程度。在提取过程中作者还借鉴了YOLOV3的anchor概念,利用形状先验来提取更加准确的物体信息,参考链接。提取出来的物体具有九个自由度:中心位置的三维坐标、物体的朝向以及物体三个轴上的尺度,在物体朝向的部分考虑到物体一般都在地面上,所以将roll和pitch都设置为了0。
除了包围框这一物体描述属性,作者还设计了语义嵌入和颜色两种描述方法。颜色描述中首先会将RGB图像转换为HSV图像,对于2d包围框围成的区域,会利用K-means++进行聚类,这个聚类是基于HSV图像的,对于每个簇,选取中心位置的颜色作为这个簇的颜色,这样对于一个物体的包围框,就可以构建出一个K维的向量来表示其颜色信息。语义嵌入的部分,一个包围框内部其实包括了物体的好几个部分,对于这每个部分,利用FAST-REID模型进行学习,直接生成一个嵌入向量。这样子两部分的向量都可以用来描述这个物体。
物体数据关联
由于对物体增加了颜色和语义嵌入两部分的描述子,所以在数据关联的部分难度明显要有所下降。对于局部的一个物体,可以使用一个向量进行表示:
其中包括了物体的语义信息、包围框信息、颜色直方图信息、语义嵌入信息以及位姿,与之相对地,路标物体则被表示为:
在建立关联时,首先对路标物体进行投影,也就是将3d包围框的八个端点进行投影,投影结果取极限值作为预测的2d包围框:
根据投影位置,确定一个候选匹配,这些候选匹配中,如果语义标签不同则直接认为相似度为零:
如果语义标签相同,则利用交并比、颜色直方图以及语义嵌入计算一个相似度,相似度最高的认为是正确的物体匹配:
物体位姿优化
得到了正确的数据关联之后,坐着选择在BA优化中,将物体位姿与相机位姿进行联合优化,优化过程中借鉴了VINS的滑动窗口策略,被观测超过四次的物体会参与到优化中。
二、基于物体的回环检测
回环检测的部分,这篇文章也使用了转换为图的形式,但是不同之处在于,作者将物体之间的距离信息放在了边上,在构建拓扑图时,物体为点,物体中心之间的距离则用边来表示,为了更好地保存图的拓扑关系,作者选取K个最近邻来组成局部拓扑图。这样回环检测问题就可以转化为从全局拓扑图中寻找局部拓扑图。
对于任意一个待检测的匹配对,首先在局部和全局拓扑图中寻找候选对的K个最近邻,这K个邻居的权重会组成一个K维的向量,以此可以计算一个空间差异度:
该差异度用于表示物体的空间几何属性,如果差异度小于阈值,进入到语义的检测中,即检测节点的语义一致性,如果语义相同,则根据中心点距离、尺度、颜色直方图和语义嵌入计算一个相似度:
当相似度足够大时,我们认为两个物体匹配,而当场景内出现多个物体匹配时,就认为出现了回环,此时根据回环信息进行校正。
文章评论