中华视窗是诚信为本,市场在变,我们的诚信永远不变...
本期我们将回顾领域中的一些最新论文。
常规的SLAM算法首先假设环境中所有物体均处于静止的状态。而一些能够在动态环境中运行的SLAM系统,只是将环境中的动态物体视为异常值并将他们从环境中剔除,再使用常规的SLAM算法进行处理。这严重影响SLAM在自动驾驶中的应用。
通过两种方式对常规SLAM进行扩展。其一,具有对象感知功能,不仅可以检测跟踪关键点,还可以检测跟踪具有语义含义的对象。其次,它可以处理带有动态对象的场景并跟踪对象运动。
但小伙伴要注意一点,并非所有OSLAM都是动态的,也不是所有动态SLAM系统都需要对象感知。SLAM ++ (CVPR 2013)完成了OSLAM的开创性工作, 但仍然需要一定的静态场景。一些动态SLAM系统通过假设刚体以及速度恒定,来约束和改善姿态估计结果,但其中并没有明确的对象概念。
动态对象SLAM的元素
DOS系统引入了对象的概念,这个概念具有以下几个内容。首先,需要从单个图像帧中提取对象,就相当于常规SLAM系统中的关键点(例如ORB-SLAM中的ORB特征点)提取阶段。该阶段将给出2D或3D对象检测结果。现阶段单目3D对象检测取得了很大进展。其次,它的数据关联性更加复杂。静态SLAM只关心图像中的关键点,因此静态SLAM的数据关联只是关键帧特征向量的匹配。对于动态SLAM我们必须对帧中的关键点和对象之间执行数据关联。第三,作为传统SLAM中的拓展,我们必须为这个处理过程添加跟踪对象()和动态关键点,其次还可以利用运动模型中的速度约束。
我们制作了以下图表来表示DOS的三个过程。绿色方框代表数据关联过程,蓝色方框代表BA过程,红色方块是BA调整的因子图。
典型动态对象SLAM的处理过程
为什么需要对象检测?
考虑到这三个基本过程,我们可以提出一个问题:为什么在SLAM中引入动态对象?首先,假定对象是具有固定形状和大小的刚体。其次假定这些对象在物理上具有简单且符合要求的运动模型,该模型最好可以随时间推移进行一定的调整。因此,可以通过少量参数来描述对象大小和姿态变化。另一方面,对象的引入可以为BA调整阶段提供更多的约束条件。这将提高SLAM系统的鲁棒性。
接下来我们将介绍近些年来较为优秀的论文,我们将介绍篇论文中上述的的三个基本过程。
:单目3D对象SLAM(TRO 2019)
这篇文章可以说是DOS中最全面的了。的主要贡献之一就是巧妙地将长方体的大小和位置集成到因子图优化中,并使用运动模型来限制长方体的可能运动,优化了物体的速度。在这种情况下,3D对象检测和SLAM可以相互促进。对象为BA和深度初始化提供了几何约束。除此之外它还增加了泛化功能,使orb slam可以在低纹理环境中工作。结果通过BA优化,并通过运动模型进行约束。
对象提取
这篇文章将2D对象检测和初级图像特征点用于3D长方体的检测和评分。看似简单的方法对椅子和汽车的检测都具有非常好的效果。但是基于深度学习的方法可以得到更加精确的结果。
长方体对象的生成和评分
数据关联
如概述中所述,这篇文章在多个级别上执行数据关联,包括点-点、点-对象和对象-对象。
对象感知以及BA
静态关键点与摄像机位姿一起进行优化,与ORB-SLAM一样会存在摄像机点错误或重投影错误等问题。从每个帧中获得对象最佳的3D位姿后,我们可以将其视为9DoF的3D“测量”,并确定BA问题。对于静态对象,会存在以下几种误差。
我们要注意到,这种2D-3D一致的假设并不总是正确。但在大多数情况下,对于自动驾驶中车载摄像头的典型情况(水平或略微向下看)来说,这种假设可以成立。
对于动态对象,假定动态对象是遵循一定运动模型的刚体。这引入了两个附加的误差。
因子图(绿色方块是与动态对象相关的误差)
效果
有一些效果相当不错的案例,比如对于KITTI动态场景中的某些形状大小不变是3D物体进行检测和跟踪。然而,SLAM的结果可能并不总是最优,因为使采用分段恒定运动假设,也可以在一定范围内估计动态物体的速度曲线。要注意我们在计算里程表(相机姿势)时会考虑对象约束。
通过SLAM进行3D对象检测、轨迹跟踪以及速度估计
S3DOT:用于自动驾驶的基于立体视觉的语义3D对象和自我运动跟踪(ECCV 2018)
这篇文章的研究虽然是基于立体声视频流的,但该框架可以扩展到单目SLAM中。这篇文章的主要贡献是展示了利用视频提取和跟踪3D对象,而这些对象在单个图像上很难检测到。
S3DOT预测极端截断的汽车姿态、预测一致的轨道并估计被跟踪汽车的速度
对象提取
这种对象提取方式的灵感来自。它利用物体检测得到的2D边界框和8个视点进行分类。它使用边界框形状尺寸来推断物体距离。这种方法非常通用,可以在单目环境中使用。
2D框+视点= 3D边界框
数据关联
对象感知以及BA
对象轮廓之外的关键点被视为静态关键点。静态关键点空间位置和摄像机位姿求解同ORB-SLAM一样,通过优化解决。获得相机位姿(或运动)后,便可以解决了对象位姿问题。动态对象BA具有以下四个误差项。
效果
S3DOT同样也有不错的效果,该结果可以在KITTI的动态场景中检测和跟踪3D对象。但是我们要注意,这里在计算相机姿势时不会考虑对象约束。
:对移动实例进行聚类并估算自身和周围环境的视觉里程计(CVPR 2020)
通过将对象表示为跟踪的关键点(或本文中的地标)的群集,提出了一种更通用的动态SLAM算法。
的总体流程
对象提取
使用作为2D对象检测器,为每个帧中的对象提出语义2D边界框。它不对描述对象进行假定。因此,相较于上述两篇文章没有长方体的产生阶段。
数据关联
数据关联方法相当复杂,由两大步骤组成。其一是多级概率关联,即将观察到的关键点与跟踪的地标相关联,并将边界框与跟踪的聚类相关联。其二是异构CRF,该CRF将跟踪的地标与跟踪的聚类相关联。
对象感知以及BA
在概率数据关联之后,我们可以为静态场景和动态聚类制定BA。这里使用专门设计的双轨滑动窗口来管理关键帧。
效果
是一种更通用的DOS方法。从KITTI动态场景的结果来看,用长方体近似得到的的结果质量不如。对于自动驾驶,和S3DOT似乎更实用。我们还要注意,优化里程计(相机位姿)时会考虑对象约束。
:用于动态环境的多对象单目SLAM(IV 2020)
“多体单目SLAM”的概念似乎来自“ 多体SfM ”,但其本质上与动态对象SLAM具有相同的含义。
对象提取
使用了非常复杂但准确的3D对象提取过程。使用形状先验和关键点将2D检测提升为3D形状。首先检测车辆可区分特征上的36个有序关键点,并检测一系列基本形状的变形系数。然后,通过最小化重投影误差将2D检测提升为3D,以获得6个DoF姿态和形状参数。这种方法与RoI -10D(CVPR 2019)非常相似。
从2D关键点到3D形状
数据关联
对象感知以及BA
相机-对象姿态图和循环一致性
使用了不同的优化公式。如上所述,没有指定每个误差项并使它们最小化,而是对位姿图中创建的每个循环强制执行一致性处理。但从本质上讲,这应等效于平方误差的最小化。
的公制里程估算
我觉得周期一致性存在人为的影响,尤其是车辆边缘。添加一个错误项以优化IPM并提升2D到3D之间的距离估计一致性会更加直接。
效果
在固定单目度量标准的情况效果较好。这里在计算测距(相机姿势)时不会考虑对象约束。
总结