视觉SLAMMonoRec: Semi-Supervised Dense Reconstruction in Dynamic Environments from a Single Moving C

Posted 振华OPPO

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了视觉SLAMMonoRec: Semi-Supervised Dense Reconstruction in Dynamic Environments from a Single Moving C相关的知识,希望对你有一定的参考价值。

Citations: F. Wimbauer, N. Yang, L. von Stumberg,et al.MonoRec: Semi-Supervised Dense Reconstruction in Dynamic Environments from a Single Moving Camera[C].2021 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR).Nashville,TN,USA.2021:6108-6118.

Keywords: Training,Costs,Three-dimensional displays,Volume measurement,Robot vision systems,Prediction methods,Lead

本文提出了一种半监督的单目稠密重建架构MonoRec,可以从单个单目相机中估计精确的3D稠密地图重建。用SSIM作为光度测量来构建成本体积,针对动态对象提出新的MaskModule,输入成本量预测对象掩码。通过预测的掩码,所提出的深度模块能够估计静态和动态对象的准确深度。还提出了一种新的多阶段训练方案以及用于训练深度预测的半监督损失公式。KITTI上在定性和定量上优于最先进的单目深度预测方法。

论文目录

摘要

在本文中,我们提出了MonoRec,这是一种半监督的单目稠密重建架构,可以预测动态环境中单个移动相机的深度图。MonoRec基于多视图立体声设置,该设置对成本卷中多个连续图像的信息进行编码。为了处理场景中的动态对象,我们引入了一个 MaskModule,它通过利用成本体积中编码的光度不一致来预测移动对象遮罩。与其他多视图立体方法不同,MonoRec能够通过利用预测的掩码来重建静态和移动对象。此外,我们提出了一种新颖的多阶段训练方案,该方案具有不需要LiDAR深度值的半监督损失公式。我们在KITTI数据集上仔细评估了MonoRec,并表明与多视图和单视图方法相比,它实现了最先进的性能。通过在KITTI上训练的模型,我们进一步证明了MonoRec能够很好地推广到牛津机器人汽车数据集和手持相机记录的更具挑战性的TUM-Mono数据集。代码和相关材料可在 https://vision.in.tum.de/research/monorec 获得。

一、介绍

1.1. 从视频中捕获真实世界的场景

获得对整个静态和动态环境的3D理解可以被视为机器人、AR/VR和自动驾驶的关键挑战之一。目前,这是基于多个传感器源(包括摄像头、激光雷达、雷达和 IMU)的融合实现的。这保证了车辆周围环境的密集覆盖和准确的自我运动估计。然而,由于成本高以及维持这种复杂传感器套件交叉校准的挑战,减少传感器总数的需求不断增加。因此,在过去的几年里,研究人员投入了大量精力来解决仅使用单个单目相机的感知问题。考虑到最近在单眼视觉里程计(VO)[8],[58],[51]方面的成就,在自我运动估计方面,这肯定是成功的。 尽管如此,静态环境和移动物体的可靠稠密3D建图仍然是一个开放的研究课题。

图1: MonoRec可以从单个移动摄像机提供高质量的密集重建。该图显示了通过简单地积累预测深度图进行大规模室外点云重建(KITTI 测程序列 07)的示例。请参考我们的项目页面,了解整个序列重建的视频。

为了解决基于单个移动相机的密集3D重建问题,基本上有两条平行的研究路线。一方面,有密集的多视图立体(MVS)方法,这些方法在过去十年中发展[39],[45],[2],并通过使用卷积神经网络(CNN)[23],[61],[57]看到了很大的改进。另一方面,有纯粹依赖于深度学习的单目深度预测方法[7],[16],[58]。尽管所有这些方法都显示出令人印象深刻的性能,但这两种方法也有各自的缺点。对于MVS,总体假设是要重建的静止环境,因此动态对象的存在会降低其性能。相比之下,单目深度预测方法在重建移动物体方面表现非常好,因为预测仅基于单个图像进行。同时,由于它们仅使用单个图像,因此它们强烈依赖于使用特定相机内在和外在观察到的物体的透视外观,因此不能很好地推广到其他数据集。

1.2. 贡献

