论文笔记(二)Depth Map Prediction from a Single Image using a Multi-Scale Deep Network

发表期刊:NeurIPS 发表时间:2014

摘要

  预测深度是理解场景的3D几何图形的一个重要组成部分。虽然对于立体图像,局部对应足以进行估计,但从单个图像中寻找深度关系就不那么直接了,需要集成来自各种线索的全局和局部信息。此外,这项任务本身是含糊不清的,因为总体规模有很大的不确定性。在这篇论文中,我们提出了一种新的方法,通过使用两个深度网络堆栈来解决这个问题:一个是基于整个图像进行粗略的全局预测,另一个是局部改进预测。我们还应用尺度不变误差来帮助测量深度关系,而不是尺度。通过利用原始数据集作为训练数据的大型来源,在NYU Depth和KITTI上都获得了最先进的结果,并匹配详细的深度边界,而不需要超像素化。

介绍

  估算深度是理解场景中几何关系的一个重要组成部分。反过来,这种关系有助于提供更丰富的物体及其环境表示,通常会改进现有的识别任务,并使许多进一步的应用成为可能,如3D建模、物理和支持模型、机器人,以及潜在的关于遮挡的推理。

  虽然之前有很多基于立体图像或运动估计深度的工作,但从单一图像估计深度的工作相对较少。然而在实践中,单眼的情况经常出现:潜在的应用包括更好地理解在网络和社交媒体上发布的许多图像,房地产清单和购物网站。这些包括许多室内和室外场景的例子。

  单目的任务尚未得到与立体任务同样程度的处理,可能有几个原因。在立体情况下,只要提供准确的图像对应,就可以确定地恢复深度。因此,立体深度估计可以简化为发展稳健的图像点对应关系——这通常可以通过使用局部外观特征找到。相比之下,从单幅图像估计深度需要使用单眼深度线索,如线的角度和角度、物体大小、图像位置和大气效应。此外,可能需要一个全局的场景视图来有效地关联这些,而局部视差就足够立体了。

  此外,这项任务本身就是模棱两可的,在技术上也是一个难以解决的问题:给定一幅图像,它可能由无数可能的世界场景产生。当然,大多数这些在物理上是不可能在现实世界中出现的,因此仍然可以相当准确地预测深度。不过,至少还有一个主要的不确定因素:全局范围。虽然数据中不存在极端的情况(如普通房间与玩具屋),但房间和家具尺寸的适度变化是存在的。除了更常见的与尺度相关的错误外,我们还使用尺度不变的错误来解决这个问题。这将注意力集中在场景中的空间关系上,而不是一般的比例,特别适用于诸如3D建模等应用程序,在这些应用程序中,模型通常在后处理过程中按比例缩放。

  本文提出了一种从单幅图像中估计深度的新方法。使用带有两个组件的神经网络直接对深度进行回归:第一个组件首先估计场景的全局结构,然后第二个组件使用局部信息对其进行优化。除了点误差外,该网络还使用显式解释像素位置之间深度关系的损失来训练。我们的系统在NYU Depth和KITTI上实现了最先进的估计率,以及改进的定性输出。

方法

模型架构

  我们的网络由两个组件堆栈组成、所示。一个粗略的网络首先在全局范围内预测场景的深度。然后在局部区域内通过一个精细的网络进行改进。两个堆栈都应用于原始输入,但另外,粗略的网络输出作为附加的第一层图像特征传递给细网络。通过这种方式,局部网络可以更新全局预测,以加入更精细的细节。

在这里插入图片描述

全局Coarse-Scale网络

  Coarse-Scale网络的任务是利用场景的全局视图预测全局深度图结构。这个网络的上层是完全连接的,因此在它们的视场中包含了整个图像。同样,下层和中层通过最大池化操作将来自图像不同部分的信息组合到一个小的空间维度。通过这样,网络能够整合对整个场景的全局理解,从而预测深度。在单幅图像的情况下需要这样的理解,以便有效地利用诸如消失点、物体位置和房间对齐等线索。局部视图(通常用于立体匹配)不足以注意到这些重要的特征。

  全局Coarse-Scale网络包含了卷积和最大池化的五个特征提取层,然后是两个完全连接的层。输入、特征图和输出尺寸。与输入相比,最终输出的分辨率为1/4(输入本身从原始数据集向下采样了2倍),并对应于包含大部分输入的中心作物(如我们稍后描述的,由于细尺度网络和图像转换的第一层,我们失去了一小块边界区域)。

  注意,输出的空间维数大于最上面的卷积特征图的空间维数。在将预测传递给精细网络之前,我们没有将输出限制到特征映射大小并依赖于硬编码的上采样,而是允许最顶层的完整层在更大的区域内学习模板(NYU Depth为74x55)。这些预期是模糊的,但将比8x6预测的上采样输出(顶部特征图大小)要好;本质上,我们允许网络根据特征学习自己的上采样。样本输出权值如图所示。

  除了Coarse输出层7是线性的外,所有隐藏层都使用整流线性单元进行激活。Dropout应用于全连接的隐藏层6。粗尺度网络的卷积层(1-5)在ImageNet分类任务[1]上进行预训练——在开发模型时,我们发现在ImageNet上进行预训练比随机初始化效果更好,尽管差异不是很大。

