谷歌提出以无监督方式从单目视频中学习的结构化方法(附开源代码)

对自主机器人来说,感知场景的深度是一项重要的任务——准确估计目标离机器人有多远的能力对于避开障碍、安全规划以及导航来说至关重要。虽然可以从传感器数据(比如 LIDAR)中获得(学习到)深度值,但是也可以只依赖机器人的运动以及因此而产生的不同视角场景,以无监督的方式从单目相机中学到深度值。在这个过程中,也在学习「自我运动(Ego-motion)」(机器人/摄像机在两个帧之间的运动),它提供了机器人自身的位置。这种方法由来已久——来自 SfM(Structure-from-Motion,运动恢复结构)和多视图地理范式——是基于技术的新学习,具体来说就是通过使用 深度神经网络 对深度和自我运动进行无监督学习,刷新了当前的最佳结果,包括 Zhou 等人的研究(《Unsupervised Learning of Depth and Ego-Motion from Video》)以及作者之前的研究(《Unsupervised Learning of Depth and Ego-Motion from Monocular Video Using 3D Geometric Constraints》,在训练期间对准场景的 3D 点云)。

 

尽管已经做出了这幺多努力,学习预测场景深度和自我运动仍然是一个持续的挑战,特别是在处理高动态场景和估计移动目标的适当深度时。由于之前所做的无监督单目学习方面的研究没有对移动目标建模,因此可能对目标深度做出一致的错误估计,使目标深度映射到无限远。

 

在 AAAI 2019 的《Depth Prediction Without the Sensors: Leveraging Structure for Unsupervised Learning from Monocular Videos》一文中,作者提出了一种新方法,它可以对移动目标建模,还可以产生高质量的深度估计结果。与之前从单目视频中进行 无监督学习 的方法相比,该方法可以恢复移动目标的正确深度。作者在本文中还提出了一种无缝在线细化技术,它可以进一步提高质量,并适用于跨数据集的传输。此外,为了鼓励更先进的车载机器人学习方法。

 

作者在TensorFlow 中开源了代码:

 

https://github.com/tensorflow/models/tree/master/research/struct2depth

 

 

之前的研究(中间)不能正确估计移动目标的深度,所以将它们映射到了无穷远(热图中的深蓝色区域)。本文的方法(右边)提供了更好的深度估计。

 

结构

 

本文方法中的一个关键思想是将结构引入了学习框架。也就是说,该方法不依赖神经网络直接学习深度,而是将单目场景视为由移动目标(包括机器人)组成的 3D 场景。将场景中相应的运动建模为独立变换(旋转和平移),然后用其对 3D 几何建模,并估计所有目标的运动。此外,知道哪些目标可能移动(例如,车辆、行人以及自行车等)有助于它们学习单独的运动矢量,即便这些目标可能是静态的。通过将场景分解为 3D 和单个目标,可以更好地学习场景中的深度和自我运动,尤其是在动态场景下。

 

作者在 KITTI 和 Cityscapes 的城市驾驶数据集上测试了这种方法,发现它的表现超过了当前最佳的方法,而且该方法的表现已经逼近用 stereo 对视频作为训练监督的方法的质量。重要的是,它可以正确地恢复与自我运动车辆移动速度相同的车辆的深度。这在之前一直是一个挑战——在这种情况下,移动的车辆显示为静态(在单目输入中),表现出与静态地平线相同的行为,导致推断出无穷的深度。虽然 stereo 输入(《Unsupervised Monocular Depth Estimation with Left-Right Consistency》)可以解决这种模糊的情况,但该方法是第一种可以从单目输入中正确推断深度的方法。

 

 

之前使用单目输入的研究无法提取移动目标,并将它们错误地映射到无穷远。

 

此外,由于该方法单独处理目标,因此算法为每个单独目标都提供了运动向量,即运动向量是对其前进方向的估计:

 

 

动态场景的示例深度结果以及对单个目标运动向量的估计(也估计了旋转角,但简单起见没有列出)。

 

除了这些结果之外,这项研究还为进一步探索「无监督学习方法可以实现什幺目标」这一问题提供了动机,因为和 stereo 传感器或 LIDAR 传感器相比,单目输入更便宜也更容易部署。如下图所示,在 KITTI 和 Cityscapes 数据集中,由于时间延迟,监控传感器(无论是 stereo 还是 LIRAR)会出现值缺失,有时甚至无法与相机输入重合。

 

 

根据 KITTI 数据集上的单目视频输入预测的深度值(中间行)和来自 LIDAR 传感器的真实值的比较:后者无法覆盖整个场景,而且有缺失值和噪声值。在训练过程中没有使用真实深度。

 

 

在 Cityscapes 数据集上预测深度。从左到右:图像、基准、本文提出的方法以及 stereo 传感器提供的真实数据。注意 stereo 传感器提供的真实数据中的缺失值。另外,本文的算法可以在没有任何真实值深度监督的情况下实现这样的结果。

 

自我运动

 

本文的结果也提供了当前最佳的自我运动估计,这对自主机器人来说至关重要,因为它提供了机器人在环境中移动时的位置。下面的视频呈现的是通过本文的方法对自我运动进行推断得到的速度和转弯角度的可视化结果。尽管深度和自我运动的输出只是标量,但它可以估计出减速和停车时的相对速度。

 

 

深度和自我运动预测。当车辆转弯或因红灯而停车时,根据速度和转弯角度指示器了解估计值。

 

跨域转移

 

学习算法的一个重要特征是它在移动到一个未知环境时的适应性。在本文中,作者进一步引入了一种在线改进方法,它可以在收集新数据的同时继续在线学习。下图是在 Cityscapes 上训练并在 KITTI 上在线改进之后,估计的深度质量改善的示例。

 

 

在 Cityscapes 数据上训练并在 KITTI 数据上测试时进行在线改进。图像显示的是训练好的模型的深度预测,以及带有在线改进的训练好的模型的深度预测。带有在线改进功能的深度预测可以更好地概括场景中的目标。

 

作者进一步在明显不同的数据集和设置上进行测试,即由 Fetch 机器人收集的室内数据上,而训练是在室外城市驾驶数据集 Cityscapes 上完成的。不出所料,这两个数据集之间存在巨大的差异。尽管如此,作者观察到,与基准相比,在线学习技术能更好地估计深度。

 

 

将学习模型从 Cityscapes(移动车辆收集的室外数据集)转移至由 Fetch 机器人收集的室内数据时的在线调整结果。最下面一行显示的是应用在线改进改善后的深度。

 

总之,这项研究对来自单目摄像机的深度和自我运动进行了无监督学习,解决了高动态场景中的一些问题。它实现了高质量的深度值和自主运动结果,该结果的质量与 stereo 的质量相当,还提出了在学习过程中结合结构的想法。更值得注意的是,作者提出的将仅来自单目视频的深度值和自主运动的无监督学习和在线自适应相结合,是一个强大的概念。因为这样它不仅可以以无监督的方式从简单视频中进行学习,还可以轻松地转移到其它数据集。

 

原文链接:https://ai.googleblog.com/2018/11/a-structured-approach-to-unsupervised.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注