DynaSLAM II: Tightly-Coupled Multi-Object Tracking and SLAM
论文笔记
参考文章
知乎 https://zhuanlan.zhihu.com/p/383657160
CSDN https://blog.csdn.net/catpico/article/details/119954707
动态SLAM:现有三种方案思路:
- 检测动态的区域,然后在SLAM环节去除
- 在定位之外的环节,把包含动态内容的图片转换成静态内容的图片(DynaSLAM I中去除动态目标并修复背景)
- 一个小的却在发展的思路:把动态物体也放进问题里,不仅要去解决SLAM的问题,还要为动态物体的位姿提供信息。
本文选用思路3,大多数实现思路3的方式是使用传统的多目标跟踪算法来检测运动目标,并与SLAM自身位姿分开追踪,系统精度依赖相机姿态估计。
DynaSLAM II贡献如下:
a) 一种由高级的2D实例匹配算法——动态对象特征匹配方法。
b) 一种将相机、特征点和动态对象一起BA的新方案。
c) 边界框的解耦优化,以找出同一类对象之间的公共引用。
d) 我们的实验表明,相机运动估计和多目标跟踪是互利的。
方法
基于ORB-SLAM2的系统。输入是经过时间同步的双目或RGB-D图片,输出是每一帧中相机和动态物体的位姿,以及一个包括动态物体的空间/时间地图,采用语义和实例信息作为先验。思路如下:
- 对于每一帧,都会对它进行像素级别的分割,这一帧图像的ORB特征的提取和匹配通过双目图像对(stereo image pairs)完成。
- 将当前帧的静态和动态特征与前一帧&地图里的两类特征关联起来,这里假设摄像机和被观测物体都是匀速运动。
- 然后根据动态特征的对应关系来匹配物体实例。静态匹配被用来估计摄像机的初始姿态,动态匹配则用来计算移动物体的SE(3)变换。
- 最后,相机和物体的运动轨迹,以及物体的包围框(bounding box)和三维点通过有边缘化的滑动窗口和一个soft smooth motion prior进行优化.
A.Notation(标记)
环境中存在两类动态物体:
(1)Priori dynamic or movable objects(先验动态或可移动物体)。本身具有移动能力的物体(人、动物和车辆)。当 SLAM 传感器观测它们的时候,它们既可以移动也可以保持静止。
(2)Moving objects(移动物体)。由移动的物体组成,由视觉 SLAM 传感器观察到它们,而不管它们的语义类如何。
B.Object Data Association (物体数据关联)
对于每个输入帧,都遵循以下步骤:
Step 1:进行像素级的语义分割,提取 ORB 特征,并对双目图像组进行特征匹配。假设动态特征是那些属于先验动态实例的特征,而不管它们的运动如何。
Step 2:将静态特征与前一帧的特征联系起来,以初始估计相机的姿势(ORB-SLAM)。
Step 3:利用 KM 算法建立连续帧之间并行的实例对实例匹配,以 2D 检测框的交并比作为代价。
Step 4:动态特征与局部地图中的动态点以两种不同的方式相关联:a) 如果地图目标的速度已知,通过假设帧间匀速运动的重投影来搜索匹配项,实例匹配结果用于发现异常值;b) 若目标速度未初始化或不满足 a) 中条件,则对连续帧中具有最重叠区域的实例进行暴力匹配。
Step 5:需要实例与物体之间更高等级的关联。如果大多数新实例关键点与属于一个相同地图物体的点匹配,则该实例具有相同的物体跟踪 id。
Step 6:如果一个与先验动态类对应的实例包含超过 7 个未观察到的关键点,其立体三维投影接近摄像机(不到双目基线的55倍),则将创建一个新的对象实例。然后将关键点分配给相应的物体。
C. Object-Centric Representation(以物体为中心的表示法)
D. Bundle Adjustment with Objects(有物体参数的 BA)
存在动态物体的 BA 因子图表示。(方形的因子节点包含了待优化变量直接的关系,来自运动方程和观测方程。圆形的变量节点是 SLAM 系统中待优化的部分。)
插入关键帧到地图的两个条件:
- 相机的tracking很弱(原因和ORB-SLAM2中一样)
- 对于任意场景object的追踪都很弱。比如说,一个有大量特征点的object只在当前帧追踪到了很少的点,这种情况下,关键帧会被插入地图,会创建一个新object,和新的object points。
E. Bounding Boxes(边界框)
作者提出解耦动态物体的轨迹和边界框估计。前者为系统跟踪提供了丰富的自运动估计线索,二者的结合有助于理解动态物体周围的环境信息。数据关联和 BA 阶段的输出包含相机位姿,静态场景结构、动态物体,及每一个物体上一个点的 6 DOF 轨迹。这一个点是物体第一次被观察到时的 3D 点的质心。即使质心随时间的推移随着新的观察点的加入而改变,物体的位姿以第一个质心为参考进行跟踪和优化。要充分了解移动环境,知道物体尺寸和空间占用率非常重要。独立地解决这两个问题允许从第一帧开始跟踪动态物体,在该帧中它们独立于相机-物体视点出现。
作者通过搜索两个大致适合大多数对象点的垂直平面来初始化一个对象边界框。假设许多人造物体可以近似地适合一个 3D 边界框。在只找到一个平面的情况下,作者在与物体类相关的不可观察方向的粗略维度上添加一个先验。该过程通过 RANSAC 算法完成:作者选择计算出的 3D 边界框在图像上的投影与 CNN 2D 边界框具有最大的 IOU。这个边界框为每个跟踪物体计算一次。
为了细化边界框尺寸及其相对于物体跟踪参考系的姿态,可以在一个时间窗口内进行基于图像的优化。该优化旨在最小化 3D 边界框的投影与 CNN 2D 边界框预测之间的距离。仅当物体具有至少 3 个观察关键帧时才会执行此操作。