论文笔记_S2D.14-2014-NIPS_利用多尺度深度网络从单张图像预测深度图

目录

基本信息

摘要

1 介绍

2 相关工作

3 网络结构

3.1 Global Coarse-Scale Network

3.2 Local Fine-Scale Network

3.3 Scale-Invariant Error

3.4 Training Loss

3.5 Data Augmentation

4 Experiments

4.1 NYU depth dataset​

4.2 KITTI

4.3 效果


基本信息

  • 题目: Depth map prediction from a single image using a multi-scale deep network
  • 作者: David Eigen, Christian Puhrsch, Rob Fergus
    • Dept. of Computer Science, Courant Institute, New York University
  • 出处: Eigen, D., Puhrsch, C., & Fergus, R. (2014). Depth map prediction from a single image using a multi-scale deep network. In Advances in neural information processing systems (pp. 2366-2374).

摘要

预测深度是理解场景的3D几何形状的重要组成部分。 虽然对于立体图像而言,本地对应关系足以进行估计,但是从单个图像中查找深度关系并不那么直接,需要集成来自各种线索的全局和本地信息。 此外,这项任务本质上是模棱两可的,总的不确定性很大。 在本文中,我们提出了一种通过使用两个深层网络堆栈来解决此任务的新方法:一种基于整个图像进行粗略的全局预测,另一种可以在局部细化此预测。 我们还应用尺度不变误差来帮助测量深度关系而不是尺度。 通过将原始数据集用作训练数据的主要来源,我们的方法在NYU Depth和KITTI上均达到了最新的结果,并且无需超像素化即可匹配详细的深度边界。

1 介绍

估计深度是理解场景中的几何关系的一个重要组成部分。反过来,这种关系有助于提供更丰富的对象及其环境的表示,往往导致现有识别任务[18]的改进,以及许多进一步的应用,如3D建模[16,6]、物理和支持模型[18]、机器人[4,14],以及可能的咬合推理。虽然在基于立体图像或运动[17]的深度估计方面已有很多工作,但从单一图像进行深度估计的工作相对较少。
然而,单眼的情况经常出现在实践中:潜在的应用包括更好地理解许多分布在网络和社会媒体、房地产清单和购物网站上的图片。
这些包括许多室内和室外场景的例子。

有可能有几个原因,为什么单眼的情况,还没有解决到与立体的情况相同的程度。

  • 在[5]的立体情况下,只要有准确的图像对应,就可以确定地恢复深度。因此,立体深度估计可以减少到发展鲁棒的图像点对应-通常可以发现使用局部外观特征。
  • 相比之下,从单一图像估计深度需要使用单眼深度线索,如线角度和透视、物体大小、图像位置和大气效果。
  • 此外,场景的全局视图可能需要联系这些有效,而局部视差是足够的立体。
  • 此外,这项任务本质上是模棱两可的,而且是一个技术上不合适的问题:给定一张图像,无数个可能的世界场景可能产生了它。

当然,其中大多数在现实世界中是不可能的,因此深度仍然可以相当准确地预测。
不过,至少还有一个主要的不明确之处:全球规模。虽然极端的情况(例如一个正常的房间对一个玩具屋)不存在的数据,在房间和家具大小的适度变化是存在的。除了更常见的与尺度相关的错误之外,我们还使用一个尺度不变的错误来解决这个问题。这将注意力集中在一个场景中的空间关系上,而不是一般的比例,并且特别适用于应用程序,如3D建模,其中模型经常在后期处理中调整。

本文提出了一种从单幅图像中估计深度的新方法。

  • 我们使用一个神经网络直接返回深度:一个是估计场景的全局结构,另一个是利用局部信息细化它。
  • 除了逐点误差(pointwise error)之外,网络的训练使用了一种能明确说明像素位置之间深度关系的损失

我们的系统实现了NYU Depth和KITTI的最新估计率,以及改进的定性输出。

2 相关工作

与我们的工作直接相关的是几种从单张图像估计深度的方法。

  • Saxena等人[15]使用线性回归和MRF从一组图像特征中预测深度,随后将他们的工作扩展到Make3D[16]系统中,用于生成3D模型。然而,该系统依赖于图像的水平对齐,在控制较少的设置中会受到影响。
  • Hoiem等人[6]并没有明确地预测深度,而是将图像区域划分为几何结构(地面、天空、垂直),他们使用这些几何结构构建一个简单的场景3D模型。
  • 最近,Ladicky等人[12]展示了如何将语义对象标签与单眼深度特征集成在一起以提高性能;然而,他们依靠手工制作的特征和使用超像素分割图像。
  • Karsch等人[7]使用基于SIFT流[11]的kNN传递机制从单一图像中估计静态背景的深度,并将其与运动信息相结合,更好地估计视频中的移动前景主题。这可以实现更好的对齐,但需要整个数据集在运行时可用,并执行昂贵的对齐过程。

相比之下,我们的方法学习了一套更容易存储的网络参数,可以应用于实时图像。

更广泛地说,立体深度估计已经得到了广泛的研究。

  • Scharstein等人[17]提供了一个调查和评价许多方法的两帧立体通信,组织匹配,聚合和优化技术。
  • 在多视点立体视觉的一个创造性应用中,Snavely等人[20]对同一场景的许多未校准的消费者照片进行跨视点匹配,以创建公共地标的精确3D重建。
  • 机器学习技术也被应用到立体场景中,往往在放松对仔细相机对准的需要的同时获得更好的结果[8,13,21,19]。与这项工作最相关的是Konda等人[8],他们在图像补丁上训练一个分解自编码器,以从立体序列预测深度;然而,这依赖于立体视觉提供的局部位移。

