DOT:视觉SLAM的动态目标跟踪
摘要 - 在本文中,我们提出了DOT(动态目标跟踪),这是一个添加到现有SLAM系统中的前端,可以显着提高其在高动态环境中的鲁棒性和准确性。DOT结合实例分割和多视图几何来生成动态对象的掩模,以允许基于刚性场景模型的SLAM系统在优化时避免此类图像区域。
为了确定哪些对象实际上在移动,DOT首先分割潜在动态对象的实例,然后,随着估计的相机运动,通过最小化照片度量重投影误差来跟踪这些对象。相对于其他方法,这种短期跟踪提高了分割的准确率。最后,只生成实际的动态蒙版。我们使用ORB-SLAM 2[1]在三个公共数据集中评估DOT。我们的研究结果表明,我们的方法显著提高了ORB-SLAM 2的精度和鲁棒性,特别是在高动态场景中。
1.引言
同时定位与制图(Simultaneous Localization and Mapping,简称SLAM)是机器人平台自主导航的基本能力之一[4]。它的目标是根据嵌入式传感器的信息,对机器人的运动和周围环境的地图进行联合估计。视觉SLAM,其传感器主要或完全是摄像头,是最具挑战性的相关配置之一。
尽管SLAM在过去二十年中取得了重大进展,但大多数最先进的系统仍然假设静态环境,其中场景点之间的相对位置不会改变,唯一的运动是由相机完成的。基于这一假设,SLAM模型将视觉变化完全归因于相机的相对运动。一种常用的方法[5],[1]是将动态区域建模为离群值,在姿态跟踪和地图估计过程中忽略它们。然而这几个方法直到这些动态区域作为离群值被丢弃,它们的数据才会被用于SLAM优化,从而在地图和相机姿态的估计中引入误差和不一致。此外,对于基于特征的SLAM方法,跟踪少量显著图像点,相对少量的动态区域匹配产生的误差是相关的,并可能导致系统故障。机器人或AR系统必须运行的世界和实际应用远不是静态的。我们可以以汽车或无人机的自主导航、拥挤场景中的AR甚至行星探索任务为例,在这些任务中,糟糕的纹理使SLAM系统在阴影或其他机器人的存在下变得不稳定。因此,对于许多应用程序来说,开发足够健壮的SLAM系统以在高动态环境中运行是必不可少的。
如图1所示,这项工作旨在开发一种图像处理策略,以提高视觉SLAM系统在动态环境中的鲁棒性。我们的具体贡献是动态对象跟踪(DOT)的开发,这是一个前端,它结合了实例分割和多视图几何来跟踪相机运动,以及动态对象的运动,使用直接方法[6]。预处理的结果是一个包含每个图像的动态部分的掩模,SLAM系统可以使用它来避免在这些区域产生匹配。
我们在三个不同的公共数据集上的实验结果表明,我们的语义分割和几何引导跟踪的组合在动态场景中表现优于目前的技术水平。我们还发现DOT作为一个独立的前端模块实现,因此易于插入现有的SLAM系统。由于DOT包含短期掩码跟踪,我们避免了序列中所有帧的分割,大大节省了计算量。最后,尽管我们针对汽车导航的特定领域调整和评估了DOT,但我们的策略对其他应用程序也是有效的。
2.相关工作
动态环境中的SLAM是一个开放的研究问题,有大量的科学参考文献。我们将把不同的方法分为三大类。
第一类,也是最普遍的一类,将场景建模为一组非刚性部件,因此包括可变形和动态对象[7][8][9]。虽然这条研究路线是最普遍的,但也是最具挑战性的。在本文中,我们将假设对象内刚性,这是其他两类动态视觉SLAM的前提。
第二类旨在通过仅重建场景的静态部分来提高视觉SLAM的准确性和鲁棒性。在相机姿态跟踪和地图估计中,动态目标被分割出来并被忽略。沿着这条路线,建立在ORB-SLAM2[1]之上的DynaSLAM[10]旨在估计场景静态部分的地图,并在长期应用中重用它。通过结合1)潜在移动对象的语义分割和2)检测刚性模型中不一致性的多视图几何来去除动态对象。掩码R-CNN[11]用于语义分割,它检测场景中的物体并将其分类为不同的类别,其中一些类别已被预先设置为潜在动态(例如,汽车或人)。DynaSLAM被设计用来掩盖场景中所有潜在的移动物体,如[10]所示,在包含潜在移动物体但实际上没有移动的场景中(例如,有许多停放的汽车的场景),其精度低于原始ORB-SLAM2。这项工作的目的正是为了克服这个问题,因为只有那些在那个精确时刻运动的物体才会被标记为动态的。另一项具有类似方法的工作是StaticFusion[12],这是一个密集的RGB-D视觉SLAM系统,其中通过使用场景背景的3D重建作为传播场景静态部分的时间信息的一种方式来执行分割。
最后,动态视觉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或里程计系统使用。
第一个块(实例分割)对应于按像素分割出所有潜在动态对象的CNN。在我们使用自动驾驶数据集完成的实验中,只有汽车被分割为潜在的移动。稍后会详细说明,因为DOT从一帧到另一帧跟踪蒙版,所以这个操作不需要在每一帧都做。
图像处理块提取并分离属于图像静态区域的点和位于动态对象中的点。相机的位姿只使用场景的静态部分进行跟踪,从这个块中,考虑到相机位姿,每个分割对象的运动被独立估计(对象跟踪)。
下一个块(物体在运动吗?)使用几何方法确定被网络标记为潜在动态的物体是否确实在运动。此信息用于更新编码每个帧的静态和动态区域的掩码,并反馈给的里程计/SLAM视觉系统。
最后,DOT从物体运动的估计中生成新的掩码(掩码传播),因此不是每个帧都需要由网络分割(见图3)。鉴于实例分割的显著降低计算负载,与其他最先进的方法相比,这可能是DOT的一个相关优势。
B.实例分割
我们使用带有Mask R-CNN R50-FPN 3x[17]的COCO实例分割基线模型[18],该模型由Detectron2[3]训练,用于分割图像中存在的所有潜在可移动实例。对网络的输出进行了修改,以在单个图像中获得所有的分割掩码。未被划分为潜在移动类别的图像区域被赋予背景标签,并在随后的块中被视为静态。这些类别仅限于那些被认为是刚性对象和潜在的可移动对象,因此将人类排除在跟踪之外。如果需要其他类别,网络可以使用这些权重作为起点进行微调,或者使用自己的数据集从头开始训练。
为了在多个帧中一致地跟踪对象,我们在DOT计算的掩码和由net提供的掩码之间包含了一个匹配步骤。不匹配任何现有对象的新检测用于初始化新实例。
C.相机和目标跟踪
从前一步的实例分割中,我们的目标是估计相机和动态物体的运动。由于相机的运动和物体的运动在图像中是耦合的,所以我们采用两步的方法进行估计。首先,我们找到相机的姿态作为一个相对变换
T
c
∈
S
E
(
3
)
T_c\in SE(3)
Tc∈SE(3),然后我们利用它来估计物体的运动到
T
o
∈
S
E
(
3
)
T_o\in SE(3)
To∈SE(3)。我们的优化与最近的直接视觉里程计和SLAM方法有关[6],其目的是找到最小化光度重投影误差的运动。
优化。我们对相机姿态和随后的物体运动估计都使用高斯-牛顿方法
这里
J
∈
R
n
×
6
J\in \mathbb R^{n \times6}
J∈Rn×6包含残差函数的导数(式(3)和式(5)),
∑
r
∈
R
n
×
n
\sum_r \in\mathbb R^{n \times n}
∑r∈Rn×n是包含光度残差
r
∈
R
n
r \in \mathbb R^n
r∈Rn的协方差的对角矩阵。李代数的位姿增量
x
^
s
e
3
∈
s
e
3
\hat x_{se3}\in se3
x^se3∈se3,
⋅
^
s
e
3
\hat {\cdot}_{se3}
⋅^se3是向量到切空间的矩阵表示的映射算子[19],被表示为向量
x
∈
R
6
x\in \mathbb R^6
x∈R6。我们使用左矩阵乘法和指数映射算子exp(·)来更新变换。这两种算法都是用一个恒定的速度模型和一个多尺度金字塔图像来初始化,以帮助收敛。
相机跟踪。假设相机校准和点深度已知,使用来自静态场景区域P的高梯度像素的稀疏子集和多视图约束[20]来估计相机运动。静态点
p
∈
P
p\in P
p∈P从参考帧
F
j
F_j
Fj中的像素坐标
p
j
p^j
pj到帧
F
i
F_i
Fi的匹配坐标
p
i
p^i
pi的投影如下:
这里
π
\pi
π和
π
−
1
\pi^{-1}
π−1对应于透视投影和反向投影模型,
z
j
z_j
zj为该点在参照系
F
j
F_j
Fj中的深度。通过最小化光度重投影误差来优化相机位姿:
它被计算为参考帧中所有点之间的强度差和它们在被跟踪帧中的投影。我们用Huber范数γ。
目标跟踪。一旦估计了
T
c
T_c
Tc,就可以使用属于该对象的图像高梯度像素
Q
o
Qo
Qo的子集来类似地估计每个潜在动态对象的位姿。将潜在的动态对象建模为具有姿态
T
o
T_o
To的实体,帧
F
j
F_j
Fj中的每个点
p
~
\tilde p
p~到帧
F
i
F_i
Fi中的坐标的投影为
与公式3类似,我们通过最小化以下光度重投影误差来估计
T
o
T_o
To
D.追踪质量、异常值和遮挡
遮挡、光照条件的变化和分割误差对物体和相机姿态的精度有显著影响。正如在算法1中所看到的,我们开发了几个策略,我们在目标跟踪步骤之后应用这些策略来减少它们的影响。
跟踪质量。动态目标的外观变化很大,增加了跟踪误差。我们使用Pearson相关系数
φ
o
∈
[
−
1
,
1
]
φ_o\in [-1,1]
φo∈[−1,1]来建模外观相似性。该度量反映了参考强度与其相应估计值之间的线性相关程度,因此对增益和偏移变化是不变的。请注意,这也可以应用于相机跟踪
φ
c
φ_c
φc,尽管背景外观的变化通常不太明显。
离群值拒绝。通常,使用光度误差的绝对阈值来拒绝异常值。更复杂的作品[6]根据中值残余,运动模糊或照明变化来调整它。如图4所示,我们建议相对于强度之间的线性关系设置一个阈值,使误差与图像的光度变化无关。
遮挡。动态对象可能相互遮挡。去除遮挡部分作为异常值在我们的研究中是不够的。我们实施了一种策略,包括从最近到最远跟踪物体,依次更新它们各自的掩模。通过这种方式,我们在每次迭代中更新被较近物体遮挡的较远物体的点。
E.目标在运动吗?
该块接收相机
T
c
T_c
Tc和物体
T
o
T_o
To的变换矩阵作为输入,并估计物体是否在移动。SLAM或里程计系统使用的输出是掩模,用于存储动态物体所占用的图像区域以及它们是否处于运动状态。掩模是通过使用前一步估计的
T
c
T_c
Tc和
T
o
T_o
To将每个对象的像素投影到新帧中来获得的。
在图中直接观察物体运动,由于图像噪声的传播,很难建立确定物体是否运动的绝对阈值。在这项工作中,我们选择使用二维图像测量来观察物体的运动。我们将度量表示为动态视差,即点的投影(如果它是静态
p
i
p^i
pi)与其实际投影
p
~
i
\tilde p^i
p~i之间的距离(以像素为单位)。对于每个对象,我们计算这个点
p
~
∈
Q
\tilde p \in Q
p~∈Q的动态差异中值
d
d
=
m
e
d
∣
∣
p
i
,
p
~
i
,
∀
p
~
∈
Q
d_ d=med{||p^i,\tilde p^i,\forall \tilde p \in Q}
dd=med∣∣pi,p~i,∀p~∈Q,一个点的三维运动产生不同的图像运动,这取决于1)它的图像坐标,2)它的深度,以及3)物体方向与相机运动之间的相对角度。从非线性位姿优化(见式(1))中,我们可以推导出物体运动估计中的不确定性
∑
x
=
(
J
T
∑
r
−
1
J
)
−
1
\sum_x=(J^T \sum^{-1}_rJ)^{-1}
∑x=(JT∑r−1J)−1。假设一个k维高斯分布,它的微分熵为
H
(
x
o
)
=
1
2
l
o
g
(
(
2
π
e
)
k
∣
∑
x
o
∣
)
H_(xo) = \frac{1}{2}log((2\pi e)^k|\sum_{}xo|)
H(xo)=21log((2πe)k∣∑xo∣)。
微分熵可以看作是由光度残差最小化得到的位姿不确定性。换句话说,高熵的运动观测会导致图像像素的大偏移(如图5所示)。相反,低熵的观测会产生较小的图像差。
基于此,物体运动分类算法的工作原理如下:我们将动态差异与随熵平滑增长的可变阈值
Δ
d
=
f
(
H
(
x
)
)
\Delta d= f(H(x))
Δd=f(H(x))进行比较。我们将动态视差超过这个阈值
(
d
d
>
d
)
(d_d> d)
(dd>d)的所有物体标记为运动中。对于每个低于熵阈值
H
m
i
n
H_{min}
Hmin的值,我们假设无法观察到物体的运动。因此,将物体标记为静态需要运动是可观察到的
(
H
(
x
)
>
H
m
i
n
)
(H(x) >H_{min})
(H(x)>Hmin),并且动态视差的中位数小于可变阈值
(
d
d
<
Δ
d
)
(d_d<\Delta d)
(dd<Δd)。
虽然选择最优的功能配方还需进一步研究,但该表达式符合要求,并在本工作中显示出良好的效果(见第四节)。图3是DOT传播掩模的示例。标记为运动的对象以彩色表示,而标记为静态的对象则以黑色消失。用灰色表示的汽车既不能确定是静态的,也不能确定是动态的。
F.掩膜传播
为了将同一3D物体的不同帧的实例关联起来,DOT将神经网络产生的掩码与通过多视图方程和计算的相机和物体姿态投影前一帧的像素传播的掩码重叠。
状态传播。将新的语义实例与先前存在的对象联系起来,使我们能够预测它们的运动(这对于快速移动的对象至关重要)。此外,在物体移动到运动不可观测位置的情况下,运动状态可以保持(见第III-C节)。
独立的细分。我们的建议允许从初始种子开始随着时间和空间传播语义分割掩码,从而消除了对每帧进行分割的需要。在较低频率下运行神经网络有助于在低端平台上实时跟踪目标。作为一个额外的好处,DOT能够填补网络在连续图像之间暂时失去对象实例化的空白。
4.实验结果
5.结论
DOT算法是一种基于实例分割和多视图几何方程的SLAM系统前端算法,能够对运动目标进行鲁棒检测和跟踪。我们在三个用于自动驾驶研究的公共数据集中使用ORB-SLAM2进行了评估[2],[21],[22],结果表明,dot生成的物体运动信息使我们能够对动态内容进行分割,显著提高了其鲁棒性和准确性。
DOT与SLAM的独立性使其成为一个通用的前端,可以通过最小的集成工作适应任何最先进的视觉里程计或SLAM系统。与其他系统不同,DOT掩码跟踪降低了分割的速率,减少了相对于最新技术的计算需求。