Self-Supervised Sparse-to-Dense: Self-Supervised Depth Completion from LiDAR and Monocular Camera

论文分享(2)

0.摘要

深度补全,一种从稀疏深度图到估计密集深度图的技术,在机器和自动驾驶中由很大的应用。然而,深度补全面临三个主要的挑战:稀疏深度输入中的不规则间隔模式;处理多种传感器模式的困难(当彩色图存在时);像素级别真值的密集深度的缺失。在这项工作中,处理了上述所有的挑战。具体来说,我们开发了一个深度回归模型来学习直接的映射从稀疏深度(含彩色图)到密集深度。我们也提出了一个自我监督训练框架仅需要彩图和稀疏深度图序列,不需要密集深度标签。我们的实验表明,我们的网络在经过半密集注释的训练后(存疑),可以达到最新的准确性,并且在提交时成为KITTI深度补全基准2的最佳法宝。此外,自我监督框架的性能优于使用半密集注释训练的寻多现有解决方案。

1.介绍

深度传感是大量机器人任务的基础,包括避障,3D建模,定位。LiDAR,由于有更高的精确性和更大的传感范围,已经被广泛地应用于机器人和自动驾驶。然而,现存的3D LiDARs在水平扫描线的数目上有限制,因此只能提供稀疏的测量,尤其是对于远距离的物体(在图像(1)a中展示了64线Velodyne扫描的结果)。而且,单纯地增加3D LiDARs的测量密度会花费巨大。因此,从稀疏测量中估计密集的深度是有价值的,无论是对于学术研究还是大尺度的工业应用。
从激光雷达测量中进行深度补全是有挑战性的,有以下几个原因:第一个,雷达测量结果在图像空间内是高度稀疏的和不规则分布的;第二点,这是一个艰巨的任务来提升预测的准确性,使用对应的彩色图,因为深度图和彩色图是不同的传感模式;第三点,密集的深度真值是不存在的,像素级别的标注是需要大量人工的和不可扩展的。
在这项工作中,我们处理这些挑战的过程中有两个突出的贡献点:(1)我们提出了一个网络框架,它可以学习直接的映射,从稀疏深度(含彩色图)到密集深度。这个网络框架实现了目前最好的精度在KITTI深度补全基准上,也是目前最好的方法。(2)我们提出了一个自我监督框架来训练深度补全网络。我们的框架假设使用稀疏的3D LiDAR和单眼彩色相机,对传感器进行简单设置。这个自我监督的框架训练了一个网络不需要密集的标注,并且表现的性能优于现存的通过半密集标注训练的方法。我们的代码和展示视频会向公众开放。

2.相关工作