局部Fine-Scale网络

  在采用全局视角预测粗深度图之后,使用第二个细尺度网络进行局部细化。该组件的任务是更新它接收到的粗预测,使其与局部细节(如对象和墙边缘)保持一致。细尺度网络堆栈只包含卷积层,以及用于第一层边缘特征的池化阶段。

  Coarse-Scale网络可以看到整个场景,而细网络中输出单元的视场是45x45像素的输入。卷积层应用于目标输出大小的特征映射,允许在1/4的输入尺度上获得相对高分辨率的输出。

  更具体地说,粗输出作为附加的低级特征映射输入。通过设计,粗预测与第一个细尺度层(池化后)的输出具有相同的空间大小,将两者连接在一起(图中Fine 2)。后续图层使用零填充卷积保持这个大小。

  所有隐藏单位使用修正线性激活。最后一个卷积层是线性的,因为它预测了目标深度。先针对地真目标训练粗网络,然后在粗尺度输出固定的情况下训练细尺度网络(即在训练细网络时,不通过粗网络进行反向传播)

在这里插入图片描述

数据集

NYU Depth数据集

  NYU Depth数据集由464个室内场景组成。使用249个场景进行训练,215个场景进行测试。训练集有120K个唯一的图像,在晚上的场景分布(每个场景1200个)后将其洗牌到一个220K的列表中。在694图像NYU Depth v2测试集上进行测试(带有填充的深度值)。使用32批次的SGD训练2M样本的Coarse网络。保持它固定,训练1.5M样本的精细网络(给定已训练的粗网络的输出)。

KITTI数据集

  KITTI数据集[由车载相机和深度传感器在驾驶时捕捉的几个户外场景组成。使用来自原始数据“城市”、“住宅”和“道路”类别的56个场景。这些分为28个用于培训和28个用于测试。该数据集的深度是在不规则间隔点采样的。训练集每个场景有800张图像。训练集有20K个唯一的图像,在晚上的场景分布后将其洗牌到一个40K的列表中(包括重复的)。先训练1.5M的粗模型,然后训练1M的细模型。

数据扩充

  用随机在线变换对训练数据进行扩充:

  • 比例:输入和目标图像按s∈[1,1.5]进行缩放,深度除以s

  • 旋转:输入和目标旋转r∈[−5,5]°

  • 翻译:输入和目标随机裁剪到图1所示的大小

  • 颜色:输入值整体乘以随机RGB值c∈[0.8,1.2]

  • 翻转:输入和目标水平翻转的概率为0.5

实验

NYU Depth

  本文的网络在所有指标上都达到了最好的性能,与亚军相比获得了平均35%的相对增益。这个数据集打破了Make3D所做的许多假设,特别是地平面的水平对齐;因此,Make3D在此任务中的性能相对较差。重要的是,本文的方法在尺度相关和尺度不变的度量上都比它改进了,这表明我们的系统能够预测更好的关系和更好的平均值。
在这里插入图片描述
在这里插入图片描述

KITTI

  在这里,Make3D基线非常适合于数据集并获得了相对良好的结果。尽管如此,本文方法在所有指标上都优于它,平均相对收益为31%。在误差度量方面,细尺度网络并没有比粗尺度网络改善太多,但在定性输出中可以看到两者之间的差异。
在这里插入图片描述
在这里插入图片描述

总结

  从单幅图像中预测深度估计是一项具有挑战性的任务。然而,结合来自全局和局部视图的信息可以获得相当好地执行。本文系统通过使用两个深度网络来实现这一目标,一个是估计全局深度结构,另一个是在更好的分辨率上优化局部深度结构。并在NYU Depth和KITTI数据集达到了最先进的水平,有效地利用了完整的原始数据分布。

猜你喜欢

转载自blog.csdn.net/I_m_Gagaga/article/details/127601216