介绍
本文介绍 VSLAM 和 SfM 在动态环境下目前所有技术相关的综述。
回顾动态环境中的视觉定位和 3D 重建技术:
- 涵盖三个主要问题:
- 如何做好鲁棒 VSLAM
- 如何在 3D 中分割和跟踪动态物体
- 如何实现联合运动分割和重建
- 从两个角度来看:
- 作为一个鲁棒性问题:相机前的动态物体导致错误的对应关系(遮挡等),可以通过分割图像中静态和动态特征,将动态部分视为异常值来实现鲁棒性,只用静态部分计算姿态估计。
- 作为一个标准 VSLAM 在动态环境中的扩展:将跟踪的特征分割成不同的簇,可以重建每个物体结构(形状)并跟踪轨迹,甚至可以将动态物体插入静态地图中。
- 现有大致三种思路(分别对应三个主要问题):
- 排除动态特征来构建静态地图
- 提取动态物体而忽略静态背景
- 试图同时处理世界中静态和动态的组成成分
综述结构
- 鲁棒 VSLAM
- 运动分割
- 背景/前景初始化
- 几何约束
- 光流
- 自我运动约束
- 深度学习
- 定位与 3D 重建
- 基于特征
- 深度学习
- 运动分割
- 动态物体分割与 3D 跟踪
- 动态物体分割
- 统计模型选择
- 子空间聚类
- 几何
- 深度学习
- 动态物体的 3D 跟踪
- 轨迹三角测量
- 粒子滤波
- 动态物体分割
- 联合运动分割与重建
- 因子分解
- 多刚体运动结构(MBSfM)
- 非刚性运动结构(NRSfM)
- 因子分解
鲁棒 VSLAM
如果仅基于静态特征计算姿态估计,就可以在动态环境中实现 Robust VSLAM。
运动分割
将特征分为两个不同的组,即静态特征和动态特征,来检测图像中的动态部分。
标准的 VSLAM 使用 计算几何模型(基础/单应矩阵)、RANSAC、辛普森距离 等去除动态特征点。
- 如果静态特征占多数,效果会很好。
- 如果相机前的动态物体占据较大,效果不好,其他方法可以利用 IMU 估计相机的自我运动来解决。
背景/前景初始化
假设系统对环境有先验知识,可以利用该信息来分割。这种先验知识可以附加到背景或前景对象上。如果信息是关于前景对象的,则系统知道在相机前移动的对象的类型或形状。
几何约束
利用对极几何特性来分割静态和动态特征。动态特征违反静态场景中在多视图几何中定义的约束,可以从对极方程、三角测量、基础矩阵估计或重投影误差中推导出。
光流
光流定义了从两个连续图像计算得出的亮度模式的表观运动,对应于图像中的运动场,利用图割算法基于该运动度量来分割动态物体。还有 3D 版本的场景流。
自我运动约束
标准的 SfM 和 VSLAM 通过八点法或五点法来计算相机运动。另一种方法假设相机根据给定的外部信息(e.g. 车轮里程计信息)按照特定的参数化进行移动。通过这种强制自我运动约束,可以拟合与相机运动约束相匹配的特征点来对静态特征进行分类。
深度学习
从基于特征的运动分割中,上述可以利用光流来分割动态物体。所以可以通过监督学习来估计光流。
- FlowNetS:通过将两张连续图像堆叠作为 CNN 的输入
- FlowNetC:通过引入一个相关层来比较由两个相同 CNN 流得到的两个特征图
- FlowNet 2.0:将 FlowNetS 和 FlowNetC 堆叠成一个更深的网络,并添加一个新的并行网络来处理小位移
- 使用立体图像进行场景流估计的扩展,这种光流可以输入到一个更深的网络中以发现运动特征
- 在图像空间中明确分割动态物体,采用重建独立成分分析自编码器来学习时空特征。然而,由于时空特征无法学习运动的 3D 几何形状,因此仍然使用几何特征来帮助分割运动。几何和时空特征都被输入到 RNN 中,以进行最终的运动分割
- 通过回归给定的 RGB 图像和光流的目标性的粉来分割动态物体。构建两个类似 AlexNet 的并行 CNN,处理 RGB 图像和光流,然后输入到回归网络并生成运动
- R-FCN:从在线图像序列中分割前景运动时结合实践数据,FCN 用于学习空间特征并生成像素稠密预测,但在应用反卷积之前,使用 GRU 来建模时间特征。
定位与 3D 重建
从多张图像中估计相对相机姿态(平移和旋转)以及所观察环境的 3D 结构。
- 基于特征
- 基于深度学习
基于特征
在基于特征的 VSLAM 中,提取显著特征来解决图像对应问题。现有的特征提取技术:
- Harris
- SIFT
- SURF
- FAST
为找到对应关系,使用特征匹配。根据两个相机的光心之间的距离(基线/视差)分开的程度来划分。
- 基于短基线:可以用基于光流的技术进行匹配
- 对于长基线:需要有高度区分度的特征描述子,例如 SIFT、SURF、BRIEF、BRISK 等,通过计算这些描述子之间的不相似性来找到对应关系,当数据包含异常值时,需要使用 RANSAC、PROSAC、MLESAC 等排除异常值。
当图像对应关系已知,2-3 张图像之间的相对位姿可以恢复到一个比例因子。通过对极约束,
- 两个视图用八点法或五点法
- 三个视图用三交点张量
- 如果已经重建了场景的一些 3D 点,可以用 P3P
当相机位姿被恢复时,通过三角测量对两条投影射线进行相交,得到重建场景的 3D 点,但是由于错误的对应关系射线并不总是相交,可以用中点法或最小二乘法估计交点。为了避免漂移问题,用 BA 通过最小化重投影误差来同时相机位姿和 3D 点。另一种高斯-牛顿方法的变体 LM 优化。是联合优化场景结构和相机运动的主流方法。
实际上,有人采用局部 BA 优化最后几张图像,比如 ORB-SLAM 中就用到了。
基于深度学习
两种主流的方法:
- 有监督学习
监督学习通过最小化与真实姿态相比在预测自我运动时的误差来训练 CNN。在早期工作中,姿态估计被视为在相机平移和旋转的离散空间上的分类问题。但近期姿态估计技术都采用基于回归的 CNN。由于预测的连续性,回归比分类更准确。
在回归视觉里程计问题中,目标检测和分类的预训练卷机曾不适用,后续转向基于光流的网络以在不同的环境中泛化学习到的参数。
- Flowdometry:由两个连续的 CNN 组成,第一个用于预测光流,第二个估计相机运动
- 计算两个视图之间自我运动的端到端 CNN,堆叠两个具有具有权重共享的并行 CNN,随后是一个空间金字塔池化 SPP 层,以处理任意输入图像,同时在特征图中保持空间信息。回归层由两个全连接层组成,用于预测相机平移和旋转
- DeepVO:通过 RCNN,从图像序列中学习顺序运动动力学的端到端学习框架。在输出里程计方面效果较好。
- 无监督学习
在无监督的情况下,CNN 没有真实数据进行训练。相反,该网络通过最小化类似于 LSD-SLAM 的光度误差来学习预测相机位姿。
- 利用新颖视图合成原则(给定一个源图像合成具有不同位姿的目标图像的问题)。构建两个并行的 CNN 用于预测深度和估计相机位姿。来自源图像的预测深度用于在给定相机变换矩阵和源图像的情况下合成目标图像。通过最小化光度误差,共同训练深度和相机位姿。而不是从深度预测生成目标图像。
- 基于深度预测、相机运动以及卷积/反卷积网络产生的动态对象分割构建了一个 3D 场景流。场景流通过相机运动进行变换,然后反投影到当前帧以评估光度误差。
动态物体分割与 3D 跟踪
动态对象分割和 3D 跟踪将特征对应关系基于其运动聚类到不同组中,并在 3D 中跟踪它们的轨迹。
动态物体分割
动态物体分割将所有特征对应关系聚类为 n 个不同对象运动。另一个挑战是处理退化运动(当一个物体与相机运动在同一平面上且具有相同的方向和速度时)或相关运动(两个人一起移动,关节运动)。
统计模型选择
用 RANSAC 或蒙特卡罗采样迭代下对数据的子集进行采样,并将运动模型拟合到采样数据中。改运动模型用于构建内点集,并将剩余数据排除为该模型的异常值。然后,对剩余数据(前一个模型的异常值)在此进行采样,以找到并拟合最能描述剩余数据的另一个模型。
子空间聚类
许多高维数据可以用低维子空间的并集来表示。数据点的一个子空间可以由基向量和低维数据来表示。在子空间聚类框架下的 3D 运动分割问题基本上是找到与每个刚体运动相关联的每个单独子空间,并将数据拟合到这些子空间中。
几何
几何方法将多视图几何的标准公式从静态场景扩展到包含独立运动物体的动态场景。虽然有一个基本矩阵描述相机相对于静态场景的一般运动,但在动态环境中,将会有 n 个基本矩阵来描述 n 个物体的运动,其中包括一个用于静态特征。
- 通过引入多体三线性约束和多体三焦点张量,将多体运动恢复从两个视图扩展到三个视图。将静态场景中的三线性约束和三焦点张量推广到包含多个物体的动态场景。
深度学习
当前用于解决动态物体分割问题的 DNN 依赖于预定义数量的刚体运动。用于生成稠密对象掩码的网络及其相关损失函数可能源自 3D 点云数据或光流。
- SE3-Net:一种能够从 3D 点云中分割出预定义的 n 个动态对象的 DNN,在 SE(3) 变换中表示。
- SfM-Net:利用光流来分割动态对象。这是一个能够预测深度、相机运动和动态对象分割的具有几何感知能力的网络。
动态物体的 3D 跟踪
在 3D 中跟踪动态物体,需要知道动态物体在三维的坐标位置(包括深度信息)。
轨迹三角测量
标准三角测量,对动态物体并不起作用,因为从相应特征点反向投影的光线并不相交。
轨迹三角测量,作为一种当物体轨迹已知或满足一个参数形式时重建运动物体三维点的技术。
- 假设三维点沿着一条未知的三维直线移动。然后重建问题就会变成寻找一条与来自 t 个视图的投影光线相交的三维直线的问题。t 至少是 5。因为来自三个视图的相交直线集会形成一个二次曲面,使得来自第四个视图的光线在两个点相交,此时第五个视图会得出唯一解。
- 假设物体不是沿一条直线运动,而是在一个圆锥曲面上运动,则需要 9 个视图得到唯一解。如果圆锥类型已知,则只需要 7 个视图。
粒子滤波
由于可观测性问题(观测者与目标之间的距离无法被观测到),使用单目相机在三维中跟踪运动物体的问题可以被视为仅方位跟踪(BOT)问题。单目相机可以被视为一个仅方位跟踪传感器,因为它只能提供关于运动物体上被跟踪特征点的方位信息(例如,前一帧和当前帧中观测到的特征相对于相机中心的角度)。对于仅方位跟踪问题,基于滤波器的方法是更可取的,因为它可以对观测者和目标的位置和速度的不确定性进行建模,并且作为目标运动分析问题。
联合运动分割与重建
不是将多刚体运动分割和动态物体的三维结构重建作为单独且顺序的任务来执行,因式分解可以同时完成。给定特征对应关系,动态物体分割和重建会产生分割特征的运动以及它们的三维结构。
因式分解
因式分解是 SfM 最突出的技术之一,可以同时解决分割和重建问题。定理:在静态场景的短序列中,一个测量矩阵,即包含所有通过所有帧跟踪的特征点的矩阵,最多为四阶(如果在欧式空间使用正交投影模型则为三阶)。
多刚体运动结构(MBSfM)
将刚体相机运动的 SfM 推广到 n 个刚体运动。
非刚性运动结构(NRSfM)
基于因式分解在缩放正投影相机模型下的非刚性运动。
优点和缺点
运动分割
方法 | 优点 | 缺点 |
---|---|---|
背景/前景初始化 | 当移动对象暂时静止时能够跟踪它们,无需进行新的分割。还可以处理退化运动。 | 1. 与背景或物体相关的信息需要事先定义 2. 基于检测的跟踪方案可能会阻碍实时能力 |
几何约束 | 不需要关于背景或动态对象的先验知识。 | 1. 不具备处理暂时停止的能力 2. 无法区分由动态对象引起的剩余误差还是由错误对应(异常值)引起的,无法处理退化运动 |
光流 | 不需要关于环境的先验知识,可以实时。 | 1. 基于亮度恒定假设,对照明条件变化很敏感 2. 处理退化运动困难,当物体在停止后开始移动时需要新的分割 |
自我运动约束 | 通过拟合符合定义的自我运动的特征,轻松地将静态特征与动态特征分割开来,可以实时,能处理退化运动 | 需要相机运动的先验知识,当物体暂时静止时,被视为静态场景的一部分 |
动态物体分割
方法 | 优点 | 缺点 |
---|---|---|
统计模型选择 | 1. 只要系统允许计算低维或低自由度运动,就可以处理退化运动 2. 不需要关于环境的先验知识 3. 基于统计的方法根据内点集的基数来拟合模型,噪声和异常值会自动得到处理 |
从随机采样数据中拟合运动模型在计算上复杂度大。(RANSAC 的迭代次数太大) |
子空间聚类 | 时间复杂度低,主要基于代数方法 | 1. 不能顺序/实时运行 2. 需要场景中运动数量或子空间所在维度的信息 3. 大多数方法使用仿射相机模型,如果场景包含主要的透视效果,该模型会失败 4. 对长序列的实施很困难 |
几何 | 可以处理非线性流形中的数据 | 1. 仅支持基本矩阵作为运动模型,无法处理退化运动 2. 计算基本矩阵所需的图像相对于运动数量呈指数增长 |
动态物体 3D 跟踪
方法 | 优点 | 缺点 |
---|---|---|
轨迹三角测量 | 可以逐步进行工作,尽管每次迭代需要几帧,不需要相机运动的先验知识 | 1. 限制是物体轨迹应该已知,或应该遵循特定的参数形式(限制了轨迹三角测量在任意物体运动中的应用) 2. 处理异常和缺失数据困难,需要几个图像序列才能有唯一解 |
粒子滤波 | 能够进行动态物体的 3D 重建和跟踪且能实时工作(严格限于少量动态物体),不需要关于物体轨迹的知识 | 很难扩展到非刚性重建,不符合恒定速度运动模型 |
联合运动分割与重建
方法 | 优点 | 缺点 |
---|---|---|
因式分解 | 1. 运动分割和重建问题可以同时解决 2. 不需要关于相机运动的知识 3. 可以扩展到非刚性重建 |
1. 大多数方法基于正投影或仿射相机模型工作,阻止了它在具有大透视效果条件下的实现 2. 不能实时,因为所有特征点轨迹必须事先可用,其次大多数方法基于 SVD,复杂度过高 3. 可能需要先验知识(场景中动态对象的数量、测量矩阵的秩或物体的维度) 4. 对噪声和异常值敏感 5. 缺失数据也是一个问题 |
深度学习
优点 | 缺点 |
---|---|
1. 不需要手动特征提取,会使得特征对应问题的减少(噪声、异常值、跟踪丢失、遮挡导致的缺失数据) 2. 不需要指定相机模型 3. 学习数据非线性表示的能力提供了不同环境中良好泛化的机会,不需要针对不同环境手动微调算法参数的标准基于特征的方法 |
1. 动态物体分割和重建技术涉及几何计算,构建一个能理解这种几何并与标准基于特征的技术相比效果更好的 DNN 架构更难 2. 提取的时空特征不精确,并且不理解动态对象的几何形状 |
Reference
本文作者:jujimeizuo
本文地址: https://blog.jujimeizuo.cn/2024/05/27/Visual-SLAM-and-SfM-in-Dynamic-Environments-A-Survey/
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0 协议。转载请注明出处!