深度补全. 深度补全是一个概述性术语,涵盖了一系列相关问题,具有各种不同的输入方式(相关的密集性深度输入,稀疏深度测量,具有彩色图的引导,或者没有)。问题和解决方案通常取决于传感器,因此它们面临着极大不同的算法挑战。
举个例子,当考虑噪声时,结构化光传感器的深度补全(例如Microsoft Kinect)有时也称为深度修复,或者是深度增强。这项任务是为了填补相应的密集深度图缺失的小洞。这类问题是相对简单的,因为大多数的像素已经被观测到了,超过80%。因此,只是单纯基于过滤器的方法也能取得不错的结果。顺便提一下,修复问题和深度去噪以及深度超分辨也有紧密的联系。
然而,当输入深度图越来越稀疏,补全问题变得越来越具有挑战性,因为这种逆问题的求解是病态的。举个例子,有人假设深度信号分段线性具有很强的先验性,因此仅从数百个深度测量就解决了深度重建问题。另外一个例子就是具有 3D LiDARs的自动驾驶,其中获得的深度测量在只占摄像机图像空间范围的大约4%像素。这个问题最近吸引了大量的研究兴趣。具体来说,有人提出了端到端的深度回归模型来完成深度补全。有人提出了一个简单的快速的基于插值的算法,而且算法可以运行在CPU上。有人提出了稀疏卷积,常规卷积运算的变体,带有输入归一化,用于解决神经网络中的数据稀疏性。有人改进了针对改进置信传播的归一化卷积。有人将传统的字典学习和深度学习合并到一个用于深度补全的框架中。和之前所有的工作相比,我们的方法取得了更高的准确度。
深度预测. 深度补全与从单目彩色图进行深度估计有很强的联系。深度预测的研究工作可以追溯到一些其他人的早期工作。从那以后,深度预测的过程从简单的手工特征表示,发展到基于深度学习的方法。大多数基于学习的方法依赖于像素级别的真值进行深度训练。然而,具有真值的深度图不易获得且不能手工标注。为了解决上述的困难,最近研究的热点转到寻找其他监督信号来进行训练。举个例子,有人开发了一种无监督的学习框架,用光度损失作为监督,用于同时估计单目相机的深度和自我运动。然而,深度估计仅仅取决于尺寸。有人通过使用3D几何约束提高了准确性,有人拓展了光学流量估计的框架。有人通过立体图像对恢复了绝对的比例。相反的是,在这项工作中,我们提出了第一个自我监督框架,为了深度补全进行了专门的设计。我们利用了RGBd传感数据和经过充分研究的基于模型的传统方法进行姿态估计,为了提供完全尺度的深度监控。

3.网络框架

我们将深度补全问题构建为一个深度回归学习问题。为了便于注释,我们用d作为稀疏深度输入(没有测量到深度的像素设置为0),RGB为彩色图(或灰度图),pred为预测的深度。
提出的网络遵循编码-解码范例。正如图二所示。编码由一系列具有增加滤波器组的卷积组成(存疑),以此对特征空间分辨率进行了下采样。解码,在另一方面,有一个相反的框架用转置卷积对空间分辨率进行上采样。
Self-Supervised Sparse-to-Dense: Self-Supervised Depth Completion from LiDAR and Monocular Camera_第1张图片
输入的稀疏深度和彩色图,当存在时,是用它们的初始卷积分别处理的。卷积过的输出被拼接成一个单独量,作为残差模块ResNet的输入。各个编码层的输出,通过跳跃连接,传输给相应的解码层。一个最终的1x1卷积滤波器,输出一个预测图像,具有和网络输入图像相同的分辨率。所有的卷积层后面有批标准化处理和ReLU激活函数,除了最后一层。在推断的过程中,低于用户定义的阈值m的预测会被裁剪为m。我们经验性地将m设置为0.9米,是雷达最小有效感应距离。
在没有彩色图像地情况下,我们简单移除RGB分支,采用了一组稍微不同的超级参数,滤波器的数目减半(举例:第一个残差模块改为32通道而不是64通道)。

4.自我监督训练框架

