目录
1 Introduction
2 Related work
3 DOT
A 系统概述
B. 实例分割
C. 相机和物体跟踪
D. 跟踪质量、异常值和遮挡
E. 目标是否在运动?
F. 掩码传播
4 Experimental results
5 Conclusions
摘要 - 本文我们介绍了DOT(Dynamic Object Tracking)——一种与现有SLAM系统结合使用,能够显著提高在高动态环境下鲁棒性和准确性的前端技术。DOT通过实例分割和多视图几何结合,生成动态物体的掩码,使基于刚体场景模型的SLAM系统可以避开这些图像区域进行优化。
为了确定哪些物体实际上在移动,DOT首先对潜在动态物体的实例进行分割,然后利用估计的相机运动通过最小化光度重投影误差来跟踪这些物体。这种短期跟踪方法提高了分割的准确性,相比其他方法,最终只会生成实际动态物体的掩码。我们在三个公共数据集上使用ORB-SLAM 2进行了DOT的评估。结果表明,我们的方法显著提高了ORB-SLAM 2的准确性和鲁棒性,尤其是在高动态场景下。
1 Introduction
SLAM是机器人平台自主导航的基本能力之一[4]。其目标是通过嵌入式传感器的信息,联合估计机器人的运动和周围环境的地图。视觉SLAM是其中最具挑战性且最相关的配置之一,传感器主要或仅限于摄像头。
尽管在过去的20年里SLAM取得了显著进展,但大多数最新技术系统仍然假设环境是静态的,即场景中的点之间的相对位置不会发生变化,唯一的运动是由相机完成的。在这种假设下,SLAM模型将视觉变化完全归因于相机的相对运动,将动态区域建模为异常值,在位姿跟踪和地图估计过程中忽略它们。然而,在这些动态区域被排除为异常值之前,它们的数据会在SLAM优化中被使用,从而引入误差和不一致性,影响地图和相机姿态的估计。此外,对于基于特征的SLAM方法,其跟踪少量显著图像点,动态区域中产生的错误是相关且可能导致系统失败的,因为这些错误匹配数据会引入系统中。实际应用中,机器人或增强现实系统必须在远非静态的环境中运行。例如,汽车或无人机的自主导航、拥挤场景中的增强现实或者行星探测任务,在这些任务中低纹理使得SLAM系统在存在阴影或其他机器人的情况下不可靠。因此,开发能够在高动态环境中运行的鲁棒SLAM系统对于许多应用是至关重要的。
如图1所示,本文旨在开发一种图像处理策略,以提高动态环境下视觉SLAM系统的稳健性。我们的具体贡献是“动态物体跟踪”(DOT)的开发,这是一种将实例分割与多视角几何相结合的前端技术,使用直接方法[6]来跟踪相机运动以及动态物体的运动。预处理的结果是一个包含每个图像动态部分的掩码,SLAM系统可以使用该掩码来避免在这些区域进行对应关系的建立。
图1. 顶部一行:ORB-SLAM2 [1] 在KITTI [2] 图片上进行跟踪。中间一行:ORB-SLAM2 使用DOT分割掩码进行跟踪,区分运动和静止的物体。底部一行:ORB-SLAM2 使用Detectron2 [3] 分割掩码进行跟踪,编码所有可能的动态物体。请注意,DOT分割出实际运动的物体(例如,移动的汽车),同时保留静止的物体(例如,停放的汽车)。
我们在三个不同的公共数据集上的实验证明,我们的语义分割和几何引导跟踪的组合在动态场景中表现优于现有技术。我们还发现DOT作为一个独立的前端模块实现,因此可以很容易地集成到现有的SLAM系统中。由于DOT包括短期掩码跟踪,我们避免了在序列中对所有帧进行分割,从而节省了计算资源。最后,尽管我们针对汽车导航特定领域对DOT进行了调优和评估,但我们的策略也可以适用于其他应用场景。
2 Related work
动态环境中的SLAM是一个开放的研究问题,有大量的科学文献可供参考。我们将不同的方法分为三个主要类别。
第一类方法是将场景建模为一组非刚性部分,包括可变形和动态物体[7][8][9]。虽然这条研究线路最为通用,但也是最具挑战性的。本文假设物体内部是刚体的前提是后两种动态视觉SLAM类别的基础。
第二类方法旨在通过仅重建场景的静态部分来提高视觉SLAM的准确性和稳健性。动态物体被分割并忽略以进行相机位姿跟踪和地图估计。在这一方向上,DynaSLAM[10]在ORB-SLAM2[1]的基础上构建,旨在估计场景的静态部分地图并在长期应用中重复使用。动态物体通过将语义分割与多视角几何相结合来去除,以检测刚体模型中的不一致性。语义分割使用Mask R-CNN[11],它可以检测和分类场景中的对象为不同的类别,其中一些类别被预定义为可能是动态的(例如汽车或人)。DynaSLAM被设计为遮蔽场景中所有可能的移动物体,但正如[10]所示,在包含可能移动但实际上不移动的物体(例如停放的汽车的场景)的场景中,其准确性低于原始的ORB-SLAM2。本文旨在解决这个问题,只有当对象确实在运动时,才将其标记为动态。具有类似方法的另一个工作是StaticFusion[12],这是一个利用场景背景的三维重建来进行分割的稠密RGB-D视觉SLAM系统,以传播关于场景静态部分的时间信息。
最后,在动态视觉SLAM中的第三种工作方式,超越了动态物体的分割和抑制,包括MID-Fusion [13]、MaskFusion [14]、DynSLAM [15]和ClusterVO[16]等工作。它们的目标是同时估计相机的位姿和多个动态物体。为此,在MID-Fusion [13] 和 MaskFusion [14] 中,创建每个可能移动目标的子地图,并进行目标和相机位姿的联合估计。大部分提到的系统[13][14][15][16][10]都涉及深度学习方法,在某些情况下由于分割网络的频率限制,目前无法实时实现。本研究中的贡献消除了对所有帧进行分割的要求,使系统能够独立于网络的分割频率,从而实现实时实现。
3 DOT
A 系统概述
图2展示了我们提案的概述。DOT的输入可以是以某一定视频速率拍摄的RGB-D或立体图像,输出是编码场景的静态和动态元素的掩码,可以直接供SLAM或里程计系统使用。
图2. DOT的概述。路径A(红色)显示从网络获得分割掩码的帧的处理过程。路径B(绿色)显示通过DOT几何传播获得分割掩码的帧的处理过程。
第一个块(实例分割)对所有可能的动态物体进行逐像素的分割的CNN。在我们的实验中,使用自动驾驶数据集,只对车辆进行了分割,认为它们是可能的运动物体。正如后面将详细阐述的那样,由于DOT从帧到帧跟踪掩码,这个操作不需要在每个帧上都进行。
图像处理块提取和分离属于图像的静态区域和动态物体的点。相机的位姿仅使用场景的静态部分进行跟踪。根据此块以及考虑到相机位姿,估计每个分割对象的运动(目标跟踪)。
下一个块(物体是否在运动中?)使用几何标准确定由网络标记为可能动态的物体是否确实在移动。该信息用于更新编码每帧的静态和动态区域的掩码,并提供给链接的里程计/SLAM视觉系统。
最后,DOT从物体运动的估计中生成新的掩码(掩码传播),因此不需要对网络进行每帧分割(见图3)。鉴于实例分割的计算负载较大,这可能是DOT与其他最先进方法相比的一个重要优势。
图3. 样本结果。上排显示特征和物体轨迹。请注意,网络的分割(用黄色框起来)并不是所有帧都必要的。下排显示由DOT传播的掩码,编码运动分类:运动中(彩色)、静止(黑色)和尚未观察到(灰色)。
B. 实例分割
我们使用COCO实例分割基线模型,搭配使用Detectron2 [3]训练的Mask R-CNN R50-FPN 3x[17], [18],用于对图像中所有可能可移动实例进行分割。网络的输出经过修改,以在单幅图像中获取所有分割掩码。未被分类为可能运动的类别的图像区域被赋予“背景”标签,并被认为是静态的,用于后续模块。分类仅限于被认为是刚性物体且可能可移动的类别,因此不包括人类在内。如果需要其他类别,可以使用这些权重作为起点进行微调,或使用自己的数据集
为了在多个帧之间持续跟踪物体,我们在DOT计算的掩码和网络提供的掩码之间加入了匹配步骤。未与任何现有物体匹配的新检测结果将用于初始化新的实例。
C. 相机和物体跟踪
从先前步骤的实例分割中,我们旨在估计相机和动态物体的运动。由于相机的运动和物体的运动在图像中是相互关联的,因此我们采用两步过程进行估计。首先,我们找到相机的姿态作为相对变换,然后减去它来估计物体的运动。我们的优化与最近的直接视觉测距和SLAM方法[6]相关,这些方法旨在找到最小化光度重投影误差的运动。
优化:我们对相机姿态和后续物体运动估计进行高斯-牛顿优化,
其中包含残差函数的导数(方程(3)和(5)),是包含光度残差的协方差的对角矩阵。李代数姿态增量,其中是从向量到切空间矩阵表示的映射运算符[19],表示为向量。我们使用左矩阵乘法和指数映射运算符更新变换。两者都使用恒定速度模型和多尺度金字塔图像进行初始化,以帮助收敛。
相机跟踪:使用静态场景区域 上的高梯度像素的稀疏子集和多视点约束 [20] 来估计相机运动,假设相机标定和点的深度已知。静态点 从参考帧中的像素坐标投影到帧 中的对应坐标,如下所示:
其中,和 分别对应透视投影和反投影模型,是参考帧中点的深度。 通过最小化光度重投影误差来优化相机姿态,
计算方法是对所有点在其参考帧和其在正在跟踪的帧中的投影之间的强度差的总和。我们使用 Huber 范数 γ。
物体跟踪:一旦估计了 Tc,每个潜在动态物体的姿态可以通过使用属于该物体的一部分图像高梯度像素进行类似估计。将潜在动态物体建模为具有姿态 To 的实体,则每个点 从帧投影到帧中的坐标为:
与公式 3 类似,通过最小化以下光度重投影误差来估计 To。
D. 跟踪质量、异常值和遮挡
遮挡、光照条件的改变和分割错误会对目标和相机位姿的准确性产生显著影响。正如算法1中所示,我们开发了几种策略,在目标跟踪步骤之后应用这些策略以减小它们的影响。
跟踪质量:动态目标的外观会发生明显变化,增加跟踪误差。我们使用皮尔逊相关系数来建模外观相似度。这个度量反映了参考强度和相应估计之间的线性相关程度,因此对增益和偏移变化不变。需要注意的是,这也可以应用于相机跟踪φc,尽管背景外观的变化通常没有那么明显。
异常值排除:常常使用绝对阈值来拒绝离群值,这个阈值是根据光度误差的中位数、运动模糊或者光照变化进行调整的。如图4所示,我们建议根据强度之间的线性关系设置一个相对阈值,这样错误就不会受到图像中光度变化的影响。
图4 左侧是一个物体的光度误差直方图,阴影区域表示通过一个固定阈值去除的点。右侧则是强度之间的线性关系图。注意由于光度变化的不同,绝对阈值(黄色)和相对阈值(红色)标记为离群值的点是不同的。
遮挡:动态目标可能相互遮挡。在我们的实验中,移除被遮挡部分作为异常值是不够的。我们采用了一种策略,即从最近到最远的距离对目标进行跟踪,按顺序更新它们各自的掩模。通过这种方式,在每次迭代中,我们更新被较近目标遮挡的较远目标的点。
E. 目标是否在运动?
这个模块接收相机的变换矩阵 Tc 和目标的变换矩阵 To 作为输入,并估计目标是否正在移动。它的输出将被SLAM或里程计系统使用,用于存储图像中被动态目标占据的区域以及它们是否在运动的掩模。通过使用在上一步中估计的 Tc 和 To 将每个目标的像素投影到新帧上来获取这些掩模。
直接观察 To 中的目标运动会由于传播的图像噪声而产生困难,难以确定目标是否在运动的绝对阈值。在这项工作中,我们选择使用2D图像测量来观察目标的运动。我们将我们的度量标记为动态视差,即静止点和实际投影点之间的像素距离。对于每个目标,我们计算其点集的动态视差的中位数。
一个点的三维运动会产生不同的图像运动,这取决于1)它的图像坐标,2)它的深度,以及3)物体方向和相机运动方向之间的相对角度。
通过非线性位姿优化(见公式(1)),我们可以推导出对目标运动的估计的不确定性。假设一个k维高斯分布,它的微分熵为。
差分熵可以被视为光度残差最小化所导致的姿态不确定性。换句话说,具有高熵的运动观测将导致图像像素的大幅度变化(见图5)。相反,具有低熵的观测将产生小的图像差异。
图5. 视差与熵的对比。比较了不同运动物体产生的动态视差。注意观察到熵值较高的观测结果(更亮的红色)会导致图像像素的较大偏移。
基于此,用于分类物体运动的算法工作如下。我们将动态差异与随着熵的增加而平滑增长的变量阈值∆d进行比较。我们将超过此阈值()的所有物体标记为“运动中”。在熵阈值以下的每个值,我们假设无法观测到物体运动。因此,将物体标记为静止要求运动可观测(),并且动态差异的中位数小于变量阈值()。
虽然选择最佳的函数形式需要进一步研究,但本表达式满足要求,并在本文中显示了良好的结果(见第四节)。图3是由DOT传播的掩码示例。被标记为“运动中”的物体用彩色表示,而被标记为“静止”的物体则以黑色消失。以灰色表示的汽车是那些不能确定为静止或动态的汽车。
F. 掩码传播
为了将同一3D物体的不同帧之间的实例联系起来,DOT将由神经网络产生的掩码与通过多视图方程和计算的相机和物体姿态投影前一帧的像素而传播的掩码进行重叠。
状态传播:将新的语义实例与现有的物体联系起来,使我们能够预测它们的运动(对于快速移动的物体非常关键)。此外,在物体移动到无法观测到运动的位置的情况下,运动状态可以被维持(参见第III-C节)。
独立分割:我们的提议允许从初始种子开始在时间和空间上传播语义分割掩码,消除了对每帧进行分割的需求。在低端平台上以较低的频率运行神经网络可以实现实时物体跟踪。作为附加效益,DOT能够填补网络在连续图像之间暂时丧失对象实例化的空白。
4 Experimental results
基准设定:我们使用三种不同的配置来估计相机轨迹,这些配置使用ORB-SLAM2 [1]:
- 无遮罩:在未修改的图像上使用ORB-SLAM2的作者实现来运行。图像特征可以在整个图像中初始化(包括属于移动物体的区域)。
- DOT遮罩:除了图像外,ORB-SLAM2还接收包含当前正在运动的潜在动态物体的遮罩作为输入。我们修改了ORB-SLAM2的实现,以便在这些移动物体中不提取特征点。
- 所有遮罩:将分割网络获得的所有遮罩应用于ORB-SLAM2。因此,所有潜在动态物体都被移除,而不检查它们是否真的在移动。
序列子集:我们对KITTI视觉基准套件 [2] 中的三个子集进行了这些配置的评估。我们使用了Virtual KITTI [21], [22]中的数据,该数据集是由KITTI [2]的5个虚拟克隆序列组成的合成数据集,KITTI里程碑,一个专门设计用于开发和评估视觉里程计系统的预定义序列子集,以及KITTI原始部分中具有大量移动物体的序列的子集选择[23]。在Virtual KITTI中,我们使用RGB-D ORB-SLAM2,因为该数据集提供了合成深度图像。在其他设置中,我们使用了双目ORB-SLAM2。真实序列的地面实况由GPS定位系统提供。
评估指标:为了考虑到非确定性效应,我们对每个序列运行了每个配置10次,并报告中位数值。所有实验都在一台配备Intel Core i5处理器和8GB RAM内存的笔记本电脑上运行。绝对轨迹误差(ATE) [24] 是经过对齐两个轨迹后,估计位置相对于GPS地面实况的均方根误差(RMSE)。为了方便比较,误差的平均值通过每个序列上使用DOT获得的值进行归一化,即“”。表 I 中的右列显示了在三个配置中,ATE相对于每个序列中最佳ATE的归一化值。因此,1代表最佳结果,而值>1表示性能较差。颜色标度指示了相对位置在每个序列中最佳结果(绿色)和最差结果(红色)之间的归一化差异。
跟踪精度。根据表 I 中的ATE,在V-KITTI序列中,DOT的性能分别比无遮罩和所有遮罩配置提高了135.4%和21.6%。此外,在经评估的5个序列中,DOT对于3个序列得分最好。
在KITTI Odometry的11条轨迹中,DOT的精度分别比没有掩模和所有掩模分别提高了12.7%和30.3%。与V-KITTI相比,这组序列包含的动态元素较少,因此使用掩模甚至会有损害。根据数据集规格,由GPS收集到的地面真实相机姿态精度在10厘米以内。这被认为是移动物体数量较少以及图像纹理丰富的结果,这为估计相机运动提供了大量静态点。
序列和方法之间的差异在表 I 的最后一节中更加明显,KITTI Raw以大量移动物体为特色。总体而言,DOT相比没有掩模提高了142.3%的ATE,并相比所有掩模提高了15.9%。注意,在序列1003-0047中丢弃动态物体显著减少了跟踪误差。序列0926-0009、0929-0004和1003-0047被克隆以生成V-KITTI合成序列(1、18和20)。如预期所料,由于场景内容相同,结果的定性分析也是相同的。
表 I 中的色标证实,即使DOT不是最准确的(绿色),它仍然接近最佳解决方案。因此,虽然使用掩模可能很方便,但如果只移除实际上在运动的物体,则准确性会显著提高。这些结果表明DOT在静态和动态场景下始终具有良好的性能。
场景内容的自适应:图 6 描绘了可能影响SLAM准确性的两种情况。下排是低行动度的场景(V-KITTI 20),所有车辆都在运动,违反了ORB-SLAM2的刚性假设,导致系统失败。同样,VKITI 18中的移动物体导致ORB-SLAM2在10次试验中有6次跟踪失败(仅能估计轨迹的56%)。上排是一行停放了车辆的城市场景(V-KITTI 01)。与前一个案例相反,使用所有分割掩模的结果最差,因为删除了许多具有可靠信息的点以进行跟踪。此序列的ATE结果显示,从较大区域中提取点会得到更准确的估计轨迹。
图6. 内容适应。左:无遮罩。中:DOT遮罩。右:所有遮罩。顶部一行显示了一个静态场景,其中所有遮罩丢弃了静态物体中的所有点。 在底部一行中,无遮罩在移动物体上跟踪特征,这可能会导致失败。DOT成功地将停放的汽车识别为静态物体,将移动的汽车识别为动态物体。
此分析显示,虽然使用动态物体掩模是有益的,但如果不验证物体是否实际运动,将导致信息丢失,特别是在许多车辆的场景中。DOT通过估计物体的运动状态,在这两种对立情景之间取得了权衡,显著提高了鲁棒性和准确性。
环路闭合:ORB-SLAM2的环路闭合模块减少了由于动态物体或移除停放车辆而产生的漂移和不准确性。我们观察到,使用DOT掩模的ORB-SLAM2能在KITTI Odometry的第9个序列中的10次运行中有6个闭环,而所有掩模均未闭环。这解释了结果的一部分变异性,并显示出DOT的额外优势
分割错误:与其他方法相比,DOT减少了分割错误。神经网络有时会错误地将静态物体(例如交通标志或建筑物)标记为动态物体,但是DOT通过重新标记对象为静态物体来纠正这个错误(见图7)。 此外,当网络在序列帧中的某一帧中没有触发时,DOT能够通过传播对象遮罩来填补空白。
图7. 分割错误。所有遮罩和DOT遮罩之间的比较。 请注意,Detectron2的错误分割(红色方框中的标志被分配为汽车标签)被DOT正确地分类为静态物体。
遮罩传播:正如第III-F节所解释的那样,我们的方法通过在中间帧中传播先前存在的掩码,可以减少网络分割的频率。图8显示了在V-KITTI的每一帧上正确标记的像素减去错误标记的像素数(黑色是真实值),当DOT使用100%的Detectron2分割(红色),50%(蓝色),33%(黄色)和25%(绿色)时。请注意,在传播过程中,除了在跟踪失败或分割之间引入移动物体之外,掩码保持准确(请参见表II中在V-KITTI上的交叉并集)。这可以用来减少计算时间,这在高频图像流中尤为实用。
图8. 掩膜传播。在V-KITTI数据集中,基于分割网络的DOT在所有帧中的正确标记像素减去错误标记像素与参考标准 (黑色) 相比,以红色表示使用所有帧 (红色),50%的帧 (蓝色),33%的帧 (黄色) 和 25%的帧 (绿色)。
5 Conclusions
DOT是一种新颖的SLAM系统前端算法,通过结合实例分割和多视角几何方程,可稳健地检测和跟踪移动物体。我们在三个公共数据集上使用ORB-SLAM2进行评估,用于自动驾驶研究[2],[21],[22],结果表明,DOT生成的对象运动信息使我们能够分割动态内容,显著提高了稳健性和准确性。DOT与SLAM的独立性使其成为一种可适应任何最新视觉里程计或SLAM系统的多用途前端,只需进行最小的集成工作。与其他系统不同,DOT遮罩跟踪减少了分割的频率,降低了计算需求,相对于现有技术水平而言。