文章目录
High Quality Monocular Depth Estimation via Transfer Learning
paper:https://arxiv.org/pdf/1812.11941.pdf
code:https://github.com/ialhashim/DenseDepth
Abstract
从单张照片中进行准确的深度估计对于场景理解、三维重建等应用来说是一项基础性的任务。现有深度估计的算法产生的结果多是低分辨率、模糊的深度图。本文提供了一种利用迁移学习以实现高分辨率深度估计的算法。在标准的encoder-decoder结构的基础上,encoder 加载预训练网络的权重,辅以数据增强和训练的策略,使得我们的预测结果更为准确。尽管decoder结构简单,但我们仍能得到一个详细的高分辨率的深度图。我们的网络参数更少、训练迭代的轮次更少、物体边界的捕捉得更为准确,并在两个数据集上取得业界最好。
1. Introduction
现实世界的深度图在场景理解、增强现实、图像重聚焦和分割等方面有很大的用处。近期来深度估计的发展聚焦在二维图像的三维重建。尽管算法的效果在稳步提升,但深度图仍存在质量和分辨率不高的问题。最近的增强现实、场景深度合成和其他图像效果均需要更快和更高质量的三维重构来使其更具有可用性。对于此类运用,准确地重建深度图中深度的不连续性并避免当前CNN网络经常出现大的扰动是至关重要的。
基于我们对当前网络结构和训练策略实验性的分析,我们决定追求网络结构的简易性,以保证后续训练和修改的便利性。尽管我们的结构简单,或许正是因为简单的结构,相比于其他方法,我们生成的深度图拥有更高的精度和更好的可视化效果。为达到这一效果,我们使用了一个表现良好、预训练的网络,这一网络起初用于图像分类。基于迁移学习一个关键的优点在于,一旦其他领域模型取得更好的效果,能方便地、模块化地迁移运用到深度估计问题中。
三点贡献:
- 提出了一个简单的、基于迁移学习的模型,模型深度估计的结果具有更好的准确率和质量。相比于其他模型,本文模型生成的深度图能更好地捕捉物体的边界,并且模型参数更少、迭代伦次更少;
- 我们定义了一个loss函数,提出了一个学习策略和简单的数据增强方法,加速了模型的训练;
- 我们提出了一个合成的高逼真的室内场景数据集,有了更好的ground truth能更好评价CNNs网络的泛化性能。
我们在不同的数据集上测试并评估模型的表现,结果表明我们的模型不仅在标准的深度估计模型上取得很好的效果,而且在其他数据集上有很好的泛化性能。
2. Related work
从RGB图像中进行三维重建是一个病态问题。诸如场景覆盖、尺度模糊、半透明或反射材料等问题都会导致因无法从外观中导出几何特性而出现不准确的情况。在实践中,更准确的场景深度捕捉依赖于硬件的支持,例如雷达或IR-based sensors;或是需要用高质量相机拍摄的大量的来自不同视角的图像,后续辅以漫长且昂贵的离线重构。近年来,基于CNNs的方法能以实时的速度从单张或多张RGB图像中计算出深度图。
单目视觉深度估计
很多CNNs网络的方法将视为从RGB图像映射到深度图的回归问题[7, 23, 37, 14, 38, 9]。尽管这些模型的效果稳步提升,但在深度图的质量和分辨率上仍然有很大的改进空间。本文的目的是使用典型的神经网络结构,生成质量更高、边界更准确的深度图。我们的初步结果表明,通过利用在其他计算机视觉任务上表现良好的现有简单架构,可以实现对最新技术的改进。
多视角
使用CNN算法实现多视角立体图像的重构近期近期已经被提出[18]。[33]考虑了查看图像对这一子问题。[13]考虑了连续的三帧图像。[40]提出了基于联合关键帧的密集相机跟踪和深度图估计的方法。在本文中,我们目的是提高单张图像深度估计的表现。我们猜测通过单目相机深度估计模型所提取的特征能改善多角度立体图像重构的方法。
迁移学习
迁移学习已经被证实在很多不同的场景下有很大的用处。在近期的工作中,Zamir等人研究了迁移学习在不同任务下的效率,而很多任务就包括三维重构。我们的方法就很大程度依赖于迁移学习,所使用的编码器起初是用来进行图像分类的。我们发现使用这种没有对输入的空间分辨率做很激进的下采样的编码器倾向于产生更为清晰的深度估计值,特别是存在直连结构的时候。
编码解码器
编码解码的结构在很多和视觉相关的问题例如图像分割、光流估计和图像恢复等做出了显著的贡献。近年来,编码解码结构在很多监督或非监督深度估计的问题中取得了很大的成功。这些方法典型地使用一个或更多编码解码网络作为他们更大网络的一部分。在本文中,我们采用的是一个简单直接的带有直连结构编码解码网络。我们的结果表明,使用简单的编码解码结构是有可能达到很好效果的。
3. Proposed Method
在这一部分,介绍我们从RGB图像估计深度的方法。首先描述我们所使用的编码解码结构;其次讨论编码器解码器的复杂度与模型效果的关系;接下来我们针对该任务,提出了一个合适的损失函数;最后我们描述了加速训练的有效的数据增强策略。
3.1 Network Architecture
结构
图二展示了我们用于深度估计的编码解码网络。对于编码器,使用的是在ImageNet上预训练过的DenseNet-169,将输入的RGB图像编码成特征向量。这些特征向量随后被喂给一系列连续的上采样层,为了将最后的深度图构造成输入的一半分辨率。这些上采样层和它们相关的直连结构构成了解码器。我们的解码器不包含任何BN层或其他state-of-art方法里推荐的高级的层结构。
复杂度和表现
简单到出奇的结构却有很好的效果,自然而然引出一个问题,究竟是哪一个模块提高了深度图的精度。我们试验了不同state-of-art的编码器,比DenseNet-169简单和复杂的都有,同时我们还研究了不同的解码器类型。我们的实验结果发现,在用于深度估计的编码解码网络结构中,更复杂的卷及结构并不能提升效果。这使我们进一步实验,什么时候采用复杂的组件和结构。我们的实验表明由×2双线性上采样步骤后接两个卷积层效果非常好。
3.2 Learning and Inference
损失函数
深度回归问题标准的损失函数是考虑深度图真实值和深度回归网络预测值之间的差别。对损失函数的不同的考虑对训练的速度和深度估计的表现有很大的影响。在文献中,我们可以看到有很多变量被应用到损失函数中以用来优化神经网络。在我们的方法中,我们企图定义一个既最小化深度差别同时又惩罚了高频细节在深度图中失真的情况。这些细节一般和场景中物体的边界相关。
损失函数由三项组成。
注意到我们只对
L
d
e
p
t
h
L_{depth}
Ldepth定义了一个参数
λ
\lambda
λ,并根据经验将该参数设置为0.1。
这样一个损失函数存在的问题是,当深度真实值很大时,它们也会变得很大。为了补偿这一问题,我们考虑对深度取倒数。将目标深度图的
y
y
y定义为
y
=
m
/
y
o
r
i
g
y=m/y_{orig}
y=m/yorig,式中
m
m
m是场景中的最大值(例如NYU 数据集中取10m)。其他方法考虑了对深度值进行转换和对loss做log变换。
数据增强策略
通过几何和图像层面的变换的数据增强的方法是减少过拟合,提高模型泛化能力常用的方法。由于我们的网络被设计用于估计整个图像的深度图,因此并非所有几何变换都是合适的,因为图像域中的失真并不总是对地面实况深度具有有意义的几何解释。将垂直翻转应用于捕获室内场景的图像可能无助于学习预期的统计特性(例如地板和天花板)。因此我们只使用了水平的翻转,翻转概率为0.5.图像旋转是另外一种有用的数据增强方式,然而因为它给地面深度引入了无效的数据,因此我们也不使用它。在图像层面的变换上,我们发现通过改变图像的通道顺序,例如就将红色和绿色通道交换,既能提高效果,还能提高效率。我们将通道变换的概率设置为0.25.找到更好的数据增强方法和它们的概率值对于深度估计来说,在未来是一个有意思的课题。
4. Experimental Results
在这一部分我们会描述我们的试验结果,并和其他方法作对比。进一步会分析我们方法中不同模块的作用。最后我们会在一个新发布的数据集上测试我们模型的泛化能力和鲁棒性。
4.1 Datasets
NYU Depth v2
该数据集提供了室内场景分辨率为640480的图像和深度图。包括120K张训练样本和654张测试样本。我们训练使用了其中的50K张图像。深度缺失的值采用文献[26]中的方法进行填补。深度图中深度值的上限是10m。我们网络输出深度图的分辨率是320240.对于训练来说,输入的图像保持原来分辨率,gt下采样为320*240.这里我们并没有对图像进行裁剪,尽管有些图像由于失真预处理导致部分像素缺失。在测试阶段,我们输入全分辨率的测试图像,对输出的深度图2倍上采样,并按照文献的方法和gt进行评估。在测试阶段,测试的输出是测试图像和测试图像镜像输出的平均。
KITTI
KITTI是一个提供立体图像和安装在移动车上相对应激光扫描的室外场景。RGB图像分辨率为1241376,但对应的深度图数据密度很低且有很多的缺失值。我们的训练使用了26K张左视角的图像,对应697张测试样本对应的场景。缺失值按照之前提到的方法进行填补。深度图中深度值的上限是80m。由于我们编码器下采样的倍数为32,因此我们将原始图像通过双线性采样到1280384的分辨率。在测试阶段,我们首先将图像缩放到特定的分辨率,之后将输出的深度图从624*192上采样到原始图像的分辨率。最终的输出结果同样是原始图像和原始图像镜像输出的平均。
4.3 Evaluation
定量评价
6个评价指标:
定性结果
我们在NYU数据集上做了三个实验用三种方法来评价我们结果的好坏。
第一种是基于感官的定性评价方法,通过预测的深度图,在图像的角度,观测和现实事物的相似性。我们将真实值和预测值都渲染成灰度图,然后计算整个数据集上的平均结构相似性指数(mSSIM)。
第二种方法考虑了深度图中形成边缘。对于每一个样本,我们用Sobel的梯度计算方法计算了真实值和预测值梯度的大小,然后筛选出大于0.5的值,计算整个数据集上F1值的平均值。
第三种方法计算预测值和深度值的余弦距离,同样取整个数据集上的平均值。