室内动态环境下基于深度学习的视觉里程计
2023-01-31段中兴
李 博,段中兴
(西安建筑科技大学 信息与控制工程学院,西安 710055)
1 引 言
视觉同步定位与建图(Visual Simultaneous Localization and Mapping,VSLAM)是指机器人系统利用相机作为唯一的外部传感器,在进行自身定位的同时创建环境地图[1].视觉里程计(Visual Odometry,VO)[2]是VSLAM系统的前端,它能够根据相机采集的图像信息来估算相机的当前位姿并构建周围环境的局部地图.视觉里程计根据是否需要提取特征点可以分为基于特征点法的视觉里程计以及不需要提取特征点的直接法视觉里程计[3].
多年来,经过研究人员们的不断努力,视觉里程计与VSLAM领域涌现出了许多优秀的成果,例如Mono-SLAM[4],ORB-SLAM2[5],PTAM(Parallel Tracking and Mapping)[6],RGB-D SLAM[7],LSD(Large Scale Direct)-SLAM[8]等.其中,Raúl Mur-Artal等人提出的基于特征点法的ORB-SLAM2系统能够在大型环境中实时运行,具有良好的精度与稳定性,并且支持单目、双目以及RGB-D 3种模式.然而,这些传统的VSLAM系统都是基于外部环境为静态的假设[9],并未考虑场景中存在动态物体的情况.但是在实际环境中由于动态物体的存在,使得系统在进行特征提取时会不可避免地提取到动态物体范围内的特征点,从而影响相机位姿的估算精度.因此如何减少动态物体的干扰,提高VSLAM系统在动态环境下的定位精度与鲁棒性,成为了目前VSLAM领域的一个研究热点.
为了解决这一问题,Kundu[10]等人利用对极几何约束来剔除特征点中的动态点;Fang[11]等通过光流法来过滤环境中的动态物体;Tan[12]等采用自适应的RANSAC算法来筛选图像中的静态点.这些仅依靠几何或光流的算法虽然在一定程度上能够改善系统的定位精度,但由于缺乏先验的语义信息,提升能力有限,并且当环境中的动态物体较多时很容易失效.
近年来随着深度学习的发展,越来越多的结合深度学习的方案被提出,Bescos[13]等人提出的DynaSLAM在ORB-SLAM2基础上通过Mask R-CNN语义分割网络和多视角几何来剔除动态特征点.Yu[14]等也在ORB-SLAM2的基础上提出了DS-SLAM,该算法采用SegNet网络与运动一致性检验结合的方式滤除动态特征点.这些结合深度学习的方式相较于之前的方法能够更好的过滤动态点,大幅提高定位精度,但实时性较差,如,DynaSLAM中在语义分割时使用Mask-RCNN网络,其速度只能达到5Hz,很难做到实时运行;而DS-SLAM虽然采用了比较快速的SegNet网络,但在进行运动一致性检测时使用光流跟踪法,极大增加了运算量,对系统的实时性产生了一定影响.
为了能够有效提高VSLAM系统在室内动态环境下的定位精度,同时满足实时性的要求,本文以ORB-SLAM2的视觉里程计为基础进行改进,主要工作及贡献如下:
1)开辟了一条独立的动态目标检测线程,使用YOLOv4进行动态目标检测,将其与ORB-SLAM2的视觉里程计相结合.
2)提出了一种动态特征点剔除策略,首先根据动态目标检测结果进行动态点一次过滤,接着分别利用对极几何约束以及光流约束完成第2、3次过滤.
3)在TUM RGB-D公开数据集上对所提方法的定位精度以及实时性进行了评估.
2 算法介绍
2.1 算法框架
改进的视觉里程计框架如图1所示,在ORB-SLAM2视觉里程计的基础上新增了一条动态目标检测线程,使用快速目标检测网络YOLOv4得到输入图像中的语义信息并确定动态目标.在追踪线程中加入动态点剔除环节,该环节首先根据目标检测的结果来剔除该动态物体范围内的特征点.接着为防止在目标检测过程中出现漏检,以及环境中还存在潜在动态物体的情况,在完成相邻两帧图像的特征匹配后采用RANSAC算法求解出两图像间的基础矩阵,再利用对极几何约束对环境中可能存在的剩余动态点进行二次过滤.然后使用金字塔LK光流法获得其余特征点的光流信息,根据静态点与动态点光流大小的不同采用统计学的方式彻底滤除动态点.后续依靠过滤后剩余的静态特征点进行相机的位姿估计.
图1 本文视觉里程计结构Fig.1 Overview of proposed visual odometry
2.2 动态目标检测
YOLO[15]是一种基于深度神经网络的目标检测算法,其最大的特点就是快,能够在保持较高检测精度的同时实现对整幅图片和视频的实时检测.YOLOv4[16]是Alexey Bochkovskiy等人在YOLOv3[17]的基础上提出的,巧妙结合了多种优化技巧,实现了检测速度和精度的最佳权衡,并且使模型能够在常规GPU上进行训练和检测,极大降低了训练成本.YOLOv4在MS COCO数据集上的AP达到了43.5%,在Tesla V100上的检测速度达到了65FPS,因此本文选用YOLOv4作为目标检测网络来检测环境中的动态物体,能很好地兼顾检测精度与实时性.YOLOv4的网络结构如图2所示.
图2 YOLOv4网络结构Fig.2 YOLOv4 network structure
对比YOLOv3,YOLOv4的主干网络框架由Darknet53变为了CSPDarknet53,该主干网络较Darknet53有两个主要的改进:1)改变了残差结构,运用了CSPnet网络的残差结构;2)改变了激活函数,采用Mish激活函数.同时Yolov4引入了空间金字塔池化(SSP),采用不同尺寸的池化核,极大地增加感受野,分离出最显著的上下文特征.此外,为最大限度的提取特征,YOLOv4将YOLOv3中的参数聚合方法FPN替换为PANet.
选用MS COCO数据集对YOLOv4网络进行训练,COCO数据集是一个图像识别,分割以及字幕的大型数据集,其中包含了80个类别.一般情况下认为在室内环境中最主要的动态物体为人和小动物,因此针对COCO数据集中的类别,将人,猫,狗作为动态物体,剩下的都暂时默认为静态物体,在使用YOLOv4进行目标检测时只检测这些动态物体.
2.3 动态特征点剔除
2.3.1 动态点一次过滤
在完成动态目标检测后,先将动态物体范围内的特征点去除.假设输入的第K帧图像中的特征点集合如式(1)所示:
(1)
第K帧图像中动态物体的集合如式(2)所示:
(2)
通常情况下在经过第一次动态点过滤后已经可以剔除全部的动态特征,但还可能存在以下特殊情况:
1)动态目标检测时仅将人和猫,狗视为动态物体而忽略了环境中还可能存在的潜在动态物体,如被人拿起的书本或是被人挪动的桌椅等.这些物体在一般情况下都默认为静态物体,但是如果发生以上特殊情况就会变为动态物体.
2)由于动态物体被大面积遮挡等原因,在进行动态目标检测时可能会出现漏检的情况.
因此,仅仅依靠第一次过滤并不能保证将图像中的动态点全部剔除,在此基础上还需要对剩余特征点进一步过滤.
2.3.2 对极几何约束
1)从匹配点对中随机选出4组用来求解基础矩阵F.
2)计算其余特征点到矩阵F所对应极线的距离d,将该距离与事先设定好的阈值dn比较,当d
3)重复执行上述1),2)步迭代N次,选取其中内点数目最多的一次,将该次所求得的基础矩阵作为最终的基础矩阵.
求得基础矩阵之后对所有的匹配点对进检验,判断它们是否满足对极几何约束.如图3所示.
图3 对极几何约束Fig.3 Epipolar geometry constrain
(3)
(4)
(5)
(6)
dthr1 (7) dthr1,dthr2为设定好的阈值.当特征点到极线的距离超出阈值范围,则将该点视为动态点或误匹配点并剔除. 虽然用对极几何约束的方式在一定程度上能够剔除动态点,但是当动态物体的运动方向平行于相机的运动方向时,该动态物体上的特征点也是满足对极几何约束的,而这时对极几何约束就不再适用.因此,经过此次检验后仍有可能存在动态特征点,这时就还需要结合光流约束进行第3次过滤. 2.3.3 光流约束 光流是空间运动物体在观察成像平面上的像素运动的瞬时速度.在室内环境下,当相机运动时,背景中所有静态点的光流大小应该基本相同,因为它们都是随着相机的运动而运动.但是动态物体往往是独立于背景运动,因此动态点的光流大小通常与静态点不同.根据这个原理,计算出剩余特征点的光流大小,然后用统计学的方式剔除剩余的动态点. 计算光流的大小使用LK光流法,该算法基于3个假设: 1)亮度恒定不变,即当同一目标随时间变化而移动时,其亮度值不变; 2)时间连续或运动是“小运动”,即时间的变化不会引起目标位置的剧烈变化,相邻帧之间位移要比较小; 3)空间一致,即前一帧图像中相邻的目标在后一帧中也是相邻的. 根据亮度不变假设得到式(8): I(x,y,t)=I(x+dx,y+dy,t+dt) (8) t和t+dt为获取上一帧和下一帧图像的时刻,I(x,y,t),I(x+dx,y+dy,t+dt)分别为某像素点在上一帧和下一帧图像中的位置. 根据小运动假设,对上式右侧进行泰勒级数展开,根据小运动假设,对上式右侧进行泰勒级数展开,结果如式(9)所示: (9) 根据式(8)、式(9)可得式(10): (10) IxVx+IyVy=-It (11) 根据空间一致性假设,选取3×3窗口内的9个像素点联立,建立如式(12)所示: AV=b (12) ATAV=ATb (13) V=(ATA)-1ATb (14) 在求解过程中应用了泰勒展开,泰勒展开只有在变量变化很小的情况下才能使用,如果帧间的像素运动比较大,泰勒展开便不适用了.而在实际场景中是很难满足LK光流法的3条假设的,尤其是假设二.因此为防止像素运动太快,无法使用泰勒展开,在实际计算时采用金字塔LK光流法.其基本思想是:将整张图片进行缩小,降低其分辨率,对于运动较快的像素点,总能在图像分辨率降到一定程度时,其运动变得足够小,满足泰勒展开的条件. 通过金字塔LK光流法求得剩余特征点的光流大小后,计算其平均值与标准差,采用一种统计学的方式来判断特征点是否为动态点.判断条件如式(15)和式(16)所示: |Li-Lavg|>2×Lstd (15) 或 |Li-Lavg|>Lthr1(Lstd (16) 其中,Li为第i个特征点的光流大小,Lavg,Lstd分别为所有特征点光流的均值以及标准差,Lthr1,Lthr2为设定的阈值.当Li符合上面的关系时,便认为该点为动态点并剔除. 在使用对极几何约束与光流约束来滤除动态点时,若图像中的动态点较多,则计算的基础矩阵以及光流的平均大小会更偏向于拟合动态对象,这种情况下很难通过这两种方式来过滤掉动态特征点.因此本文所提的动态点剔除策略首先使用YOLOv4进行目标检测剔除动态目标区域特征点,可以使图像中的大部分动态点被过滤,仅剩余少量的误匹配点及动态点,此时再利用对极几何约束与光流约束能够有效的将这些特征点全部剔除. 图4 3次过滤结果Fig.4 Three times filtering results 经过3次过滤后的结果如图4所示,该图片取自TUM数据集中的freiburg3_walking_xyz 高动态场景序列.图片中的场景为人物手持书本坐在桌前做小范围运动,此时人与手中书本均为运动状态. 图4(a)为对图像特征提取后的结果,图中的标记点即为特征点,由图片可以看出此时静态物体与动态物体内均存在特征点;图4(b)为使用YOLOv4进行动态目标检测后的结果,检测框范围内的人即为动态目标;图4(c)为动态特征点第1次剔除后的结果,可以看到此时处于动态目标范围内的特征点均已被剔除,但由于在动态目标检测时只检测环境中主要的运动物体即图中的人物,并未检测其手中所持书本,因此此时书本上的特征点仍然被保留;动态特征点经过第2、3次过滤后的结果如图4(d)所示,此时书本上的特征点也已经被成功过滤. 本次实验主要对改进方法的精度与实时性进行评估,使用TUM RGB-D公开数据集中的7组动态场景数据进行测试.TUM数据集是由德国慕尼黑工业大学制作的RGB-D室内数据集,它采用8台高速摄像机在真实环境中拍摄而成,包括彩色图像,深度图像以及位姿真实值等内容.TUM数据集里面包含了39个不同室内环境的图像序列,其中动态场景分为低动态的sitting和高动态的walking两个子序列,它们分别对应着场景中人物不同的状态,在sitting序列中两个人物坐在桌前,肢体或桌上一些小物体有轻微移动,walking序列中两人则是绕着桌子进行大范围走动并伴随着行走,坐立之间的状态切换.这两个序列中又包含着相机4种不同的运动轨迹,分别为halfsphere,rpy,static,xyz.在halfsphere中相机沿着半球面运动,在rpy中相机做翻转,俯仰等运动,在static中相机近似静止,在xyz中相机沿x,y,z轴方向运动.本次实验选用的7组动态场景包括freiburg3_walking_halfsphere,freiburg3_walking_rpy,freiburg3_walking_static,freiburg3_walking_xyz 4组高动态场景以及freiburg3_sitting_halfspher,freiburg3_sitting_rpy,freiburg3_sitting_static 3组低动态场景. 实验平台为联想拯救者R7000P笔记本电脑,CPU型号为R7-4800H,主频2.9GHz,16GB内存,显卡为NVIDIA GeForce RTX2060,6GB显存,系统环境为Ubuntu18.04. 精度的评估一般采用的评价指标为绝对轨迹误差(Absolute Trajectory Error,ATE)以及相对位姿误差(Relative Pose Error,RPE).ATE估计位姿与真实位姿的直接差值,能够直观地反应出估计轨迹的精度和全局一致性.RPE主要描述的是相隔固定时间差内估计位姿的变化量与真实位姿变化量之间的差值,包含了相对平移误差(Relative Translation Error)和相对旋转误差(Relative Rotation Error)两部分.使用均方根误差(Root Mean Squared Error,RMSE),平均值(Mean)以及标准差(Standard Deviation,S.D.)这3个参数对ATE和RPE这两个指标进行统计.其中,平均值能够反应估计位姿的精度,均方根误差以及标准差则体现了系统的鲁棒性. 3.2.1 与其他算法对比 为了能更直观地体现出本文方法在精度方面的提升,首先选用ORB-SLAM 2来与本文方法进行对比.经过在数据集测试后,两者的绝对轨迹误差,相对平移误差,相对旋转误差以及性能提升的百分比如表1-表3所示.通过对比可以看出,在高动态场景下本文方法能够大幅度提高SLAM系统的定位精度,其中walking_xyz,walking_half和walking_static这3个序列上的误差可减小至少90%以上,而在walking_rpy序列中虽然精度有所降低但精度仍然能提高85%以上.ORB-SLAM 2 作为目前最优秀的SLAM系统之一,其在低动态场景下有着良好的表现,但即使如此,从整体上看本文方法较之仍旧有所提升. 表1 绝对轨迹误差典型值(米)Table 1 Typical value of ATE(m) 表2 相对平移误差典型值(米)Table 2 Typical value of translation(m) 表3 相对旋转误差典型值(度)Table 3 Typical value of rotation(deg) 图5和图6展示了在walking_xyz以及walking_half两个高动态序列中用ORB-SLAM 2所估计的轨迹和用本文方法所估计的轨迹与相机真实运动轨迹的对比.由图可以看出,在高动态场景下ORB-SLAM 2所估计的轨迹与真实轨迹差别较大,而本文方法所估计的轨迹基本接近真实轨迹且拥有良好的鲁棒性. 图5 walking_xyz序列Fig.5 walking_xyz sequence 图6 walking_half序列Fig.6 walking_half sequence 为了进一步验证改进视觉里程计的效果,将其与同类型的其他基于深度学习的视觉SLAM算法进行比较,表4为在walking_xyz,walking_half和walking_static 3个高动态场景下本文方法与DS-SLAM,Semantic-Fusion,Mask-Fusion的绝对轨迹误差对比.通过对比可以看出,本文方法的精度与DS-SLAM基本持平,而相比Semantic-Fusion,Mask-Fusion均有大幅提升,这充分证明了所提方法的有效性. 表4 同类型算法绝对轨迹误差对比(米)Table 4 Comparison of ATE of the same type of algorithms(m) 3.2.2 消融实验 本文在进行动态点剔除时采取了YOLOv4检测动态目标以剔除动态目标区域特征点、通过对极几何约束剔除动态点以及通过光流约束剔除动态点这3种方法结合的方式,为验证每个步骤的有效性,将这3种方法分别与原始的ORB-SLAM2结合并进精度评估的实验,表5为ORB-SLAM2与这3种方法在walking_xyz,walking_half和walking_static这3个场景下的绝对轨迹误差对比.其中method1表示用YOLOv4检测动态目标以剔除动态目标区域特征点的方法,method2为通过对极几何约束剔除动态点的方法,method3表示通过光流约束剔除动态点的方法. 表5 3种方法绝对轨迹误差对比(米)Table 5 Comparison of ATE of three methods(m) 通过实验结果可以看出使用YOLOv4目标检测来剔除动态点的方式对系统精度的提升最为有效,而在单独使用对极几何约束或光流约束时,定位精度的提升则比较有限.这主要是因为在TUM数据集中,作为主要动态物体的人在图像中所占的空间较大,正如前文所提,这种情况下对极几何约束与光流约束很难有效过滤掉图像中的动态点,而在使用YOLOv4目标检测来剔除动态点时,可以将人身上的动态点完全过滤,从而剔除图像中的大部分动态点,只残留少量误匹配点以及动态点.实验结果也表明仅靠某种单一的方法很难完全剔除图像中的动态点,只有将3种方法组合起来才能达到最佳效果. 实时性是评估SLAM系统是否具有实用性的一项重要指标.本次实验中对实时性的评估所采用的评价指标为系统跟踪线程处理每帧图像所用时间,并且将本文方法与同样使用深度学习的DynaSLAM以及DS-SLAM进行对比,结果如表6所示.本文方法的平均跟踪时间为85ms,运行速度可以达到12帧/秒左右,能够满足实时性的要求.虽然同样使用了深度学习的方法,但本文在动态目标检测时采用的是快速检测网络YOLOv4,相较于DynaSLAM以及DS-SLAM所使用的Mask-RCNN与SegNet网络有很大的速度优势,并且在计>算光流时只计算经两次过滤后的特征点光流,并未计算稠密光流,一定程度上节省了运算时间,因此在追踪时间上相比两者均有较大提升.通过对比也证明了相较于其他的SLAM算法,本文算法能够更好地兼顾定位精度与实时性. 表6 跟踪时间对比(毫秒)Table 6 Tracking timecomparison(ms) 本文提出了一种面向室内动态环境的视觉里程计.该方法在ORB-SLAM2的视觉里程计基础上开辟一条独立的动态目标检测线程,为满足检测精度与实时性的要求,采用YOLOv4作为检测网络,相应提出一种动态特征点剔除策略,根据检测结果对图像中的特征点进行第1次过滤,接着为防止动态点剔除不彻底,分别利用对极几何约束和光流约束进一步过滤特征点.在TUM数据集上的实验结果表明,改进后的视觉里程计能够大幅度提高SLAM系统在动态环境下的定位精度,并且能满足实时性的要求.在后续研究中将尝试构建含有语义信息的三维地图,以便于机器人能够执行更高级的任务.3 实验验证
3.1 实验数据集与环境
3.2 精度评估
3.3 实时性评估
4 结束语