为了结合深度MVS和单目深度预测的优势,我们提出了MonoRec,一种由MaskModule和DepthModule组成的新型单眼密集重建结构。我们使用基于结构相似性指数度量(SSIM)[54]构建的成本体积对来自多个连续图像的信息进行编码,而不是像先前的工作那样绝对差异总和(SAD)。遮罩模块能够识别移动像素并降低成本体积中相应体素的权重。因此,与其他MVS方法相比,MonoRec不会受到移动物体上的伪影的影响,因此可以对静态和动态物体进行深度估计。

通过提出的多阶段训练方案,与KITTI数据集上的其他MVS和单目深度预测方法相比,MonoRec实现了最先进的性能[14]。此外,我们在牛津机器人汽车数据集[35]和TUM-Mono数据集[9]上验证了我们网络的泛化能力。图1显示了我们的方法在KITTI的一个测试序列上重建的密集点云。

二、相关工作

2.1. 多视图立体

多视图立体 (MVS) 方法基于一组具有已知姿势的图像估计 3D 环境的密集表示。在过去的几年中,已经开发了几种方法来解决基于经典优化的MVS问题[46],[28],[30],[2],[47],[49],[39],[13],[45],[60]。 最近,由于深度神经网络(DNN)的发展,提出了不同的基于学习的方法。这种表示可以是体积[26],[27],[36]或基于3D点云[3],[12]。最受欢迎的仍然是从 3D 成本体积预测的深度图表示 [23]、[53]、[61]、[66]、[22]、[56]、[41]、[24]、[33]、[62]、[19]、[64]、[57]。Huang等人[23]提出了第一个基于成本-数量的方法之一。他们计算一组相对于参考图像的图像对平面扫描体积,并使用CNN基于该集预测单个深度图。Zhou等人[66]也使用光度成本体积作为深度神经网络的输入,并采用两阶段方法进行密集深度预测。Yao等人[61]而是使用所有输入图像的深度特征计算单个成本体积。

2.2. 动态场景中的稠密深度估计

重建动态场景具有挑战性,因为移动对象违反了经典多视图立体方法的静态世界假设。Russell et al. [43] 和 Ranftl et al. [40] 基于运动分割并执行经典优化。 Li等人[32]提出从移动人物的场景中估计密集的深度图。所有这些方法都需要额外的输入,例如光流、对象掩码等进行推理,而 MonoRec 只需要摆出的图像作为输入。另一条研究方向是单眼深度估计[7],[6],[29],[31],[11],[59],[16],[48],[67],[63],[65],[52],[18],[17],[58]。这些方法不受移动物体的影响,但深度估计不一定准确,尤其是在看不见的场景中。Luo等人[34]提出了一种不具有实时能力的测试时间优化方法。在一项并行的工作中,Watson等人[55]通过单目深度估计和多视图立体之间的一致性来解决移动物体,而MonoRec则通过提出的MaskModule明确预测动态掩模

2.3.稠密SLAM

上面引用的几种方法解决了密集3D重建和相机姿态估计的问题[48],[67],[63],[65],[66],[59],[58]。然而,这些方法要么独立解决这两个问题,要么只将一个问题整合到另一个问题中(例如[66],[58])。Newcombe等人[37]共同优化了6DoF相机姿势和密集的3D场景结构。但是,由于其体积地图表示,它仅适用于小比例场景。最近,Bloesch 等人 [1] 提出了一种学习的代码表示,可以与 6DoF 相机姿势一起优化。Czarnowski等人[5]追求这个想法,并将其集成到一个完整的SLAM系统中。然而,上述所有方法都没有解决移动物体的问题。相反,所提出的MonoRec网络明确地处理移动物体,并在移动和静态结构上实现了卓越的精度。此外,先前的研究表明,相机跟踪的准确性不一定随着点的增加而提高[8],[10]。因此,MonoRec 只专注于使用稀疏 VO 系统的姿势提供密集重建,并在公共基准测试上显示最先进的结果。请注意,通过这种方式,MonoRec 可以轻松地与具有任意传感器设置的任何 VO 系统结合使用。


图2:单重架构: 它首先从多个输入帧构造光度成本体积。与之前的工作不同,我们使用SSIM [54]指标而不是SAD来测量光度一致性。掩模模块旨在检测不同输入帧之间的不一致,以确定移动对象。多帧成本体积 C 与预测的掩码相乘,然后传递给 DepthModule,后者预测密集的反深度图。在MaskModule和DepthModule的解码器中,成本体积特征与预先训练的ResNet-18特征连接在一起。

三、MonoRec网络

3.1.网络架构

