基于视觉SLAM的实例地图构建方法
2022-01-10王晓华李耀光王文杰
王晓华,李耀光,王文杰,张 蕾
(西安工程大学 电子信息学院,陕西 西安 710048)
0 引 言
基于视觉的机器人SLAM[1-2]在很多领域得到了广泛应用。为了能在地图中对环境中的物体进行直观的表示[3],研究者做了大量的工作。文献[4]将离线提取的物体实例信息存储在识别码中,机器人通过对识别码的解读,完成物体实例信息的获取而建图;文献[5-6]将目标识别线程并行加入到SLAM框架,物体被成功识别后被插入地图,但其需要事先生成目标模型。为了能实时构建环境中的物体模型,文献[7]设计了一种稠密SLAM建图系统,使机器人能够以物体级别描述地图场景。但地图精度低,地图中的物体实例不能很好地体现。
深度学习方法可以对环境中的物体实例进行有效检测和分割[8]而被引入视觉SLAM领域。文献[9]将视觉SLAM算法与目标检测框架SSD[10]结合,生成带有语义信息的地图;文献[11]利用目标检测网络提取二维图像标签,结合三维几何信息构建出稠密语义地图; 文献[12]提出的Mask Fusion系统不需要已知的对象模型实现地图构建,但语义分割网络不能实时运行;文献[13]利用深度卷积神经网络对图像进行像素级分割,采用并行线程,实时提取实例信息。但是上述方法所使用的深度学习网络结构复杂,对硬件要求高。综上所述,利用轻量级网络对物体实例信息进行提取,构建高精度的SLAM点云地图是研究者们要继续探讨的问题。
本文给出了一种融合目标检测和点云分割的视觉SLAM实例建图方法。该方法以ORB-SLAM2算法[14]为框架,通过改进的轻量级目标检测算法YOLOV4-tiny[15]来提升目标实例的检测精度;随后将含有目标检测框的关键帧图像进行二维分割,分割结果与三维点云分割结果融合,快速实现对物体的实例分割;最后建立存储物体实例信息的物体库,设置相应的匹配机制对物体库进行更新,构建出高精度的实例级点云地图。
1 YOLOV4-tiny算法改进
机器人在现实场景下构建地图,需要快速对环境实例进行检测识别,轻量级的检测模型具有更大的优势。本文使用的YOLOV4-tiny是一种轻量级检测网络,利用2个不同尺度的YOLO Head输出层,分别负责检测大目标物体和小目标物体,具有更快的处理速度。但是其检测精度相对于大型检测网络会有所下降,尤其是对小目标物体的检测。基于此,通过调整网络结构,运用优化策略,对YOLOV4-tiny算法进行改进,提高检测精度的同时兼顾实时性。
1.1 模型改进
相比YOLOV4[16]的深层次结构和巨大参数量,YOLOV4-tiny轻量级网络结构简单,网络参数少,具有更快的检测速度。由于YOLOV4-tiny在特征加强层只采用了1个特征金字塔结构[17],没有像YOLOV4那样再进行下采样,导致特征信息提取不足;网络深度不足也会导致高维空间中的冗余信息被过度利用,降低目标检测的准确性。因此,为了保持精度和速度的平衡,设计2个相同的残差网络模块[18]作为辅助模块,提取更多的物体特征信息,增强模型对目标的特征提取能力,降低检测的误差。残差网络模块结构如图1所示。
图 1 残差网络模块结构
图1中,残差网络模块首先利用2个3×3卷积提取全局特征,增加网络深度,学习输入图像中更深层次的信息。原始的高维空间中含有冗余信息,会对目标检测造成影响,降低准确率。随后通过引入1×1的卷积层对其实现降维,加快网络学习速度,减少冗余信息所造成的误差,提高识别的精度。同时为了获取更多目标的细节信息,抑制无关物体所对应的信息,使用通道注意力和空间注意力机制[19]提取更有效特征。由于浅层特征到深层特征的传递路径较长,其边缘信息特征容易丢失,导致数据利用率低、检测精度不理想,为充分利用特征信息,采用级联操作将第1个卷积网络的输出特征与空间注意力机制的输出特征进行特征融合,作为残差网络模块的输出特征,这样保留了特征重复使用的特点,提升数据利用效率。最后,将最终的残差网络输出特征与骨干网络中剩余网络的输出特征相结合,作为下一个骨干网络的输入特征,使改进后的骨干网络能够提取出检测对象的全局和局部特征,摒弃与检测目标无关的信息,进一步提高检测的准确性。图2为改进后的网络结构。
图 2 改进后的网络结构
1.2 检测优化
目标检测算法会输出多个检测边框,原有的YOLOV4-tiny算法利用非极大值抑制(non-maximum suppression,NMS)算法[20]去除重复的检测边框,达到每个物体只有1个检测结果的目的。若当前检测框和最高得分检测框的交并比大于阈值时,会直接将该检测框的得分置零,这将导致重叠区域较大的目标被漏检,降低算法的平均检测率。针对上述问题,采用Soft-NMS抑制算法[21]来提升性能。Soft-NMS抑制算法可将当前检测框得分乘以一个权重函数,该函数会衰减与最高得分检测框M有重叠的相邻检测框分数,越是与M框高度重叠的检测框,其得分衰减越严重,但并不会将检测框直接删除。为此,本文选择高斯函数为权重函数,从而修改其删除检测框的规则,解决物体重叠时的检测问题。所使用的高斯权重函数为
Si+1=Siexp(I(M,bi)2)/σ)
(1)
式中:bi为当前检测框;Si为当前检测框得分;σ为高斯函数的方差;I为交并比。
2 点云分割方法
采用RGB-D相机作为视觉传感器,可以获取环境的二维彩色图像和相应像素的深度图构建出三维点云。而大多数三维点云分割算法仅仅利用环境中的三维点云信息进行分割,忽略了对应的二维图像信息。为优化实例层次的分割效果,得到准确率更高的物体分割结果,设计一种融合二维图像信息的三维点云分割方法。
1) 二维实例模型分割。采用GrabCut算法[22]对目标检测后的关键帧图像进行二维实例模型分割。用RGB三通道混合高斯模型(Gaussian mixture model,GMM)描述目标模型和背景模型的像素分布,通过迭代学习获取物体和无关背景的混合高斯模型参数,评估分割的优劣程度,得到最优的物体分割结果。
2) 三维点云实例分割。物体的实例分割通过三维点云分割实现,分割流程如图3所示。
图 3 三维点云分割
3)二维与三维信息融合。前述GrabCut算法的分割结果为L={l1,l2,…,ln},li为目标物体像素时取1,为无关背景像素时取0;三维点云分割算法的分割结果记为Γ,把两者的分割结果进行融合,优化之后的算法可表示为
(2)
式中:d为物体的类别;μ为两者融合时的筛选条件。融合后的改进算法实现2种分割结果的性能互补,使三维点云分割结果精度更高,提升目标实例分割效果。
3 实例地图构建
3.1 系统框架
在原始ORB-SLAM2框架的跟踪、建图和回环检测三线程结构中加入YOLOV4-tiny目标检测线程、点云分割线程和物体库构建模块,构建本文建图方法的整体框架,如图4所示。
图 4 系统整体框架
图4中,跟踪线程对RGB-D相机采集的环境信息进行二维特征提取、匹配以及机器人位姿初始化;本文新建的目标检测线程对跟踪线程中检索的关键帧进行物体实例检测识别,得到环境中的实例信息;建图线程利用关键帧生成点云,采用BA优化删除冗余的地图点和关键帧,构建出初始的点云地图;新增加的点云分割线程将含有目标检测框的关键帧图像进行二维分割,融合三维点云分割结果,实现对物体实例的点云分割;最后通过物体库进行数据关联和模型更新,实现面向物体实例的三维点云地图构建。而为了消除跟踪过程中产生的累积误差,回环检测线程通过对回环位置和关键帧的检测,将匹配到的所有点云进行对齐并融合重复的点,采用图优化的方式来得到全局一致的地图。
3.2 地图维护
依前文所述方法构建实例地图的过程中,需要建立地图物体库存储采集到的实例物体信息,该物体库包含物体的属性信息、类别与概率、中心坐标、对应的关键帧和目标物体的三维点云模型。
为了提高建图的效率,本文在SLAM建图的数据关联环节设置了筛选机制,在新目标物体加入地图中时进行判定。对于新检测到的物体,首先根据物体类别进行筛选,然后计算新点云模型与物体库中候选点云模型的点云重合度,如果重合度大于设定阈值,则认为是同一个目标,完成物体实例与物品库中对象的目标关联,共同维护物体模型,否则添加新的物体模型,并更新物品库中对象的属性信息。
4 实验与分析
本文实验运行平台为Ubuntu 16.04 的操作系统,处理器型号为GTX2080Ti Intel i7-6800k。在自己构造的数据集和TUM数据集[24]上进行了实验,验证本文建图方法的可行性。
4.1 目标检测实验与分析
4.1.1 数据集及评价指标 在COCO数据集[25]的基础上,结合实际的实验室环境,采集几种常见的物体数据一起作为样本数据,构建样本数据集。将构造的样本数据集分成独立的训练集、测试集和验证集3个部分,并在训练之前对数据集进行了预处理。预处理的方式主要有使用原始图片、对输入图像采用随机尺度、图片镜像、随机调整曝光和饱和度等。物体类别的选择应同实验场景的检测相符合,主要完成6种室内常见物体的目标检测,分别为显示器、键盘、鼠标、椅子、杯子和书本。在检测结果中会显示为:Tvmonitor、Keyboard、Mouse、Chair、Cup和Book。
在构建的数据集上测试目标检测算法的检测精度和运行效率,以平均精度均值(mean average precision,MAP)和每秒处理帧率(frames per second,FPS)作为衡量标准,并与MobileNet-SSD,MobileNetV3,YOLOV3-tiny,YOLOV4-tiny等算法进行比较。
4.1.2 实验结果与分析 本文算法与主流的轻量级目标检测算法的测试结果如表1所示。
表 1 不同算法测试结果
从表1可以看出,在模型体积相差不大的同等轻量级网络YOLOV3-tiny和YOLOV4-tiny中,改进的YOLOV4-tiny算法在精度方面分别提升了14.2%和8.1%,具有更好的检测效果。这是由于增加的残差模块能提取更多的细节特征,网络利用的特征信息更加丰富,使得检测精度更高。为了更直观地体现检测效果,利用测试集和实验室场景图像进行可视化分析,测试结果如图5所示。
(a) 正常场景测试 (b)昏暗场景测试 (c)实验室场景测试
从图5(a)、(b)可以看出,改进的目标检测算法对所训练的物体均能检测识别,在光线昏暗和背景复杂的情况下也能保证识别精度。图5(c)中的现实场景测试显示,通过改进的 YOLOV4-tiny 能有效识别环境中的显示器、键盘、鼠标、椅子、杯子以及书本,每个类别的物体对应的颜色各不相同。
4.2 点云分割实验与分析
4.2.1 数据集及评价指标 实验场景的选取为TUM数据集rgbd_dataset_freiburg1_desk,其中包含了600对RGB彩色图像和深度图像。为了评价分割方法的有效性,选取PCL点云库中的区域增长分割(regional growth segmentation,RGS)算法和基于凹凸性的分割(locally convex connected patches,LCCP)算法与所提方法进行对比,从运行时间和物体平均分割率两个方面进行分析,物体平均分割率表示对每一物体分割的正确率,衡量物体精准分割的性能。
4.2.2 实验结果与分析 表2给出了不同点云分割算法在TUM数据集上的实验结果对比。
表 2 实验结果对比
从表2可以看出,所提分割方法在物体平均分割率上有明显优势。与RGS算法和LCCP算法相比分别提升了23%和12%。利用本文方法能够对环境细节进行分割,并且分割出更多的环境目标,在相同时间下有更好的分割精度。图6为不同算法的点云分割结果图。
(a) RGS算法 (b) LCCP算法 (c) 本文算法
从图6可知,RGS算法的点云分割结果噪声数据过多,LCCP算法对于环境中的小物体如水杯,鼠标等目标的提取不准确,导致分割精度降低。由于本文方法先利用二维图像分割算法进行预处理,提升图像中的目标分割精度,再结合超体素聚类的方法进行分割,不仅降低了时间成本,而且对环境中大部分小物体也能实现分割,有利于实例地图构建。
4.3 建图实验与分析
将上述目标检测和点云分割的方法作为单独的线程加入ORB-SLAM2框架当中,利用实验室环境对本文建图方法的有效性进行验证,并且在建图精度和方法性能方面进行评价。
通过图7的地图对比可以看出,图7(a)所示原始ORB-SLAM2系统构建的地图精度较低,地图中的物体实例轮廓不完整且重影大,鼠标等小物体很难在地图中被识别。图7(b)则显示本文方法构建的点云地图能够更加直观地表现出实例信息,地图中物体轮廓表现的更加完整,地图精度有明显提升。
(a) ORB-SLAM2构建的原始地图
完成原始地图与实例地图的比较后,对真实环境构建的地图信息进行时间分析,并添加与系统相似的主流方法作为参考,具体对比结果如表3所示。
表 3 不同建图方法的对比
由于对物体实例进行了目标检测和点云分割处理,本文构建的实例地图中所包含的点云数量大约为ORB-SLAM2构建地图的2倍,能够提升物体点云的分割率,点云地图中的物体实例轮廓更完整。同时,检测线程的增加,使得建图过程的时间增加,结合YOLOV3的建图方法由于检测算法结构复杂,虽然地图中的点云数量增多,但对场景的单帧平均处理时间相较本文方法慢了0.08 s左右,本文对轻量级检测算法YOLOV4-tiny的改进,有效提高了计算效率。总体来说,本文建图方法在保证运行时间的同时能够生成更精确的实例级点云地图,验证了本文方法的可行性。
5 结 语
传统视觉SLAM不能对周围环境进行实例信息感知,导致建图精度不高,本文提出了一种基于视觉SLAM的实例建图方法。在ORB-SLAM2系统框架下,首先采用改进的YOLOV4-tiny轻量级目标检测网络识别物体实例,兼顾实例信息提取的准确性和实时性,相对于原检测网络,检测准确率提升8.1%;其次,利用改进的点云分割方法,将二维图像信息与三维点云信息的分割结果进行融合,提高对地图中实例物体的分割精度;最后,通过构建物体库来进行地图维护,实现三维物体实例的数据关联与模型更新,构建出精确的实例级点云地图。实验结果表明,相较于原始的ORB-SLAM2建图系统,本文方法构建的点云地图能够保留物体的实例信息,小物体也能很好的在地图中被识别,地图精度提升显著。但本文方法的运行时间有所增加,下一步的研究重点在于保证建图精度的同时提升运行效果。