现存的工作在深度补全上,依赖密集标注真值进行训练。然而,密集标注的真值一般不存在。甚至半密集标签的获得在技术上是一个挑战。举个例子,有人创建带注释的深度数据集通过使用GPS汇总连续的数据帧,立体视觉,额外的人工检查。但是,此方法不易扩展。此外,它仅在图像的下半部分产生半密集注释(约30%像素)。
Self-Supervised Sparse-to-Dense: Self-Supervised Depth Completion from LiDAR and Monocular Camera_第2张图片
在这个章节,我们提出了一个基于模型的自我监督框架来进行深度补全。这个框架仅需要一个同步序列,即从单目相机获得的彩色图和从激光雷达获得的稀疏深度图。因此,这个自我监督框架不需要依赖任何其他传感器,手工标记工作,或其他的基于学习的算法例如构建模块。而且,这个框架不依赖于任何一个特定的神经网络结构的选择。这个自我监督框架正如图三所示。在训练期间,当前数据帧RGBd1和附近的数据帧RGB2均用于提供监视信号。然而,在推理时间,只有当前帧RGBd1需要需要作为输入来产生一个深度预测pred1。
稀疏深度监督. 稀疏深度d1本身可以被用作一个监督信号。具体来说,我们对已知稀疏深度的像素集上的网络的输入和输出之间的差异进行惩罚,以此来鼓励在这个像素集上有确定的映射。损失函数引领我们获得更高的准确性,提升稳定性,更快的收敛来进行训练。
深度损失函数定义如下:
在这里插入图片描述
值得注意的是,一个更加密集的真值(例如KITTI深度补全基准中的30%密集标注的数据),如果存在的话,也可以替代稀疏输入d1。
基于模型姿态估计. 作为迈向光度损失的中间步骤,在当前帧和附近帧之间的相对姿态需要计算。先前的工作要么假定已知的变换,或者用另一个学习好的神经网络来进行姿态估计。与之相反的是,在这个框架中,我们采用了一个基于模型的方法来进行姿态估计,RGB和d都进行了使用。
具体来说,我们解决了 透视-n-点(PnP)问题来估计当前帧1和附近帧2相对变换,使用的是RGBd1和RGB2提取的匹配特征对应关系。随机样本共识(RANSAC)也与PnP结合使用以提高特征匹配中离群值的鲁棒性。和最新的基于彩色图估计的方法相比,我们的估计是精准的并且具有故障感知能力(如果没有发现估计则会返回一个标志)。
光度损失作为深度监督. 给定相对变换T1-2和当前深度预测pred1,附近的彩色图像RGB2可以被反变形到当前帧。具体来说,给出相机的固有矩阵K,任何像素p1在当前帧1在帧2中具有对应的投影,因为:

在这里插入图片描述
因此,我们可以创建一个合成彩色图像,使用p2的四个直接相邻点周围的双线性插值(存疑)。换句话来说,对于所有像素p1:
在这里插入图片描述
变换后的图像和当前图像RGB1很相似,当环境很相似而且视角的变换并没有导致很多的遮挡时。注意到这个光度损失是通过双线性插值进行进行微分。将光度损失最小化可以减少深度预测错误,当深度预测可以足够靠近真值时(当投影点p2与真实对应点相差不超过一个像素时)。因此,一个多尺度策略被采用以确保以下公式的正确性:
在这里插入图片描述
在最少一个尺度s上。(没弄懂)
另外,为了避免与深度损失的冲突,这个光度损失只评价在那些未测到深度的像素上。最终光度损失如下:
在这里插入图片描述
在这里插入图片描述
(没弄懂)
光滑度损失. 光度损失仅测量各个错误的总和(例如,独立计算每个像素上的颜色差异),没有任何相关的约束。因此,仅使光度损失最小化会导致不理想的局部最优,其中深度像素会有不正确的值(尽管光度损失很小)和高的不连续性。为了缓解这个问题,我们在损失函数中添加了第三项,以鼓励深度预测的平滑性。受其他文献的启发,我们对以下项进行惩罚:
在这里插入图片描述
这个L1损失是预测的深度值的二次微分,来鼓励分段线性深度信号。
总的来说,对于整个自我监督框架来说,最后的损失函数包含三项:
在这里插入图片描述

5.实现

为了以最先进的方法为基准,我们使用KITTI深度补全数据集来进行训练和测试。通过将11个连续帧的LiDAR扫描聚合为一个来创建数据集,产生一个半密集真值,大概有30%标注的像素。这个数据集包含了85898个训练数据,1000个选定的验证数据,还有1000个没有真值的测试数据。
对于PnP姿态估计,我们用一个4x4的核来扩大稀疏深度图d1,因为提取的点可能没有点来测深度。在每代中,我们遍历当前帧1的整个训练数据集,并从时间上最近的6个帧中随机选择一个相邻帧2(除了当前帧)。如果存在PnP姿态估计失败,T1-2被设置成单位矩阵,并且相邻的RGB2图像被RGB1图像覆盖。这样的话,光度损失会被设置为0,不会对训练产生影响。
训练框架是用PyTorch实现的。零均值高斯随机初始化用于网络权重。对于RGBd网络我们设置批标准尺寸为8,对于简单的d网络我们设置批标准尺寸为16。Adam的初始学习率为10的-5次方,用来进行网络优化。学习率每5代就减半。我们使用8Tesla V100 GPUs和16G RAM来进行训练,并且迭代12代需要12个小时对于RGBd网络,4小时对于d网络。