MonoRec 使用一组连续帧和相应的相机姿势来预测给定关键帧的稠密深度图。MonoRec架构结合了MaskModule和DepthModule。 MaskModule 可预测移动物体掩码,从而提高深度精度,并允许我们消除 3D 重建中的噪点。深度模块根据屏蔽的成本量预测深度图。在本节中,我们首先描述我们架构的不同模块,然后讨论专门的多阶段半监督训练方案。

如图2所示,所提出的网络架构包含两个子模块,即MaskModule和DepthModule。

  • MaskModule

掩模模块旨在预测掩码Mt哪里Mt(x) ∈ [0,1] 表示像素 x 在我t属于移动物体。确定移动对象来自我t单独是一项模棱两可的任务,很难一概而论。因此,我们建议使用成本卷集 Ct′|t′ ∈ 1,⋯,N \\ t 编码几何先验It和 It′|t′ ∈ 1, ⋯,N \\ t 分别。我们使用Ct′而不是C,因为不一致的几何信息来自不同Ct′是移动物体预测的强先验 - 动态像素在不同情况下产生不一致的最佳深度步长Ct′.然而,仅靠几何先验不足以预测移动物体,因为纹理差或非朗伯表面也会导致不一致。此外,成本体积倾向于就错误的深度达成共识,这些深度在语义上不适合以恒定速度移动的对象的场景上下文。因此,我们进一步利用预先训练的 ResNet-18 [21] 功能:我t除了几何先验之外,还对语义先验进行编码。该网络采用U-Net架构设计[42],具有跳过连接。所有成本量都以共享权重通过编码器传递。来自不同成本卷的特征使用最大池化进行聚合,然后通过解码器传递。通过这种方式,MaskModule 可以应用于不同数量的帧,而无需重新训练。

  • DepthModule

深度模块预测密集的像素级反深度图Dt之It.为此,模块接收与关键帧连接的完整成本量 CIt.与 MaskModule 不同,这里我们使用 C 而不是Ct′由于多帧成本体积通常会导致更高的深度精度和对光度噪声的鲁棒性[37]。为了消除对移动物体的错误深度预测,我们在Mt以及每个深度步长 d 的成本体积 C。 这样,在移动物体的剩余区域中不会有任何最大值(即强先验),因此 DepthModule 必须依靠来自图像特征和周围环境的信息来推断移动物体的深度。我们采用U-Net架构,解码器具有多尺度深度输出[17]。最后,深度模块输出一个插值因子d最小和d.max.在实践中,我们使用 s = 4 个尺度的深度预测。

3.2.多阶段训练

在本节中,我们提出了一个针对网络的多阶段训练方案。具体来说,引导阶段、掩码模块细化阶段和深度模块细化阶段依次执行。


图3:辅助训练面罩: 用作参考的训练集中的辅助训练掩码示例。

在引导阶段,MaskModule 和 DepthModule 是分开训练的。深度模块将非屏蔽 C 作为输入并预测Dt.深度模块的训练目标定义为多尺度(s ∈ [0,3])半监督损失。它结合了自监督光度损失和边缘感知平滑度项(如[17]中所述)与监督稀疏深度损失。

掩模模块使用掩模损耗 L 进行训练面具这是预测掩码之间的加权二进制交叉熵Mt以及辅助地面实况运动物体掩码M辅助。我们生成M辅助通过利用预先训练的 Mask-RCNN 和训练的深度模块,如上所述。我们首先定义可移动对象类,例如汽车、骑自行车者等,然后获取这些对象类的实例分割,用于训练图像。如果可移动实例在时间立体和静态立体之间具有较高的光度不一致像素比率,则该可移动实例被归类为移动实例。具体来说,对于每张图像,我们预测其深度图Dt和DSt使用由时态立体图像 C 和静态立体图像形成的成本体积CS分别。那么,如果以下三个指标中的两个指标高于预定义阈值,则像素 x 被视为移动像素:(1) 静态立体光度误差使用Dt,即pettS(x,Dt(x)).(2) 平均时间立体光度误差使用DSt,即pett′(x,DSt(x)).(3)两者的区别Dt(x) 和DSt(x).详情请参阅我们的补充资料。图 3 显示了生成的辅助地面实况移动对象掩码的一些示例。

