本文是一篇计算机论文结论,本文研究了一种在室内动态场景下视觉 SLAM 系统。以ORB-SLAM2 为基础,对视觉里程计中的特征点提取模块进行改进,另外将目标检测网络与 ORB-SLAM2 相融合,新加了动态特征点滤除和三维稠密建图两个模块,从而来提升SLAM 系统的定位精度和建图效果。
1 绪论
1.2 国内外研究现状
Forster 等人[10]在 2014 年提出了一种 SVO(Semi-direct Visual Odoemtry)方法,该方法是一种基于稀疏直接法的视觉里程计,速度较快,由于所采用的是稀疏的直接法,所以对计算机硬件的要求较低,即使在硬件性能较差的计算机上也能实时运行。适用于无人机、手持 AR/VR 等实时性要求较高的设备。虽然该方法有很好的实时性,但是其精度较差。由于没有回环检测和重定位,所以无法消除累计误差,而且容易跟踪丢失。Kerl 等人[11]提出的 DVO-SLAM 是一种基于稠密直接法的视觉里程计,该方法用一种快速帧对帧的配准方法来优化光度和深度误差,利用关键帧和基于熵的闭环检测的方法来消除累计误差,最终可以构建出稠密地图。Engel 等人[12]在 2018 年提出了一种 DSO 方法,该方法在视觉里程计中采用稀疏直接法,并通过结合最小化光度误差与集合模型对相机位姿、像素点深度参数进行一致联合优化,有着很好的鲁棒性和较高的精度,是目前基于直接法的视觉里程计中效果比较好的算法。上述视觉 SLAM 算法采用的直接法是基于灰度不变假设[5]进行的。灰度不变假设指的是同一空间点的像素灰度值在各个图像中都是保持不变的,在实际中,物体材料的不同,使像素会出现高光和阴影;相机曝光也会使得参数发生变化。所以灰度不变假设在实际生活中很可能不成立,因此上述算法在环境中亮度变化明显、相机快速运动时出现跟踪丢失的情况。
在基于特征的视觉 SLAM 中,Davison 等人[13]在 2007 年提出了 MonoSLAM 算法,该算法通过概率统计框架在线创建了一个稀疏地图,使用 EKF 算法来对相机位姿进行优化。通过随机选取搜索框进行特征点的提取,利用图像块进行特征匹配,并用恒速模型来预测相机位置从而加快匹配,具有较好的性能,但是所提取的稀疏特征不稳定容易导致跟踪失败。Klein 等人[14]提出的 PTAM 算法第一次实现了跟踪与建图的并行化处理,是一种基于关键帧的单目 SLAM 算法,在进行相机位姿优化时不对每一帧图像都进行优化,而是只需要把其中关键图像进行优化即可。此外 PTAM 将前后端分离,提出了非线性优化方法,对后续视觉 SLAM 的发展具有重要意义。2015 年,Mur-Artal 等人[15]在 PTAM 算法的基础上提出了 ORB-SLAM 算法,ORB-SLAM 采用 ORB[16]特征点来进行特征匹配和位姿估计,相比 PTAM 算法有更好的视角不变性。在该系统中采用词袋模型[17](Bag of Word,BoW)来用于回环检测,用重定位方法检测回路,用 g2o 来进行后端优化,有效减少了误差。该系统在其测试中表现出了较高的定位精度,而且可以在 CPU 上实时工作。后面该系统的作者又推出了其改进版本 ORB-SLAM2[18],该系统在前者的基础上加入了双目相机和 RGB-D 深度相机模式,是目前最优秀的 SLAM 系统之一,大量学者的研究都是以 ORB-SLAM2 为基础进行改进。
3 基于语义信息和几何约束的动态特征点滤除算法
3.1 基于目标检测网络 YOLOv4 的语义信息提取
语义信息指图像中所包含物体的类别,每个像素属于的物体类别,在 SLAM 中,可以借助语义信息来对场景中的动态目标进行识别,从而达到提高 SLAM 在动态场景下鲁棒性的目的。随着深度学习技术的发展,目标检测作为深度学习的基础已经有了广泛的应用,目标检测只需要返回图像中是否有检测的目标对象,返回值是一个带有目标对象空间位置的矩形框。
在本文采用目标检测网络 YOLOv4[66]来进行语义信息的提取,YOLOv4 是一个强大且高效的目标检测模型,可以很好的检测小目标。相比于 YOLOv3[50],在提高精度的同时也保证了其实时性。YOLOv4 在 MS COCO[67]数据集上进行了训练,总共包括 80 多个不同类别的物体,所训练的类别可满足 SLAM 在室内环境中使用。本文改进 SLAM 系统在ORB-SLAM2 的基础上新添加了一个语义检测线程,对系统中输入的图像帧采用目标检测网络 YOLOv4 来进行语义检测,在检测过程中只对先验动态目标进行检测,并不检测其他目标,并把检测的结果传入跟踪线程进行预处理剔除动态目标上的特征点,可得到准确的相机估计位姿。
在室内环境中人和动物为最有可能的动态目标,因此把人和动物身上的特征点假定为动态特征点。YOLOv4 可以检测出假定的先验动态目标,滤除掉这些先验动态特征点可以有效提升 SLAM 系统的精度,但是也存在一些问题,如图 3-2 所示在 YOLOv4 提供的目标检测框中可能还包含其他静态目标,例如人坐的椅子、面前的显示器等;当在图像中的人占据一半以上空间时会率除掉大量特征点,也可能包含一部分静态特征点从而导致跟踪失败。另外,人并不是室内唯一的动态目标,当人坐在椅子转动时椅子也成了动态目标。所以仅仅简单的把人当作动态目标是不全面的,因此本文结合对极几何的方法来进行补偿,从而滤除掉真正的动态特征点提升 SLAM 系统的精度。
5 实际环境实验测试
5.1 特征点的均匀化提取
对本文改进 Qtree_ORB 算法在实际环境中所提取的特征点进行测试,如图 5-3 所示,分别为三个场景下的特征点提取示意图。在图 5-3(a)中可以看出,办公室场景中所提取的特征点整体较为均匀,所提取的特征点没有簇集现象,也没有过均匀的现象,如没有在墙壁处提取过多的特征点,只在物体的边缘部分进行了特征点的提取。同样在图 5-3(b)的实验室场景中,所提取的特征点均匀度较好,可以很好的反映图像中的全局信息,只在柜子等的边缘部分进行了特征点的提取,并没有在其他部分过多的提取特征点,有效避免了过均匀现象。在图 5-3(c)中的楼道场景中,由于楼道场景中纹理信息较少,所以对提取较均匀的特征点有着一定的挑战,由图可以看出,楼道场景中所提取的特征点均匀的分布在过道两侧,在两侧墙壁上特征点主要集中在边缘部分,还有告示栏处,没有产生过均匀现象。
通过在三种场景下的特征点进行提取,可以看出,本文改进 Qtree_ORB 算法所提取的特征点均匀度较好,能够充分表达图像的全局信息,且没有产生过均匀现象,提取的特征点都均匀分布在场景中各物体的边缘部分。说明了本文改进算法的有效性,在实际场景中也可以有一个很好的应用。
5.2 动态特征点的滤除测试
本节中对本文中动态特征点滤除算法的性能进行测试,命名方式与之前相同,其中 Q表示用改进 Qtree_ORB 算法所提取的特征点,I 表示本文改进系统滤除动态特征点后剩余的特征点。使用“场景/方法/帧”的方式进行命名,如“办公室/Q/110”表示在办公室场景中用改进四叉树所提取的第 110 帧的特征点。在每个场景中挑选其中的 4 帧来进行动态特征点的滤除对比。
(1)办公室场景
图 5-4 为办公室场景中低动态特征点的滤除结果,对比图(a)(e)和(b)(f)可以看出,当动态目标坐在沙发进行微小运动时,本文所研究的动态特征点滤除算法也可以对动态特征点进行有效地滤除。由图 5-4(d)(h)可以看出,当动态目标站立时,对其运动部分如胳膊上的动态特征点也可以进行有效地滤除。
图 5-5 为办公室场景中高动态特征点的滤除结果图,所提取的特征点比较均匀,没有簇集现象,可以很好的反映图像的全局信息,对比图 5-5(b)(f)和(d)(h)可以看出,本文所研究的动态特征点滤除算法可以有效地滤除高动态特征点。在图 5-5(f)中滤除动态特征点后仍然保留了少量动态特征点,是因为在极线几何约束中所选取的阈值不同会有一定的误差。
6 结论与展望
6.1 结论
通过对现有视觉 SLAM 算法进行分析发现,现有视觉 SLAM 算法在室内动态场景下定位误差大,鲁棒性差的问题,本文研究了一种在室内动态场景下视觉 SLAM 系统。以ORB-SLAM2 为基础,对视觉里程计中的特征点提取模块进行改进,另外将目标检测网络与 ORB-SLAM2 相融合,新加了动态特征点滤除和三维稠密建图两个模块,从而来提升SLAM 系统的定位精度和建图效果。具体工作如下:
(1)在视觉里程计中原 ORB-SLAM2 算法通过划分四叉树来均匀的提取特征点,但是在提取特征点时存在过均匀现象,而且提取了许多低质量特征点,不利于后续的位姿估计。改进了一种 Qtree_ORB 算法,根据每层图像金字塔所需的特征点数目对四叉树的划分深度进行限制,减少其迭代次数,并对 Harris 响应值的最小值进行限定,避免提取低质量特征点从而影响 SLAM 的位姿估计。通过在 Mikolajczyk 数据集和 TUM RGB-D 数据集进行测试,结果表明改进算法可以有效提高原算法的均匀度,匹配性能良好。测试其在SLAM 系统中的轨迹精度,绝对轨迹误差中的均方根误差相比 ORB-SLAM2 降低了24.61%,标准差降低了 44.91%。
(2)在动态特征点滤除模块,研究了一种基于语义信息和几何约束的动态特征点滤除算法。首先在原 ORB-SLAM2 中新添加了语义检测线程,利用 YOLOv4 的语义信息对先验动态特征点进行滤除,然后用光流法对剩余特征点进行匹配,最后用对极几何约束对剩余特征点和语义检测框内特征点分别进行约束,滤除真正的动态特征点。通过在 TUM RGB-D 数据集上进行测试,结果表明本文的动态特征点滤除算法在高动态场景下较为敏感,可以有效地滤除动态特征点,对定位精度提升明显。在高动态序列 w_xyz 中绝对轨迹误差中的均方根误差相比原 ORB-SLAM2 系统降低了 97.81%,标准差降低了 97.82%。
(3)在原 ORB-SLAM2 中新添加了三维稠密建图线程,通过对 ORB-SLAM2 中的关键帧进行进一步的筛选,并结合语义信息来对场景中的动态目标进行滤除,最后构建了静态的点云地图和八叉树地图。通过实验测试可以得出,所构建的地图重叠度低,冗余量小,基本滤除了场景中的动态目标,地图的可读性较好,可以供移动机器人在导航和路径规划时使用。
参考文献(略)