6.结果

在这一节,我们展现我们的实验结果来说明我们方法的表现。我们第一个比较我们的网络结构,以纯监督的方式进行训练,与最新发布的方式进行比较。第二,我们在提出的深度结构上做了一个消融研究,以此来了解究竟哪一个部分对预测的准确性做出了贡献。最后,我们展示了使用自我监督框架的训练结果,并提出了一种经验研究,研究算法在不同程度稀疏的输入深度信号下的表现。

6.1 与最先进的方法进行比较

在这一节,我们训练我们最佳网络在一个纯监督方式下与其他公布的方法在基准数据集上进行比较。我们使用公认的错误衡量指标用于深度补全基准数据集,包括 rmse,mae,irmse,和imae。具体来说,rmse和mae分别代表了均方根误差和平均绝对误差;irmse和imae分别代表反深度表示中的均方根误差和平均绝对误差。结果见于表1和图4。

Self-Supervised Sparse-to-Dense: Self-Supervised Depth Completion from LiDAR and Monocular Camera_第3张图片
我们的d网络几乎在所有指标上都领先于先前的工作。RGBd网络甚至可以达到更高的准确性,领先所有对于基准提交的工作。我们的预测深度图像也拥有更加清晰和锋利的物体边界(例如可以看到树、车、道路标志),这可以归因于我们的网络很深的事实(因此可以学习到更复杂的语义特征),而且拥有更大的跳跃连接(因此保留图像的细节)。值得注意的是,那些基于监督的方法在图像顶部的深度预测表现不好,有以下两个原因:(a)激光雷达没有返回测量值,因此网络的输入在顶部都是0;(b)30%的半密集标注在顶部区域没有包含标签。

6.2 消融研究

为了检测网络组成对表现的影响,我们进行了系统的消融研究,并将结果列在表二中。
最有效的部分对最终结果准确度的提升包括使用RGBd作为输入和使用L2损失函数进行训练。这与有些研究发现L1损失函数更有效相矛盾,推测优化损失函数的有效性是由数据集和结构决定的。加入跳跃连接、从头开始训练(没有导入预训练模型)、没有使用最大池化层都对最终结果做出了实质性的改善。增加网络的深度(从18增加到34)和增加编码解码对(从3增加到5),以及适当分配给RGB和d分支滤波器的数量(16/48)分配,也对最终结果造成了一些积极的影响。
Self-Supervised Sparse-to-Dense: Self-Supervised Depth Completion from LiDAR and Monocular Camera_第4张图片
Self-Supervised Sparse-to-Dense: Self-Supervised Depth Completion from LiDAR and Monocular Camera_第5张图片
但是,附加的正则化,包括丢失和权重下降都会导致性能下降。值得注意的是,输入深度图像的替代编码(例如最近邻插值和稀疏深度测量值的双线性插值)不会提高预测深度。这意味着可以处理高度稀疏图像输入。

6.3 自我监督框架的评估

在这一节,我们评估章节四中描述的自我监督框架,用的是KITTI验证数据集。我们比较三种不同的训练方法:只使用光度损失而不使用稀疏深度监督,完整的自我监督框架(含有光度损失和稀疏深度监督),使用半密集标注的纯监督方法。结果列于表三。自我监督结果的rmse为1384,这个表现已经比用半密集标注训练的方法的结果要好,例如稀疏卷积。