掩模模块细化MaskModule 的自举阶段在两个方面受到限制:(1) 需要大量增强,因为图像上大多数只有很小比例的像素属于移动对象。(2)辅助掩码与成本体积中的几何先验不一定相关,减慢了收敛速度。因此,为了改进掩码预测,我们利用了自举阶段训练的 DepthModule。我们利用了这样一个事实,即静态立体预测的移动物体的深度预测以及光度一致性应该比时间立体预测更好。因此,类似于上一节中解释的移动像素的分类,我们得到DSt和Dt从两个前向传递使用CS和 C 分别作为输入。然后我们计算静态立体光度误差L′SSeLf,s用DSt作为深度和时间立体光度误差L′TSeLf,s用Dt作为深度。

深度模块细化训练 DepthModule 时,引导阶段不会区分移动像素和静态像素。因此,我们的目标是改进深度模块,使其能够预测移动物体的适当深度。关键思想是,通过利用Mt, 对于移动像素,只有静态立体声损失被反向传播,而对于静态像素,时间立体声、静态立体声和稀疏深度损失被反向传播。 由于移动对象仅占关键帧中所有像素的一小部分,因此光度误差的梯度相当弱。为了解决这个问题,我们执行进一步的静态立体正向传递,并使用生成的深度图。DSt与之前移动对象一样。


图四:细化损失: a) 掩码模块细化和 b) 深度模块细化损失函数。虚线轮廓表示没有为模块中的相应正向传递计算梯度。

实现细节
这些网络在 PyTorch [38] 中实现,图像大小为 512×256。对于自举阶段,我们训练 DepthModule 70 个 epoch,学习率 lr = 1e−4对于前 65 个时期和 LR = 1E−5对于其余的。掩模模块训练了 60 个时期,lr = 1e−4.在掩码模块细化期间,我们训练了 32 个 epoch,lr = 1e−4,在深度模块细化期间,我们训练了 15 个 epoch,lr = 1e−4另外 4 个时期在 lr = 1e−5.超参数α、β 和 γ 设置为 4、10−3×2−s和 4 个。对于推理,MonoRec 可以使用 10GB 内存实现 1 fps,批量大小为 2。

四、实验

为了评估所提出的方法,我们首先将最先进的单目深度预测和MVS方法与KITTI数据集的训练/测试拆分进行比较[15]。然后,我们进行了广泛的消融研究,以显示我们设计选择的有效性。最后,我们使用在KITTI上训练的模型在Oxford RobotCar [35]和TUM-Mono [9]上演示了不同方法的泛化能力。

图5:KITTI的定性结果: 图的上半部分显示了 KITTI 测试集中选定帧数的结果。比较的PackNet模型使用LiDAR作为基本事实以半监督方式进行训练。除了深度图,我们还通过重新投影深度和从两个不同的角度查看来显示3D点云。为了进行比较,我们从相应的角度展示了LiDAR的地面真相。我们的方法清楚地显示了最佳的预测质量。图的下半部分显示了从多个帧累积的点云的大规模重建。红色插图描绘了从移动物体重建的文物。通过提出的MaskModule,我们可以有效地过滤掉移动的物体,以避免在最终重建中出现这些伪影。

表 1: KITTI的定量结果: MonoRec和KITTI测试集上其他方法的比较。数据集列显示了相应方法使用的训练数据集,请注意,特征分割是我们测程分割的超集。最佳/次佳结果标记为粗体/下划线。评估结果表明,我们的方法总体上实现了最佳性能。图例:M:单目图像,S:立体图像,D:GT深度,D*:DVSO深度,KF:关键帧,KF + 2:关键帧+ 2个单帧,CS:城市景观[4],预训练网络,FB:DeepTAM的固定频段模块,参考:DeepTAM的窄带细化模块

图6:质的改进: 成本体积遮罩和深度细化的影响。

4.1. KITTI 数据集

特征分割 [6] 是评估 KITTI 上深度估计的最流行的训练/测试分割。我们不能直接使用它,因为 MonoRec 需要具有估计姿势的时间连续图像。因此,我们选择训练/测试拆分作为 KITTI 里程计基准和特征分解之间的交集,从而产生 13714/8634 个样本用于训练/测试。我们从单目VO系统DVSO [59]获得图像之间的相对姿势。在训练过程中,我们还利用DVSO产生的点云作为稀疏深度监督信号。对于训练 MaskModule,我们仅使用在生成的辅助遮罩中包含移动对象的图像,总共 2412 个。对于以下所有评估结果,我们使用改进的地面实况[50]和80m处的盖深。