也有一些基于硬件的解决方案用于单图像深度估计。

  • Levin等人的[10]使用改进的相机光圈来实现离焦深度,而Kinect和Kinect v2使用主动立体声和飞行时间来捕捉深度。

我们的方法在训练过程中间接使用这些传感器来提供地面真实深度目标;然而,在测试时,我们的系统是纯软件基础上,预测深度从RGB图像。

3 网络结构

该网络使用了两个stacks,一个是coarse-scale network,也是该模型的第一步,进行对图像深度的global level预测,然后coarse network的output会继续进入第二个fine-scale network,与原图像输入后concentrate。这样fine-scale network预测的details就可以整合到coarse network的预测上。

3.1 Global Coarse-Scale Network

可以看到输出的空间维度大于最顶部卷积feature map的维度。但是作者不限制output在feature map大小上,或者预测传递到最终网络之前依赖hardcoded的上采样,而是允许整个顶层学习更大区域上的模板(NYU depth为74x55)。预计这些数据会很模糊,但会比8x6预测(最大特征地图大小)的上采样输出更好。
所有layer都采用 ReLU激活函数,在第六层layer使用dropout。Coarse network cnn的1-5层在ImageNet Classification task上进行预训练,作者发现预训练的performance会比随机初始化网络好一些。

3.2 Local Fine-Scale Network

在通过coarse network估计出粗略的深度图后,使用Local Fine-Scale Network进行局部重建。此部分的任务是编辑接收到的粗略预测深度图,与局部细节比如object或者边缘等一样。
该部分网络除了第一层包含池化,都只有卷积层,在经历第一层后结果与coarse network的output融合,并进入第二层。同样该网络使用ReLU为激活函数。训练时首先根据ground-truth训练coarse network,当训练fine-scale network的时候,coarse network就不会再变换,即训练时不会后馈到coarse network。

3.3 Scale-Invariant Error

作者指出,找到场景的平均尺度就占了总误差的很大一部分,因此文章使用尺度不变误差来测量场景中各点之间的关系,而不考虑绝对全局尺度。下式即为作者定义的scale-invariant mean squared error:
在这里插入图片描述
其中yi为预测的深度图,yi* 为ground-true。α(y,y*)定义如下:
在这里插入图片描述
对于任意的预测值y,e^α都是最能与ground-true对应的尺度,不同尺度的y的倍数都有相同的误差,因此这是一个尺度不变性。
还有另外两种方式去形容这个度量方法:
在这里插入图片描述
其中di=logyi-logyi*,同样yi为预测的深度图,yi* 为ground-true。对于output中一对像素i,j,i、j之间要尽可能不一样且与对应的ground-true尽可能相似才能minimize error,且di、dj同方向时会有较低的error。

3.4 Training Loss

这里使用尺度不变误差作为损失函数
在这里插入图片描述
di=logyi-logyi*,λ ∈ [0,1]。λ=0等式就变成二范式约束,λ=1就恰好是尺度不变误差,作者在这里取λ=0.5发现提高了预测质量。
在训练中,许多深度图都会出现缺失值,尤其在目标边界,窗口和高亮度表面。作者在这里就将missing value pixels丢弃,计算时只计算有深度值的像素。

3.5 Data Augmentation

作者使用随机在线变换对训练数据进行扩充,方法有如下这些:

  • 尺度:输入和目标图像的尺度按照比例缩小s倍s∈[1,1.5],并且深度也除以s
  • 旋转:输入和目标旋转r[-5,5]
  • 平移:输入和目标随机裁剪成网络结构图中input的大小
  • 颜色:输入和输出全部乘以一个随机rbg值c∈[0.8,1.2]3。
  • 翻转:输入和输出将被0.5概率的随机水平翻转。

图像的缩放和平移并不保留真实空间的几何关系,要修正也很容易,只要将深度值除以尺度s就可以了。尽管平移操作不容易固定(他们有效的改变了相机和深度值的不兼容性),作者发现额外提供的数据能够benefit网络,即使场景有有轻微的改变。其他的平移、翻转和平面旋转,是几何上的保留。在测试时,作者使用一个1.0尺度缩放的中心区域的裁剪,没有旋转或者颜色改变。

4 Experiments

作者将网络在NYU Depth v2、KITTI两个训练集上训练,同时将该网络与Make3D和其他方法比较。对比实验结果如下:

4.1 NYU depth dataset
在这里插入图片描述

下图显示了该网络output与Make3D方法的比较在λ=0或者0.5的情况下:(其中L2代表loss为L2约束(λ=0),L2 scale-inv代表both L2 and scale-invariant loss(λ=0.5))
在这里插入图片描述
这里给出部分预测结果(a为input,b为coarse network的output,c为fine network的output,d为ground true)
在这里插入图片描述

4.2 KITTI

在这里插入图片描述


同样,下图为在KITTI 数据集上的部分预测结果,a为input,b为coarse network的output,c为fine network的output,d为ground true
在这里插入图片描述

4.3 效果

参考:NIPS 2014【论文笔记】Depth Map Prediction from a Single Image using a Multi-Scale Deep Network

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

惊鸿一博

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值