Self-Supervised Sparse-to-Dense: Self-Supervised Depth Completion from LiDAR and Monocular Camera_第6张图片
但是,请注意,此类评估指标可能低估以自我监督方式训练的深度预测的真实质量,因为真值本身是有偏差的。具体来说,评估的真值与训练的注释的限制相同:低密度,以及顶部区域数值缺失。作为结果,顶部的预测,自我监督框架提供了监督,但是半密集注释没有,并没有反映到错误指标中,如图五所示。
这个自我监督框架不仅对64线雷达的测量结果有效,对更低分辨率的雷达和更稀疏的深度输入也同样有效。在图6(b)中,我们显示了在不同层度的稀疏性深度图的情况下使用自我监督框架训练的网络的验证错误。当输入的测量很小的时候,验证错误很高。这可能是由PnP姿态估计失败导致的。然而,在有充足测量的时候(例如:至少4条扫描线,或在对输入进行均匀采样时,采样的数量等于至少两条扫描线),验证误差随着输入的幂函数而开始减小,与用半密集标注进行训练相类似。
Self-Supervised Sparse-to-Dense: Self-Supervised Depth Completion from LiDAR and Monocular Camera_第7张图片

6.4 输入稀疏性的影响

在很多机器人应用中,工程师需要处理以下问题:为了实现特定的目标到底需要多少个激光雷达扫描(这关系到成本)?在这一节,我们尝试来回答这个问题,通过评估在不同输入稀疏性和空间模式下我们的雷达深度补全技术的准确性。为此,我们提供了一个实验分析,在不同层次的稀疏度和空间模式下的不同深度输入深度补全准确性。具体来说,我们对未处理的雷达输入用两种方式进行下采样:减少激光扫描的数量(来模拟拥有更少激光扫描线的雷达),并从所有雷达测量中进行统一子采样。结果如图6所示,包含不同的空间模式和输入模式。
Self-Supervised Sparse-to-Dense: Self-Supervised Depth Completion from LiDAR and Monocular Camera_第8张图片
在图六(a)中,我们展示了验证错误,当用半密集注释进行训练。均方根误差在对数-对数图中形成了一条直线,暗示了深度补全错误按照输入深度测量数量的幂函数进行减少,例如cx的p次方,c为正数,p为负数。这也意味着提高雷达的分辨率会降低回复(不懂)。比较这两种空间模式,均匀随机子采样比减少扫描线数量取得了更高的准确性,因为使用均匀随机采样输入深度采样在像素空间中更分散。此外,与仅使用d比较,当使用半密集注释训练时,使用RGBd可以大量减少预测错误。当深度测量数量很少时,性能差距尤为明显。从32线到64线,均方根误差有明显下降。这种准确度的提升可能归功于我们的网络结构是根据64线进行优化的。
在图六(b)中,我们展示了用自自我监督框架训练的结果。正如章节6.3讨论的,验证误差按照幂函数稳步递减,与用半密集标注训练的相似,当输入的测量量充足时。然而,在自我监督框架下,同时使用RGB和稀疏深度可以产生与仅使用稀疏深度相同的精度,这与用半密集标注进行训练不同。其中隐藏的原因值得探究。

7.结论

在这篇论文中,我们提出了一个深度回归模型用在稀疏深度图的深度补全。我们的模型在KITTI深度补全基准数据集上取得了目前最好的结果,而且在递交这篇论文时我们的方法的表现比已有的方法有一个明显的进步。我们也提出了一个高扩展性,基于模型的自我监督训练框架来进行深度补全。这个框架只需要RGB和稀疏深度图序列对,而且表现优于现存的大量的使用半密集标注训练的方法。而且,我们用实验性的结果展示了深度补全误差随着输入深度测量的数量呈指数型递减。在未来,我们会研究提升自我监督框架的技术,包括更好的损失函数以及考虑动态对象。

你可能感兴趣的:(Self-Supervised Sparse-to-Dense: Self-Supervised Depth Completion from LiDAR and Monocular Camera)