2. 大数据知识工程教育部重点实验室(合肥工业大学), 安徽 合肥 230009
2. Key Laboratory of Knowledge Engineering with Big Data(Hefei University of Technology), Ministry of Education, Hefei 230009, China
同时定位与地图构建(simultaneous localization and mapping,SLAM)技术是在未知的环境中利用传感器信息获取自身定位并建立环境地图[1]。单目相机、双目相机以及RGB-D相机都可用于视觉SLAM[2],其中单目相机利用多帧图像估计出像素深度值,双目相机可以通过双目视差计算出像素深度值,RGB-D相机则可以直接由硬件获取深度值。在视觉SLAM系统中,视觉里程计[3]根据帧序列估计出相机的运动轨迹,建图模块根据图像深度信息以及相机位姿将真实场景构建成点云地图、八叉树地图等形式。
传统视觉里程计在静态场景中表现优异,但是在动态环境下其效果会大幅下降[4-5],比如,当视野中出现了动态物体,如果仍然利用其追踪相机位姿以及建图将会影响位姿估计精度以及地图构建的效果。因此,如何在动态环境下保证系统的准确性成为视觉SLAM的一个重要课题。利用几何约束实现动态点的剔除[6],这能够使其在一定程度上适应动态环境,但其所构建的地图无法获取更高级的语义信息。
随着深度学习的发展,结合图像分割网络与特征点法来识别并剔除场景中的动态物体成为一种有效的方式[7]。但是目前结合语义分割网络或实例分割网络的SLAM系统仍然存在一些问题,比如会出现分割不完全的情况,即图像中某些物体没有被分割出来。而当前许多系统依赖于分割网络的结果,分割不完全可能会因动态物体剔除少而导致位姿估计精度下降以及地图不可复用;此外,大多数系统默认将人、狗等先验动态物体直接剔除,而没有考虑到当先验动态物体处于静止时,仍可利用其上的特征点进行追踪,并带来更鲁棒的位姿估计;当椅子、键盘等先验非动态物体发生移动时,系统能否及时捕捉到,这也影响着系统的精度。
针对以上问题,本文设计了一种动态环境下基于增强分割的RGB-D SLAM方法,通过实例分割修补算法优化分割结果,为系统提供更加全面的环境语义信息,从而利用运动状态判定算法实现对场景中动态物体的精准剔除,提高相机位姿估计精度以及地图的可用性。
2 相关工作(Related work)目前,视觉里程计有2种主流的实现方式[8],一是特征点法,通过匹配图像中提取的特征点来计算相机运动轨迹,例如Klein等[9]在2007年提出的PTAM(parallel tracking and mapping)算法,使用FAST(features from accelerated segment test)角点检测图像特征,提出关键帧机制,并且后端采用非线性优化代替滤波器;Mur-Artal等[10]提出的ORB-SLAM算法以及2017年更新的ORB-SLAM2算法,在视觉里程计、后端优化和重定位上都使用ORB特征点进行匹配,ORB-SLAM2算法中加入了对双目相机与RGB-D相机的支持。二是直接法,直接根据图像的整体像素信息来计算相机运动轨迹,如Engel等[11]提出了一种直接估计关键帧之间相似变换、尺度感知的图像匹配算法,无需特征提取的预处理阶段,而是直接追踪整幅图像的所有像素,在CPU上能够实现半稠密场景的重建。
上述方法在静态环境下都能达到不错的效果,但是其没有动态物体检测与剔除的能力,在生活中最常见的动态环境下效果大幅下降。
近几年来,深度学习在计算机视觉领域的成就令人瞩目,基于卷积神经网络(CNN)的目标检测算法[12]以及基于全卷积网络的语义分割算法[13]为视觉SLAM检测动态物体带来了新方法[14]。结合DeepLabV2算法[15]的Mask-SLAM通过剔除语义分割网络检测到的先验动态物体(如人、狗)来适应动态环境,但是没有考虑到被动物体(如被人移动的椅子)的剔除;Bescos等[16]提出的DynaSLAM算法使用Mask R-CNN[17]获取每帧图像的实例分割结果,并结合多视角几何方法来检测场景中的被动物体,但是不能利用处于静止状态的先验动态物体追踪相机位姿;Yu等[18]提出的DS-SLAM算法则使用了速度较快的SegNet网络[19],根据运动一致性检测结果进一步验证场景中人的动态性,而SegNet网络常常出现分割不完全的情况,导致残留部分动态特征点被用于追踪相机位姿;姚二亮等[20]在2019年提出了一种基于语义信息和边缘一致性的SLAM算法,使用目标识别网络YOLO[21]得到初步的图像分割结果,然后利用边缘距离变换误差与光度误差进一步细化动态物体区域,相比使用语义分割网络提高了运行速度,但是分割精度不佳;ILS-SLAM[22]方法利用前一帧语义信息修复出漏分割的物体以提高系统感知能力,但是没有考虑到物体离开相机视野的情况以及物体的运动,容易出现错误修复;Fang等[23]利用Mask R-CNN与知识图谱构造出语义描述子以适应动态环境,但语义描述子的构造满足不了实时性。
针对上述问题,本文基于更完善的实例分割修补算法以及更全面的运动状态判定算法可以实现动态物体的精准剔除,并保证系统满足实时性。
3 基于增强分割的RGB-D SLAM方法(RGB-D SLAM method based on enhanced segmentation)本文所提出的SLAM方法是在ORB-SLAM2的基础上新增了实例分割网络与深度图像聚类,系统框架如图 1所示。在实例分割线程中,根据相邻两帧实例分割结果的差异以及深度聚类线程所得到的两帧聚类结果的相似性,判定并修补当前帧的分割结果。在追踪线程中,结合筛选出的动态角点集合与修补后的分割结果,验证并剔除场景中的动态特征点。地图构建线程根据关键帧以及语义信息构建出稠密的实例级语义八叉树地图。
![]() |
图 1 系统框架图 Fig.1 System frame diagram |
与SegNet等语义分割网络相比,实例分割网络能够区分场景中相同类别的不同实例(如区别场景中的多个人、多个椅子等),这对于细分场景中每个物体的动态性十分有用。Mask R-CNN是一个分割效果很好的实例分割网络,但是,过慢的分割速度使其难以保证SLAM系统的实时性。本文采用YOLACT[24]实例分割网络,相比较Mask R-CNN精度略有降低,但是能够保证系统的实时性。YOLACT网络能够得到图像中物体的实例级掩码以及候选框,使用在COCO数据集上训练的模型能够识别生活中常见的80类物体。虽然YOLACT网络在分割图像中的物体时拥有出色的精度,但是经过实验发现,当物体即将离开视野或距离相机过近的时候,经常出现连续性漏分割的情况,如图 2所示。
![]() |
图 2 YOLACT网络出现的分割不完全现象 Fig.2 Incomplete YOLACT network segmentation |
图 2(b)与图 2(c)连续漏分割了椅子,图 2(e)与图 2(f)同样漏分割了人,图 2(h)相比图 2(g)漏分割了电视与盆栽,图 2(i)成功分割出盆栽,但电视依然没有被分割出。分割不完全会导致系统在剔除动态特征点时漏判断这些区域,可能影响相机位姿估计的精度以及地图构建的效果。
3.2 漏分割检测与修补针对实例分割网络的漏分割现象,首先根据分割结果以及相邻深度图像的相似性检测当前帧是否出现漏分割,然后利用多帧信息完成对漏分割对象的修补,以此提升SLAM系统对环境中物体的感知能力,并为动态物体的剔除提供前提条件。令
$ \begin{align} O^{K} & = \left\{{({o_{i, {\text{id}}}^{K}, o_{i, {\text{mask}}}^{K}, {\mathit{\boldsymbol{o}}}_{i, {\text{box}}}^{K}})| {1\leqslant i\leqslant N^{K}}}\right\} \end{align} $ | (1) |
$ \begin{align} {\mathit{\boldsymbol{o}}}_{i, {\text{box}}}^{K} & = \left({b_{i, {\rm u}}^{K}, b_{i, {\rm v}}^{K}, b_{i, {\rm w}}^{K}, b_{i, {\rm h}}^{K}}\right) \end{align} $ | (2) |
式中,
目前RGB-D相机的帧率可达30帧/s以上,这使得相机拍摄的相邻两帧图像具有相似性。基于此本文提出了一种双重验证方法以判断是否出现漏分割。
条件1:若
$ \begin{align} N_{o}^{K} = | \{{o_{i, {\text{id}}}^{K} =o| {1\leqslant i\leqslant N^{K}} }\} | \end{align} $ | (3) |
当对象
![]() |
图 3 参数 |
$ \begin{align} M^{K}=N_{\rm R}^{K-1} +\lambda \end{align} $ | (4) |
采用式(5)计算
$ \begin{align} & \; S({C^{K -1}, C^{K}}) \\ =& \begin{cases} \dfrac{\alpha \cdot M^{K}}{\sum\limits_{i=1}^{M^{K}} {({c_{i}^{K-1} -c_{i}^{K}})}}, M^{K-1}=M^{K} \\ \dfrac{\beta \cdot M^{K-1}}{\sum\limits_{i=1}^{M^{K-1}} {{\min \{{{| {c_{i}^{K-1} -c_{j}^{K}} |}\big| {c_{j}^{K} \in C^{K}}}\}}}}, \\M^{K-1}<M^{K} \\ \dfrac{\beta \cdot M^{K}}{\sum\limits_{i=1}^{M^{K}} {{\min \{{{ |{c_{i}^{K} -c_{j}^{K-1}} |}\big| {c_{j}^{K-1} \in C^{K-1}}}\}}}}, \\ M^{K-1}>M^{K} \end{cases} \end{align} $ | (5) |
如果
如果
![]() |
图 4 满足漏分割条件的图像示例 Fig.4 Examples of images that meet missed segmentation |
在判定当前帧存在漏分割现象后,本文采用匀速运动模型修补漏分割的对象
记
$ \begin{gather} B_{o}^{K} =\{{{\mathit{\boldsymbol{o}}}_{i, {\text{box}}}^{K} | {o_{i, {\text{id}}}^{K} =o, \; 1\leqslant i\leqslant N^{K}}}\}, \; \; \; b_{i}^{K} \in B_{o}^{K} \end{gather} $ | (6) |
$ \begin{gather} C_{i, {\rm u}}^{K} =b_{i, {\rm u}}^{K} +\frac{b_{i, {\rm w}}^{K}} {2}, \; \; \; C_{i, {\rm v}}^{K} =b_{i, {\rm v}}^{K} +\frac{b_{i, {\rm h}}^{K}} {2} \end{gather} $ | (7) |
$ \begin{gather} D({b_{i}^{K-1}, b_{j}^{K}}) =\sqrt{({C_{i, {\rm u}}^{K} -C_{j, {\rm u}}^{K-1}})^{2}+({C_{i, {\rm v}}^{K} -C_{j, {\rm v}}^{K-1}})^{2}} \end{gather} $ | (8) |
$ \begin{gather} b_{i}^{K} =\mathop{\arg\min}\limits_{b_{j}^{K}} \{{D( {b_{i}^{K-1}, b_{j}^{K}})\big| {b_{j}^{K} \in B_{o}^{K}}} \} \end{gather} $ | (9) |
此时,还需利用式(9)寻找
$ \begin{align} &\begin{aligned} &U({b_{i}^{K-2}, b_{i}^{K-1}})=C_{i, {\rm u}}^{K-1} -C_{i, {\rm u}}^{K-2} \\ &V({b_{i}^{K-2}, b_{i}^{K-1}})=C_{i, {\rm v}}^{K-1} -C_{i, {\rm v}}^{K-2} \end{aligned} \end{align} $ | (10) |
$ \begin{align} &b_{i, F}^{K} =\{{b_{i, {\rm u}}^{K-1} +U, b_{i, {\rm v}}^{K-1} +V, b_{i, {\rm w}}^{K-1}, b_{i, {\rm h}}^{K-1}}\} \end{align} $ | (11) |
此外,如果
修补实例分割结果的目的是为剔除场景中动态物体提供前提条件,结合初步筛选的动态角点集合判断场景中实例级物体的运动状态,从而剔除动态物体上的特征点,提高相机位姿的估计精度。
3.3.1 筛选动态角点在实例分割线程进行实例分割以及修补的同时,追踪线程利用几何约束初步筛选出动态角点集合。动态角点的筛选需要先提取第
![]() |
图 5 判断角点对可靠性所需验证的周围像素点 Fig.5 The surrounding pixel points verified to judge the reliability of the corner point pair |
$ \begin{align} E_{\text{hv}} & =\sum\limits_{x=-{ r}}^{ r} { \left({g_{x, 0}^{K} -g_{x, 0}^{K-1}}\right)} +\sum\limits_{y=-{ r}}^{ r} { \left( {g_{0, y}^{K} -g_{0, y}^{K-1}}\right)} \end{align} $ | (12) |
$ \begin{align} E_{\text{dia}} & =\sum\limits_{x=-{ r}}^{ r} { \left({g_{x, x}^{K} -g_{x, x}^{K-1}}\right)} +\sum\limits_{y=-{ r}}^{ r} { \left({g_{y, -y}^{K} -g_{y, -y}^{K-1}}\right)} \end{align} $ | (13) |
然后,根据对称转移误差筛选出
$ \begin{align} {{\mathit{\boldsymbol{p}}}}_{i}^{K-1} & =({u_{i}^{K-1}, v_{i}^{K-1}}), \; \; {{\mathit{\boldsymbol{h}}}}_{i}^{K-1} =( {u_{i}^{K-1}, v_{i}^{K-1}, 1}) \end{align} $ | (14) |
$ \begin{align} {{\mathit{\boldsymbol{l}}}}_{i}^{K-1, K} & ={\mathit{\boldsymbol{F}}}_{\rm M}^{K-1, K} \times {{\mathit{\boldsymbol{h}}}}_{i}^{K-1} = \begin{bmatrix} X_{i}^{K-1, K} \\ Y_{i}^{K-1, K} \\ Z_{i}^{K-1, K} \end{bmatrix} \end{align} $ | (15) |
$ \begin{align} d_{i}^{K-1, K} & =\frac{| {{{\mathit{\boldsymbol{h}}}}_{i}^{K^{\rm T}} \cdot {\mathit{\boldsymbol{F}}}_{\rm M}^{K-1, K} \cdot {{\mathit{\boldsymbol{h}}}}_{i}^{K-1}} |}{\sqrt{| {X_{i}^{K-1, K}} |^{2}+| {Y_{i}^{K-1, K}} |^{2}}} \end{align} $ | (16) |
$ \begin{align} S_{i} & =d_{i}^{K-1, K} +d_{i}^{K, K-1} \end{align} $ | (17) |
图 6直观地描述了对称转移误差的计算。若
![]() |
图 6 对称转移误差的计算 Fig.6 Calculation of symmetric transfer error |
![]() |
图 7 动态角点筛选结果 Fig.7 Dynamic corner screening results |
为剔除当前帧中的动态特征点,需要准确判断出场景中处于移动的物体。本文联合修补后的实例分割结果
$ \begin{align} \theta_\text{MOVE} =\frac{N({T^{K}})}{\delta \cdot N_{\rm R}^{K}} \end{align} $ | (18) |
算法1 动态特征点剔除算法
输入: 修复的实例分割结果
输出: 剔除动态点的ORB关键点集合
1:初始化运动标志数组
2: for每个对象
3:
4:
5: for每个动态点
6: if
7:
8: 将
9: end if
10: end for
11: if
12:
13: end if
14: end for
15: for每个关键点
16: if
17: 将
18: end if
19: end for
带有实例级语义信息的八叉树地图能够为机器人执行目标抓取等高级任务提供前提条件。相比点云地图,八叉树地图剔除了许多冗余信息,百倍级地缩小了地图存储所需的空间。在地图构建线程中,首先滤除当前关键帧中无效的深度值,获得有效深度像素集合;然后根据修补后的分割结果与动态判定结果剔除位于动态物体上的像素,为保证地图的长期可用性,还需剔除处于静止的先验动态物体(如静止的人)上的像素,得到带有语义信息的静态局部点云地图
为应对场景变化,还需时刻更新
$ \begin{align} &\; P({n| {z_{1:T}}}) \\ =& \left({1+\frac{1-P({n| {z_{T}}})}{P( {n| {z_{T}}})}\cdot \frac{1-P({n| {z_{1:T-1}}})}{P({n| {z_{1:T-1}}})}\cdot \frac{P(n)}{1-P(n)}}\right)^{-1} \end{align} $ | (19) |
式中,
为验证所提出方法的有效性,本文除了使用TUM RGB-D公共数据集进行评估,还在真实医院场景序列以及生活家居场景序列下验证了算法的有效性。对于TUM RGB-D数据集,选用了6个动态序列,分别是fr3_walking_xyz、fr3_walking_static、fr3_walking_rpy、fr3_sitting_xyz、fr3_walking_static以及fr3_walking_rpy。其中fr3_walking系列的3个序列中存在2个人在办公室内来回走动,称之为高动态序列;而fr3_sitting系列的3个序列中有2个人在办公室内坐在椅子上交谈,称之为低动态序列。xyz、static和rpy分别代表相机沿坐标轴方向平移、相机静止以及相机沿坐标轴旋转。此外,在使用Kinect v1相机所拍摄的医院场景视频序列中,一个病人在病床上坐着然后起身走动;在生活家居场景序列中,一个人坐在沙发上看书,然后起身走动并移动书本等物体。实验平台为Intel i7处理器,16 GB内存,GTX2080TI显卡。
4.1 参数设置所提出的方法需要设定一些阈值参数,参数的设置经过公共数据集与真实环境下共13个序列验证调优得到,实验部分所使用的参数值如表 1所示。
![]() |
表 1 参数设置 Tab. 1 Parameter setting |
针对所提出的分割修补算法,本文在TUM RGB-D数据集、医院场景序列以及生活家居场景序列下验证其修补效果。在图 2中,3个图像序列都出现了实例分割网络漏分割的现象,根据提出的修补算法,修补结果如图 8所示。
![]() |
图 8 所提出的算法对于图 2中漏分割图像的修补效果 Fig.8 The effect of the proposed algorithm on the repairing for the missed segmentation image in Fig. 2 |
对于图 2(b)(c)所漏分割的椅子,本文算法能够正确检测出椅子出现漏分割,并且修补出椅子区域,如图 8(b)(c)中蓝色矩形区域所示,修补的椅子随后进行运动状态判定。除了修补椅子等先验非动态物体,更重要的是修补出漏分割的先验动态物体(如人),因为其很大可能处于运动状态。从图 8(e)(f)可以看出,本文算法能够修补出连续多帧漏分割的人,若经过运动状态判定后认为修补出的人处于动态,则剔除其上特征点,避免因漏分割而导致的动态物体漏剔除,提高了系统的鲁棒性。图 8(h)(i)则展示了本文算法同时修复多个漏分割物体的能力,其中图 8(h)完成了对电视和盆栽的修补,而图 8(i)只进行了电视的修补,因为这一帧中的盆栽被成功分割出,所以算法终止了对该对象的修补。
此外,本文还与ILS-SLAM系统[22]提出的分割修补方法进行了对比。实验基于同一分割网络,比较2种修补方法的修补效果,如图 9所示。图 9(a)为一个序列中3张图像的原始分割结果,其中第1张图像成功分割出人,而第2张图像漏分割了人,第3张图像中人走出了视野。对于ILS-SLAM系统的修补结果,使用第1张图像中人的候选框直接作为第2张图像中人的修补结果,使得候选框过大并导致剔除了过多静态特征点;当人走出视野后,其算法仍然会认为此人被漏分割,继续使用第1张图像的候选框来修补,导致出现错误修补。本文方法采用匀速运动模型,能够使修补出的候选框更准确地捕获到人的运动范围,深度图像聚类的加入使得目标在离开视野时能够立即终止修补。
![]() |
图 9 分割修补算法对比 Fig.9 Comparison of segmentation repair algorithms |
为了检验所提算法的有效性,在4个场景序列下进行动态特征点剔除实验,如图 10所示。图 10(e)展示了图 8(c)修补了椅子后的特征点的剔除情况,相比不使用剔除算法的图 10(a),本文算法剔除了人上的特征点,保留了椅子上的特征点,因为此时人在移动,而椅子处于静止状态;图 10(f)相比图 10(b)不仅剔除了人上的特征点也剔除了移动椅子上的特征点,展现了算法对于椅子等被动物体的检测与剔除能力;图 10(g)相比图 10(c)剔除了右边的人及其所拿着的书,而左边坐在沙发上看书的人没有被剔除,这是因为左边的人此时处于静止状态,所以仍利用其特征点追踪相机位姿,但是建图时会将其剔除;最后,图 10(d)(h)展现出了分割修补算法的重要作用,其中图 10(h)利用了图 8(f)的修补结果,判断出所修补的人处于动态,因此将其剔除。若没有将此帧漏分割的人修补出来,那么就无法利用运动状态判定算法将其剔除,并使系统追踪到动态的特征点,从而影响系统的精度。
![]() |
图 10 动态特征点剔除效果 Fig.10 The effect of dynamic feature point elimination |
通过系统所估计的相机位姿精度可以直观地判断系统的性能。在TUM RGB-D数据集的6个动态序列上进行了对比试验,除了ORB-SLAM2,还对比了多个面向动态环境的先进视觉SLAM系统,包括DynaSLAM[16]、DS-SLAM[18]、Fang等[23]提出的方法、Yang等[28]利用图像聚类与区域运动检测剔除动态特征点的方法以及Dai等[29]根据特征点的相关性剔除动态特征点的方法。
评价指标为广泛使用的绝对轨迹误差(absolute trajectory error,ATE),并且在同一平台上运行ORB-SLAM2、DS-SLAM、DynaSLAM以及本文方法,最后结果取10次运行的平均值。对于其余未开源的方法,采用其论文上的数据进行对比,并用“*”标出,论文中没有的数据用“–”表示。
为验证方法的有效性,表 2展示了在6个序列下的消融实验结果。其中DDA为仅使用实例分割网络及动态物体判定算法,DDA
![]() |
表 2 消融实验分析中各方法的绝对轨迹误差(单位:m) Tab. 2 The absolute trajectory errors of different methods in the analysis of ablation experiments (unit: m) |
从表 2可以看出,本文方法在高动态序列下的精度相比ORB-SLAM2算法提升巨大,而在低动态序列下的提升则相对较小,这是因为在高动态序列中,人以及椅子出现了移动,展现出了本文动态物体判定算法的优势。而在低动态序列中,人大部分时刻处于静止状态,此时无需考虑剔除动态物体也可以获得较高的估计精度。此外,通过比较DDA与DDA
图 11直观地展示了在fr3_walking_xyz序列下ORB-SLAM2算法与本文方法估计的相机运动轨迹与相机真实轨迹的对比。从图 11可以看出,在相同尺度下,本文方法获得的相机运动轨迹与真实轨迹相差无几,而ORB-SLAM2算法由于受动态物体的影响,其轨迹出现较大偏差。
![]() |
图 11 ORB-SLAM2算法与本文方法在fr3_walking_xyz序列下的轨迹对比 Fig.11 Comparison of the trajectory between ORB-SLAM2 algorithm and the proposed method on fr3_walking_xyz sequence |
表 3比较了本文方法与其余5个面向动态场景的视觉SLAM方法,可以看出,对于3个高动态序列,其他方法相比ORB-SLAM2算法都有很大提升,展现了对动态环境的适应性。但是,对于3个低动态序列,相较于ORB-SLAM2算法,其他方法则表现不一,比如在高动态序列下表现优异的DynaSLAM算法在fr3_sitting_xyz序列与fr3_sitting_rpy序列下相比ORB-SLAM2算法出现了性能下降的情况。这是因为场景中的人大部分时刻处于静止状态,并且人上的特征点数量占据了总特征点数量的较大比例,而DynaSLAM算法直接剔除了所有先验动态物体,导致剩余的特征点不足以支撑鲁棒的相机位姿估计。值得注意的是,本文方法无论在高动态序列下还是低动态序列下,都能够保证性能处于领先水平,这得益于更加完善的物体检测与动静态判定算法,一是能够修补出漏分割对象,二是能够判断实例级对象的运动状态,使得系统在各个场景中都能达到较高精度,具有良好的鲁棒性。
![]() |
表 3 其他面向动态场景的方法与本文方法的绝对轨迹误差(单位:m) Tab. 3 The absolute trajectory error of other dynamic scene oriented methods and the proposed method (unit: m) |
地图作为视觉SLAM系统的最终产物,能直观地展示系统的整体性能。对比了本文方法与DS-SLAM方法的建图效果,首先在fr3_walking_xyz序列下对比所构建的地图,如图 12所示。该序列中存在2个人走动并移动椅子,这对地图构建是一个很大挑战。图 12(a)(b)分别为DS-SLAM方法所构建的地图的主视图与侧视图,图 12(c)(d)则为本文方法所构建的地图的主视图与侧视图。
![]() |
图 12 DS-SLAM算法与本文方法在fr3_walking_xyz序列下的建图对比 Fig.12 Map construction comparison of DS-SLAM algorithm and the proposed method under sequence fr3_walking_xyz |
在DS-SLAM方法所构建的地图中,桌子左侧与右侧有许多白色悬空点,这是因为SegNet网络的分割结果存在漏分割人的情况,导致DS-SLAM方法所构建的地图中存在属于人的噪点,影响了所建地图的可用性。而本文方法经过所提出的实例分割修补算法更加完善地剔除了场景中的人,如图 12(c)与图 12(d)所示,相较于DS-SLAM方法所构建的地图,本文构建的地图大大减少了因人导致的噪点。此外,二者所构建的地图都用颜色标注了环境的语义信息,DS-SLAM方法中用蓝色和红色分别标注显示器与椅子,但是发现右侧的显示器没有标注完全,并且将许多噪点标注为红色。对于本文方法所构建的地图,使用蓝色标注显示器、橘色标注椅子、紫色标注键盘以及用绿色标注书本,标注效果与DS-SLAM方法相比有较大提升。值得注意的是,DS-SLAM方法所使用的SegNet网络无法区分实例级物体,比如无法区分场景中的2个显示器。而本文使用的实例分割网络能够将场景中同类别的不同个体区分开,丰富了地图的语义信息。
除了在TUM数据集上验证建图效果,本文还在生活家居场景序列下进行了对比实验,其中图 13(a)与图 13(b)为该序列中的2帧图片。DS-SLAM方法与本文方法所构建的地图分别如图 13(c)与图 13(d)所示,对于DS-SLAM方法所构建的地图,用绿色标注的沙发存在标注不完全的现象,并且地图上存在多处误标注的红色区域;相比DS-SLAM方法,本文方法所构建的地图在语义标注上更加精确,其中沙发使用橙色进行标注,桌子使用紫色进行标注,盆栽使用绿色进行标注。
![]() |
图 13 DS-SLAM算法与本文方法在生活家居序列下的建图对比 Fig.13 Map construction comparison of DS-SLAM algorithm and the proposed method on sequence "family life" |
视觉SLAM作为一种面向实际应用的技术,实时性是其重要评价指标之一。本文在动态序列fr3_walking_xyz下测试了系统运行时间,包含视觉里程计、后端优化、回环检测以及地图构建,本文方法平均每处理1帧需要46 ms。此外,表 4还对比了本文方法与DS-SLAM方法、DynaSLAM方法的主要模块的时间开销。DS-SLAM方法所使用的轻量级语义分割网络以及动态判定算法保证了系统的实时性;DynaSLAM方法使用的实例分割网络较为耗时,并且在利用多视角几何判定动态物体时,所需时间超过1 s;相比之下,本文方法在保证系统性能的同时,仍可满足实时性。
![]() |
表 4 主要模块运行时间对比(单位:ms) Tab. 4 Comparison of running time of main modules (unit: ms) |
下面进一步分析本文方法。动态判定模块的时间开销主要取决于Shi-Tomasi角点的提取时间,使用已经提取的ORB关键点筛选动态角点将会减少所需时间。但是经过实验发现,ORB关键点所筛选出的动态角点效果较差,无法用于物体运动状态的判定。如图 14(a)(b)(c)所示,其筛选出的动态点(用红色点标出)无法聚焦于移动物体,原因是所提取的ORB关键点经过四叉树均匀化了;图 14(d)(e)(f)展示了使用Shi-Tomasi角点筛选出的动态角点结果,能够准确捕捉到场景中的动态区域。
![]() |
图 14 分别使用ORB关键点与Shi-Tomasi角点筛选动态点的效果 Fig.14 The effect of filtering dynamic points using ORB key points and Shi-Tomasi corner points respectively |
针对动态环境下易出现漏剔除动态物体的现象,提出一种基于增强分割的RGB-D SLAM方法。对于实例分割网络存在的漏分割现象,现有工作无法捕捉到漏分割对象在相机视野中的运动,本文设计了一种基于自适应深度聚类的实例分割修补算法,能够跟随漏分割对象的运动进行修补,让系统获取到更加全面的环境语义信息。针对现有工作在判断物体运动状态时存在少剔除与过剔除的问题,提出一种基于实例级对象的运动状态判定算法,能够准确剔除场景中处于动态的实例对象,避免场景中静态对象的误剔除,以提升系统的精度。为验证本文方法的有效性,在TUM RGB-D公共数据集以及真实环境下进行了丰富的对比试验,无论在高动态环境还是低动态环境,本文方法相比于其他先进方法表现出了更加优异的效果。
然而,本文工作仍然存在一些值得继续改进的地方,比如进一步降低系统各模块的时间开销。此外,利用所构建的八叉树地图实现机器人导航也是本文的未来工作之一。
[1] |
Jia Y J, Yan X Y, Xu Y H. A survey of simultaneous localization and mapping for robot[C]//IEEE 4th Advanced Information Technology, Electronic and Automation Control Conference. Piscataway, USA: IEEE, 2019: 857-861.
|
[2] |
Makhubela J K, Zuva T, Agunbiade O Y. A review on vision simultaneous localization and mapping (VSLAM)[C]//International Conference on Intelligent and Innovative Computing Applications. Piscataway, USA: IEEE, 2018. DOI: 10.1109/ICONIC.2018.8601227.
|
[3] |
Ruzicka M, Masek P. Design of visual odometry system for mobile robot[C]//16th International Conference on Mechatronics. Piscataway, USA: IEEE, 2014: 548-553.
|
[4] |
Mur-Artal R, Tardos J D. ORB-SLAM2:An open-source SLAM system for monocular, stereo, and RGB-D cameras[J]. IEEE Transactions on Robotics, 2017, 33(5): 1255-1262. DOI:10.1109/TRO.2017.2705103 |
[5] |
Engel J, Koltun V, Cremers D. Direct sparse odometry[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2018, 40(3): 611-625. DOI:10.1109/TPAMI.2017.2658577 |
[6] |
艾青林, 刘刚江, 徐巧宁. 动态环境下基于改进几何与运动约束的机器人RGB-D SLAM算法[J]. 机器人, 2021, 43(2): 167-176. Ai Q L, Liu G J, Xu Q N. An RGB-D SLAM algorithm for robot based on improved geometrical and kinematic constraints in dynamic environment[J]. Robot, 2021, 43(2): 167-176. |
[7] |
Kaneko M, Iwami K, Ogawa T, et al. Mask-SLAM: Robust feature-based monocular SLAM by masking using semantic segmentation[C]//IEEE/CVF Conference on Computer Vision and Pattern Recognition Workshops. Piscataway, USA: IEEE, 2018: 371-378.
|
[8] |
丁文东, 徐德, 刘希龙, 等. 移动机器人视觉里程计综述[J]. 自动化学报, 2018, 44(3): 385-400. Ding W D, Xu D, Liu X L, et al. Review on visual odometry for mobile robots[J]. Acta Automatica Sinica, 2018, 44(3): 385-400. |
[9] |
Klein G, Murray D. Parallel tracking and mapping for small AR workspaces[C]//6th IEEE and ACM International Symposium on Mixed and Augmented Reality. Piscataway, USA: IEEE, 2007: 225-234.
|
[10] |
Mur-Artal R, Montiel J M M, Tardos J D. ORB-SLAM: A versatile and accurate monocular SLAM system[J]. IEEE Transactions on Robotics, 2015, 31(5): 1147-1163. DOI:10.1109/TRO.2015.2463671 |
[11] |
Engel J, Schops T, Cremers D. LSD-SLAM: Large-scale direct monocular SLAM[M]//Lecture Notes in Computer Science, Vol. 8690. Berlin, Germany: Springer, 2014: 834-849.
|
[12] |
Liu W, Anguelov D, Erhan D, et al. SSD: Single shot multibox detector[M]//Lecture Notes in Computer Science, Vol. 9905. Berlin, Germany: Springer, 2016: 21-37.
|
[13] |
Shelhamer E, Long J, Darrell T. Fully convolutional networks for semantic segmentation[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(4): 640-651. DOI:10.1109/TPAMI.2016.2572683 |
[14] |
赵洋, 刘国良, 田国会, 等. 基于深度学习的视觉SLAM综述[J]. 机器人, 2017, 39(6): 889-896. Zhao Y, Liu G L, Tian G H, et al. A survey of visual SLAM based on deep learning[J]. Robot, 2017, 39(6): 889-896. |
[15] |
Chen L C, Papandreou G, Kokkinos I, et al. DeepLab: Semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected CRFs[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2018, 40(4): 834-848. DOI:10.1109/TPAMI.2017.2699184 |
[16] |
Bescos B, Facil J M, Civera J, et al. DynaSLAM: Tracking, mapping, and inpainting in dynamic scenes[J]. IEEE Robotics and Automation Letters, 2018, 3(4): 4076-4083. DOI:10.1109/LRA.2018.2860039 |
[17] |
He K M, Gkioxari G, Dollar P, et al. Mask R-CNN[C]//IEEE International Conference on Computer Vision. Piscataway, USA: IEEE, 2017: 2980-2988.
|
[18] |
Yu C, Liu Z X, Liu X J, et al. DS-SLAM: A semantic visual SLAM towards dynamic environments[C]//IEEE/RSJ International Conference on Intelligent Robots and Systems. Piscataway, USA: IEEE, 2018: 1168-1174.
|
[19] |
Badrinarayanan V, Kendall A, Cipolla R. SegNet: A deep convolutional encoder-decoder architecture for image segmentation[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(12): 2481-2495. DOI:10.1109/TPAMI.2016.2644615 |
[20] |
姚二亮, 张合新, 宋海涛, 等. 基于语义信息和边缘一致性的鲁棒SLAM算法[J]. 机器人, 2019, 41(6): 751-760. Yao E L, Zhang H X, Song H T, et al. Robust SLAM algorithm based on semantic information and edge consistency[J]. Robot, 2019, 41(6): 751-760. |
[21] |
Redmon J, Farhadi A. YOLOv3: An incremental improvement[DB/OL]. (2018-04-08)[2018-11-25]. http://arxiv.org/abs/1804.02767.
|
[22] |
Wang H, Wang L, Fang B F. Robust visual odometry using semantic information in complex dynamic scenes[M]//Communications in Computer and Information Science, Vol. 1397. Berlin, Germany: Springer, 2020: 594-601.
|
[23] |
Fang B F, Mei G F, Yuan X H, et al. Visual SLAM for robot navigation in healthcare facility[J]. Pattern Recognition, 2021, 113. DOI:10.1016/j.patcog.2021.107822 |
[24] |
Bolya D, Zhou C, Xiao F Y, et al. YOLACT: Real-time instance segmentation[C]//IEEE/CVF International Conference on Computer Vision. Piscataway, USA: IEEE, 2019: 9156-9165.
|
[25] |
Shi G J, Gao B K, Zhang L. The optimized K-means algorithms for improving randomly-initialed midpoints[C]//2nd International Conference on Measurement, Information and Control. Piscataway, USA: IEEE, 2013: 1212-1216.
|
[26] |
Shi J B, Tomasi C. Good features to track[C]//IEEE Conference on Computer Vision and Pattern Recognition. Piscataway, USA: IEEE, 1994: 593-600.
|
[27] |
Thrun S, Burgard W, Fox D. Probabilistic robotics[M]. Cambridge, USA: MIT Press, 2005: 94-96.
|
[28] |
Yang X, Yuan Z K, Zhu D F, et al. Robust and efficient RGB-D SLAM in dynamic environments[J]. IEEE Transactions on Multimedia, 2020, 23: 4208-4219. |
[29] |
Dai W C, Zhang Y, Li P, et al. RGB-D SLAM in dynamic environments using point correlations[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2022, 44(1): 373-389. DOI:10.1109/TPAMI.2020.3010942 |