我们首先将我们的方法与最近的技术水平进行比较,包括基于优化的方法(Colmap),自监督单目方法(MonoDepth2和PackNet),使用稀疏LiDAR数据的半监督单目方法(PackNet),监督单目方法(DORN)和MVS方法(DeepMVS和DeepTAM),如表1所示。请注意,DeepTAM 的训练代码尚未发布,因此我们自己实现了它,使用我们的拆分进行训练和测试,以提供公平的比较。我们的方法优于所有其他方法,尽管仅依赖图像而不使用LiDAR地面实况进行训练,但仍具有显着的余量。

这也清楚地反映在图5所示的定性结果中。与单目深度估计方法相比,我们的方法在深度图中提供了非常清晰的边缘,并且可以恢复更精细的细节。与其他MVS方法相比,它可以更好地处理移动物体,图7进一步说明了这一点。

单一深度图通常无法真正反映大规模重建的质量。因此,我们还使用图 5 下部多个帧的深度图可视化累积点。我们可以看到,我们的方法可以提供非常高质量的重建,并且由于我们的MaskModule,能够消除由移动物体引起的伪影。我们敦促读者观看补充视频,以获得更有说服力的比较。

消融研究。我们还研究了不同组分对方法性能的贡献。表2显示了我们消融研究的定量结果,这些结果证实了我们提出的所有贡献都比基线方法改进了深度预测。此外,图 6 展示了通过掩模模块和细化训练实现的定性改进。

4.2. Oxford RobotCar和 TUM-Mono

为了证明MonoRec的泛化能力,我们在Oxford RobotCar数据集和TUM-Mono数据集上测试了我们的KITTI模型。Oxford RobotCar 是一个街景数据集,显示的运动模式和视图透视与 KITTI 相似。然而,TUM-Mono是由手持式单色相机录制的,因此与KITTI相比,它表现出非常不同的运动和图像质量。结果如图 8 所示。单目方法难以推广到新的语境。比较的MVS方法显示出更多的伪影,并且无法预测移动物体的合理深度。相比之下,我们的方法能够很好地推广到深度和移动物体预测的新场景。由于牛津机器人车也提供激光雷达深度数据,我们在补充材料中进一步展示了定量评估。

表 2: 消融研究: 基线仅由使用未屏蔽成本体积 (CV) 的深度模块组成。没有 SSIM 的基线使用与 SSIM 具有相同感受野的 5x5 修补程序。使用 SSIM 形成 CV 可以带来显著的改进。对于 MonoRec,仅添加 MaskModule 而不进行改进不会产生显着的改进。深度模块的改进提供了重大改进。通过组合所有建议的组件来实现最佳性能。


图7:运动物体深度估计比较: 与其他MVS方法相比,MonoRec能够预测合理的深度。此外,深度预测在场景的静态区域中具有较少的噪点和伪影。

五、结论

我们介绍了MonoRec,这是一种深度架构,仅从单个移动摄像机即可估计精确的3D稠密重建。我们首先建议使用SSIM作为光度测量来构建成本体积。为了处理动态对象,我们提出了一种新的 MaskModule,它从输入成本量预测移动对象掩码。通过预测的掩模,所提出的深度模块能够估计静态和动态对象的准确深度。 此外,我们提出了一种新的多阶段训练方案以及用于训练深度预测的半监督损失公式。总而言之,MonoRec能够在KITTI上在定性和定量上优于最先进的MVS和单目深度预测方法,并且在Oxford RobotCar和TUM-Mono上也显示出强大的泛化能力。我们相信,这种从单个移动相机中恢复精确3D稠密重建的能力将有助于将相机确立为自主系统的领先传感器。

图8:Oxford RobotCar 和 TUM-Mono: 所有结果均由表1中相应的最佳变体获得。MonoRec表现出比单目方法更强的泛化能力。与DeepMVS和DeepTAM相比,MonoRec提供具有较少伪影的深度图,并预测移动物体遮罩。

以上是关于视觉SLAMMonoRec: Semi-Supervised Dense Reconstruction in Dynamic Environments from a Single Moving C的主要内容,如果未能解决你的问题,请参考以下文章

如何选择机器视觉软件

如何做视觉实验?

如何开展一个机器视觉检测项目?

视觉暂留:视觉暂留

机器视觉做啥用的?

机器视觉的应用领域