标题:Towards Robust Monocular Depth Estimation: Mixing Datasets for Zero-shot Cross-dataset Transfer
原文:https://arxiv.org/abs/1907.01341v3
开源:https://github.com/isl-org/MiDaS (2.2k Stars)
发表:TPAMI 2022 (accepted August 2020)
编者注:一个可能需要纠正的翻译是,原文中的scale,可能应译为“缩放”,尤其是与shift(平移)同时出现时。但本译文中都翻译做“尺度”
摘要:单目深度估计的成功依赖于大量多样的训练集。由于在不同环境中大规模获取密集真值深度的相关挑战,出现了许多具有不同特征和偏置的数据集。我们开发的工具可以在训练期间混合多个数据集,即使它们的标注不兼容。特别是,我们提出了一个对深度范围和尺度变化不变(invariant to changes in depth range and scale)的鲁棒训练目标,提倡使用原则性的多目标学习(principled multi-objective learning)来组合来自不同来源的数据,并强调了用辅助任务对编码器进行预训练的重要性。有了这些工具,我们对五个不同的训练数据集进行了实验,包括一个新的海量数据源:3D电影(3D films)。为了证明我们方法的泛化能力,我们使用Zero-shot跨数据集迁移,即我们在训练期间未看到的数据集上进行评估。实验证实,混合来自互补源的数据大大提高了单目深度估计。我们的方法在不同的数据集上明显优于竞争对手的方法,为单目深度估计创造了新的技术状态。
1 引言
深度是物理环境中动作最有用的中间表示之一[1]。尽管单目深度估计具有实用性,但它仍然是一个挑战性的问题,严重缺乏约束。要解决这个问题,必须利用许多(有时是微妙的)视觉线索,以及长程上下文和先验知识。这需要基于学习的技术[2],[3]。
为了学习在各种场景中有效的模型,我们需要同样多样的训练数据,并捕捉视觉世界的多样性。关键挑战是以足够的规模获取此类数据。在动态场景(如结构光或飞行时间)中提供密集真值深度的传感器具有有限的范围和操作条件[6],[7],[8]。激光扫描仪价格昂贵,只能在场景运动时提供稀疏的深度测量。立体相机是一个很有前途的数据来源[9],[10],但在不同的环境中大规模收集合适的立体图像仍然是一个挑战。运动到结构(structure from motion,SfM)重建已用于构建各种场景中的单目深度估计训练数据[11],但结果不包括独立移动的对象,并且由于多视点匹配的限制,结果不完整。总的来说,现有的数据集都不够丰富,无法支持在不同场景的真实图像上稳定工作的模型训练。目前,我们面临着多个数据集,这些数据集可能相互补充,但各自存在偏置和不完整。
在本文中,我们研究了训练鲁棒的单目深度估计模型的方法,该模型有望在不同环境中执行。我们开发了新的损失函数,该函数对数据集之间的主要不兼容源(包括未知和不一致的尺度和基线)保持不变。我们的损失使我们能够对通过各种传感方式获得的数据进行训练,如立体摄像机(可能存在未知校准)、激光扫描仪和结构光传感器。我们还量化了用于单目深度估计的各种现有数据集的价值,并探索了在训练期间混合数据集的最佳策略。特别是,我们表明,与原始混合策略相比,基于多目标优化的原则性方法[12](principled approach based on multi-objective optimization)导致了改进的结果。我们进一步根据经验强调了高容量编码器的重要性,并显示了在大规模辅助任务上预训练编码器的unreasonable的有效性。
我们的广泛实验(大约六个GPU月的计算)表明,在来自不同来源的丰富多样的图像集上训练的模型,通过适当的训练程序,可以在各种环境中提供最先进的结果。为了证明这一点,我们使用了Zero-shot 跨数据集迁移的实验协议。也就是说,我们在某些数据集上训练模型,然后在训练期间未见的其他数据集上测试其性能。直觉是,Zero-shot 跨数据集性能比在单个数据集的子集上进行训练和测试更可靠地反映了“真实世界”的性能,相同的数据集在很大程度上表现出相同的偏置[13]。
在对六个不同数据集的评估中,我们在定性和定量上都优于现有技术,并为单目深度估计设置了新的技术状态。示例结果如图1所示。
2 相关工作
单目深度估计的早期工作使用基于MRF的公式[3]、简单的几何假设[2]或非参数方法[14]。最近,通过利用卷积网络的表达能力直接从输入图像回归场景深度,取得了重大进展[15]。已经提出了各种架构创新来提高预测精度[16],[17],[18],[19],[20]。这些方法需要真值深度进行训练,通常使用RGB-D相机或激光雷达传感器获取。其他人利用现有的立体匹配方法来获得监督的真值[21],[22]。这些方法往往在用于训练它们的特定类型场景中工作良好,但由于训练数据的规模和多样性有限,不能很好地推广到无约束场景。
Gag等人[9]建议使用校准的立体摄像机进行自监督。虽然这大大简化了训练数据的获取,但仍然没有解除对非常具体的数据机制(regime)的限制。从那时起,各种方法利用了自监督,但它们要么需要立体图像[10]、[23]、[24],要么利用apparent motion[24]、[25]、[26]、[27],因此难以应用于动态场景。
我们认为,用于单目深度估计的高容量深度模型原则上可以在相当广泛且不受约束的场景范围内运行。限制他们表现的是缺乏跨越如此广泛条件的大规模、密集的真值。常用的数据集以同质场景布局为特征,例如特定地理区域[3]、[28]、[29]的街道场景,或室内环境[30]。我们特别注意到,这些数据集仅显示少量动态对象。基于具有如此强偏置的数据进行训练的模型在约束较少的环境中容易失败。
已有一些努力创建更多样化的数据集。Chen等人[34]使用众包来稀疏地标注从网络收集的图像中的顺序关系。Xian等人[32]从网络上收集了一个立体数据集,并使用现成的工具来提取密集的真值视差;虽然这个数据集相当多样化,但它只包含3600张图像。Li和Snavely[11]使用SfM和多视图立体(MVS)重建了许多(主要是静态)3D场景以供监督。Li等人[38]使用SfM和MVS从模仿人体模特的人的视频中构建数据集(即,当摄像机在场景中移动时,他们的动作被冻结)。Chen等人[39]提出了一种自动评估稀疏SfM重建质量的方法,以构建大型数据集。Wang等人[33]从来自网络的立体视频中构建了一个大型数据集,而Cho等人[40]使用手持立体摄像机收集了一个室外场景数据集。Gordon等人[41]估计YouTube视频的内在参数,以便将其用于训练。从互联网收集的大规模数据集[33],[38]需要大量的预处理和后处理。由于版权限制,他们通常只提供视频链接,而这些链接经常无法使用。这使得再现这些数据集具有挑战性。
据我们所知,在此背景下,以前从未探索过多个数据源的受控混合。Ummenhofer等人[42]提出了一个双视图结构和运动估计模型,并在多个较小数据集的联合(静态)场景数据集上对其进行了训练。然而,他们没有考虑优化混合的策略,也没有研究组合多个数据集的影响。类似地,Facility等人[43]使用具有天真混合策略的多个数据集来学习具有已知相机内参的单目深度。他们的测试数据与他们一半的训练数据非常相似,即室内场景的RGB-D录制。
3 现有数据集
已经提出了适合于单目深度估计的各种数据集,即,它们由具有某种形式的相应深度标注的RGB图像组成[3]、[11]、[28]、[29]、[30]、[31]、[32]、[33]、[34]、[35]、[36]、[37]、[38]、[40]、[44]、[45]、[46]、[47]、[48]。数据集在捕获的环境和对象(室内/室外场景、动态对象)、深度注释类型(稀疏/密集、绝对/相对深度)、精度(激光、飞行时间、SfM、立体、人类注释、合成数据)、图像质量和相机设置以及数据集大小方面有所不同。
每个数据集都有自己的特点,也有自己的偏置和问题[13]。高精度数据很难大规模获取,并且对于动态对象存在问题[35],[47],而来自互联网来源的大型数据收集具有有限的图像质量和深度精度以及未知的相机参数[33],[34]。对单个数据集的训练可以在同一数据集(相同的相机参数、深度注释、环境)的相应测试分割上获得良好的性能,但对具有不同特征的未见数据的泛化能力可能有限。相反,我们建议在一组数据集(a collection of datasets)上进行训练,并通过在训练过程中未见的不同数据集上测试,证明这种方法可以显著增强泛化能力。我们在表1中列出了我们的训练和测试数据集及其各自的特征。
训练数据集。 我们用五个现有的和互补的数据集进行实验以进行训练。ReDWeb[32](RW)是一个小的、精心策划的数据集,其特征是使用相对较大的立体基线获得的具有真值的多样化和动态场景。Mega深度[11](MD)更大,但主要显示静态场景。由于宽基线多视图立体重建用于采集,因此背景区域中的真值通常更准确。WSVD[33](WS)由从网络获得的立体视频组成,并具有多样的动态场景。此数据集仅有指向立体视频的一组链接。没有提供真值。因此,我们根据原作者概述的程序重建了真值。DIML Indoor[31](DL)是一个主要静态室内场景的RGB-D数据集,使用Kinect v2捕捉。
测试数据集。 为了衡量单目深度估计模型的泛化性能,我们根据多样性和真值准确性选择了六个数据集。DIW[34]是高度多样的,但仅以稀疏序数关系(sparse ordinal relations)的形式提供真值。ETH3D[35]在静态场景中具有高度精确的激光扫描真值。Sintel[36]为合成场景提供了完美的真值。KITTI[29]和NYU[30]是具有特征偏置(characteristic biases)的常用数据集。对于TUM数据集[37],我们使用了室内环境中人类的动态子集[38]。请注意,我们从不在任何这些数据集上微调模型。我们将此实验过程称为Zero-shot 跨数据集迁移。
4 3D MOVIES
为了补充现有数据集,我们提出了一个新的数据源:3D电影(MV)。3D电影以各种动态环境中的高质量视频帧为特色,从故事和对话驱动的好莱坞电影中的以人为中心的图像,到纪录片中的风景和动物的自然场景。虽然数据不提供度量深度,但我们可以使用立体匹配来获得相对深度(类似于RW和WS)。我们的动机是数据的规模和多样性。3D电影提供了在精心控制的条件下拍摄的最大已知立体对的源(source of stereo pairs)。这提供了从不断增长的内容库中获取数百万高质量图像的可能性。我们注意到3D电影已单独用于相关任务[49],[50]。我们将通过将它们与其他互补数据源相结合来展示它们的全部潜力。与in the wild类似数据收集[32]、[33]、[38]不同,此数据源不需要手动过滤有问题的内容。因此,数据集可以很容易地扩展或适应特定需求(例如,关注跳舞的人或自然纪录片)。
挑战。 电影数据有其自身的挑战和缺陷。制作立体电影的主要目的是提供视觉上令人愉悦的观看体验,同时避免观众不适[51]。这意味着任何给定场景的视差范围(也称为depth budget)都是有限的,并且取决于艺术和心理物理因素。例如,为了在短时间内产生非常明显的立体效果,通常在电影的开头和结尾增加视差范围。中间的depth budget可能会更低,以便观看更舒适。因此,立体视觉师(Stereographers)根据内容、过渡甚至场景节奏来调整depth budget[52]。
因此,立体设备的摄像机之间的焦距、基线和会聚角(convergence angle)是未知的,即使在一部电影中,场景之间也会发生变化。此外,与直接从标准立体相机获得的图像对不同,电影中的立体对通常包含正视差和负视差,以允许在屏幕前方或后方感知物体。此外,与屏幕相对应的深度取决于场景,通常在后期制作中通过移动图像对(shifting the image pairs)来修改。我们描述了解决这些挑战的数据提取和训练程序。
电影选择和预处理。 我们选择了23部不同的电影。选择基于以下考虑:1)我们只选择了使用物理立体摄像机拍摄的电影。(有些3D电影是用单目相机拍摄的,艺术家在后期制作中添加了立体效果。)2)我们试图平衡现实主义和多样性。3) 我们只选择了蓝光格式的电影,因此可以提取高分辨率图像。
我们以1920x1080分辨率和每秒24帧(fps)提取立体图像对。电影具有不同的纵横比,导致在帧的顶部和底部出现黑色条,由于后期制作,一些电影沿帧边界有细黑色条。因此,我们将所有帧居中裁剪为1880x800像素。我们使用章节信息(蓝光元数据)将每部电影分割成单独的章节。我们放弃了第一章和最后一章,因为它们通常包括introduction and credits。
我们使用阈值为0.1的FFmpeg[53]的场景检测工具来提取单个片段。我们丢弃短于一秒的片段,以过滤出混乱的动作场景和在对话中快速切换主角的高度相关片段。为了平衡场景多样性,我们采样每个剪辑的前24帧,对于更长的剪辑,我们额外地每四秒采样24帧。由于多个帧是同一剪辑的一部分,因此整个数据集高度相关。因此,我们进一步以4 fps对训练集进行下采样,以1 fps对测试和验证集进行下采样。
视差提取。 提取的图像对可用于使用立体匹配来估计视差图。不幸的是,最先进的立体匹配器在应用于电影数据时表现不佳,因为匹配器被设计和训练为仅在正视差范围内匹配。该假设适用于标准立体相机的校正输出,但不适用于从立体胶片提取的图像对。此外,由于深度预算(depth budget)有限,3D电影中遇到的视差范围通常小于标准立体设置中常见的范围。
为了缓解这些问题,我们将现代光流算法[54]应用于立体对。我们保留流的水平分量作为视差的代理。光流算法自然地处理正负视差,并且通常对于中等大小的位移表现良好。对于每个立体对,我们使用左相机作为参考,并提取从左到右图像的光流,反之亦然。我们执行左右一致性检查,并将视差差异超过2个像素的像素标记为无效。我们根据Wang[33]等人的指导原则自动过滤出视差质量视差的帧:如果超过所有像素的10%的垂直视差大于2像素,水平视差范围小于10像素,或者通过左右一致性检查的像素百分比小于70%,则帧被拒绝。在最后一步中,我们使用预训练的语义分割模型[55]检测属于天空区域的像素,并将它们的视差设置为图像中的最小视差。
表2显示了所选电影的完整列表以及使用自动清洗管道过滤后剩余的帧数。注意,由于不同的运行时间以及不同的视差质量,每个电影中提取的帧数会出现差异。我们使用19部电影中的帧进行训练,并分别留出两部电影用于验证和两部电影进行测试。结果数据集的示例帧如图2所示。
5 在不同数据上训练
在不同数据集上进行单目深度估计的训练模型是一个挑战,因为真值的形式不同(见表1)。它可以是绝对深度(来自基于激光的测量或具有已知校准的立体摄像机)、上至未知尺度的深度(depth up to an unknown scale)(来自SfM)或视差图(来自未知校准的立体相机)的形式。合理训练方案的主要要求是在适当的输出空间中进行计算,该输出空间与所有真值表示相兼容,并且在数值上表现良好。我们还需要设计一个足够灵活的损失函数,以处理各种数据源,同时优化利用所有可用信息。
我们确定了三大挑战。1) 深度的内在不同表示:直接深度表示与逆深度表示。2) 尺度模糊性:对于某些数据源,深度上至未知尺度。3) 移位模糊性:一些数据集仅提供了未知尺度的视差和全局视差偏移,这是由于后处理导致的未知基线和主点水平移位的函数[33]。
We identify three major challenges. 1) Inherently different representations of depth: direct vs. inverse depth representations. 2) Scale ambiguity: for some data sources, depth is only given up to an unknown scale. 3) Shift ambiguity: some datasets provide disparity only up to an unknown scale and global disparity shift that is a function of the unknown baseline and a horizontal shift of the principal points due to post-processing [33].
尺度和位移不变损失。Scale- and shift-invariant losses. 我们建议在视差空间(逆深度到尺度和位移,inverse depth up to scale and shift)中执行预测,同时使用一系列尺度和位移不变的密集损失,以处理上述分歧。设表示具有有效真值的图像中的像素数,并设为预测模型的参数。设是视差预测,设为相应的真值视差。单个像素由下标索引。
我们将单个样本的尺度和移位不变损失定义为:
(1)
其中,和是预测和真值的缩放和移位版本(scaled and shifted versions),定义了损失函数的特定类型。
令、表示尺度和平移的估计量(estimators of the scale and translation)。为了定义有意义的尺度和位移不变损失,一个合理的要求是预测和真值的尺度和位移应适当对齐(prediction and ground truth should be appropriately aligned with respect to their scale and shift),即我们需要确保和。我们提出了两种不同的策略来执行此对齐。
第一种方法基于最小二乘准则将预测与真值对齐:
(2)
其中,和分别是对齐的预测和真值。因子和可以通过将(2)重写为标准最小二乘问题以封闭形式有效地确定:令和,然后我们可以将目标重写为:
(3)
它具有闭式解:
(4)
我们设来定义尺度和移位不变的均方误差(MSE)。我们将此损失表示为。
MSE对异常值的存在并不鲁棒。由于所有现有的大规模数据集只提供不完美的真值,我们推测鲁棒的损失函数可以改善训练。因此,我们基于尺度和位移的鲁棒估计来定义替代的鲁棒损失函数:
, (5)
我们将预测结果和真值进行了对齐,以实现零平移和单位尺度(We align both the prediction and the ground truth to have zero translation and unit scale):
, (6)
我们定义了两种鲁棒损失。第一个,我们称为,测量绝对偏差。第二个鲁棒损失的定义通过修剪(trimming)每个图像中20%的最大残差,而不管其幅度(magnitude):
(7)
其中且(根据ReDWeb数据集的实验来经验设置)。注意,这与通常使用的M-估计相反(M-estimators,),通常使用的M-估计中大残差的影响只是向下加权的。我们调整的理由是,真值中的异常值不应影响训练。
相对损失函数。Related loss functions. 在单目深度估计模型的训练中,考虑未知或变化的尺度的重要性早就被认识到了。Eigen等人[15]提出了对数深度空间(log-depth space)中的尺度不变损失。他们的损失可以写成:
(8)
其中和是未知尺度的深度(depths up to unknown scale)。(8)和都考虑了预测的未知尺度,但只有考虑了未知的全局视差偏移。此外,损失在不同的深度表示上评估。我们的损失是在视差空间中定义的,它在数值上是稳定的,并且与相对深度的常见表示兼容。
Chen等人[34]提出了基于序数关系的相对深度估计的一般适用损失:
其中编码点对的真值序数关系。这鼓励当时将点推得尽可能远,而当时,将它们拉到相同的深度。Xian等人[32]建议通过从密集真值中随机采样点对来稀疏地评估这种损失。相比之下,我们提出的损失考虑了所有可用数据。
最近,Wang等人[33]提出了归一化多尺度梯度(NMG)损失。为了在视差空间中实现平移不变性和尺度不变性,他们在多个尺度上评估真值和重缩放估计之间的梯度差:
(10)
相比之下,我们的损失直接根据真值视差值进行评估,同时也考虑了未知尺度和平移。虽然从概念上讲,序数损失和NMG都可以应用于任意深度表示,因此适合混合不同的数据集,但我们将证明,我们的尺度不变和平移不变的损失变体可以始终获得更好的性能。
最终损失。 为了定义完全损失,我们将多尺度、尺度不变梯度匹配项[11]应用于视差空间。该术语将不连续性偏置为尖锐,并与真值中的不连续性一致(This term biases discontinuities to be sharp and to coincide with discontinuities in the ground truth)。我们将梯度匹配项定义为:
(11)
其中,表示尺度的视差图的差异。我们使用个尺度级别(scale levels),将每个级别的图像分辨率减半。注意,该项与相似,但计算尺度(the scaling s)的方法不同。
对于一个训练集,我们的最终损失是:
(12)
其中是训练集大小,设置为0.5。
混合策略。 虽然我们的损失函数以及对预测空间的选择,使得可以混合数据集,但目前还不清楚在随机优化算法的训练过程中,不同的数据集应该以何种比例集成。我们在实验中探索了两种不同的策略。
第一种朴素的策略是在每个minibatch中以相等比例混合数据集。对于大小为的小批量,我们从每个数据集中抽取个训练样本,其中表示不同数据集的数量。这一策略确保所有数据集在有效的训练集中得到平等的展示,而不管每个数据集的大小。
我们的第二个策略探索了一种更具原则性的方法,我们将帕累托最优多任务学习的最新程序与我们的设置相适应[12]。我们将每个数据集上的学习定义为一个单独的任务,并在数据集上寻求近似的帕累托最优(即,在不增加至少一个其他数据集的损失的情况下,不能减少任何训练集的损失,a solution where the loss cannot be decreased on any training set without increasing it for at least one of the others)。形式上,我们使用[12]中提出的算法来最小化多目标优化准则:
(13)
其中模型参数在数据集之间共享。
6 实验
我们从Xian等人的实验设置开始。[32]并使用他们基于ResNet的[56]多尺度架构进行单图像深度预测。我们使用预训练的ImageNet[57]权重初始化编码器,并随机初始化其他层。对于随机初始化层,我们使用Adam[58],学习率为10-4;对于预训练的层,学习率为10−5,并将指数衰减率设置为=0.9和=0.999。图像以50%的几率水平翻转,并随机裁剪并调整大小为384×384,以数据增强并在不同输入图像上保持纵横比(maintain the aspect ratio across different input images)。未使用其他数据增强。
随后,我们对损失函数进行了消融研究,因为我们推测ImageNet预训练对性能以及编码器架构有显著影响。我们使用性能最佳的预训练模型作为数据集混合实验的起点。我们使用的批量大小,即当混合三个数据集时,批量大小为24。当比较不同大小的数据集时,术语“epoch”没有明确定义;因此,我们将一个epoch表示为处理72000个图像,大致相当于MD和MV的大小,并训练60个epoch。我们将所有数据集的真值视差平移并缩放(shift and scale)到范围[0,1]。
测试数据集和指标。
对于损失和编码器的消融研究,我们使用了RW(360幅图像)、MD(2963幅图像–官方验证集)和MV(3058幅图像–见表2)的held-out验证集。对于所有训练数据集混合实验和与现有技术的比较,我们测试了一组训练期间从未见过的数据集:DIW、ETH3D、Sintel、KITTI、NYU和TUM。对于DIW[34],我们为消融研究从DIW训练集创建了10000张图像的验证集,并使用了74441张图像的官方测试集,与现有state of the art相比时。对于 NYU,我们使用了官方测试集(654张图像)。对于KITTI,我们使用官方验证集的交集进行深度估计(具有改进的真值深度[59])和Eigen测试集[60](161幅图像)。对于ETH3D和Sintel,我们使用了真值可用的整个数据集(分别为454和1064张图像)。对于TUM数据集,我们使用了室内环境中人类的动态子集[38](1815张图像)。
对于每个数据集,我们使用符合该数据集中真值的单一度量。对于DIW,我们使用加权人类不同意率(Weighted Human Disagreement Rate,WHDR)[34]。对于基于相对深度的数据集,我们测量视差空间(MV、RW、MD)中的均方根误差(root mean squared error)。对于提供精确绝对深度(ETH3D,Sintel)的数据集,我们测量深度空间(AbsRel)中相对误差的平均绝对值。最后,我们使用的像素百分比来评估KITTI、NYU和TUM的模型[15]。跟随[10],对于深度空间中评估的数据集,我们将预测限制在适当的最大值。对于ETH3D、KITTI、NYU和TUM,深度上限设置为最大真值深度值(分别为72、80、10和10米)。对于Sintel,我们对真值深度低于72米的区域进行评估,因此使用72米的深度上限。对于我们的所有模型和基线,我们在测量误差之前,对每个图像的预测和真值进行缩放和平移。我们基于最小二乘准则在逆深度空间中执行对齐(alignment)。由于在多个数据集上进行评估时,绝对值很快变得难以解释,因此我们还介绍了与适当的基线方法相比,性能的相对变化。
评估的输入分辨率。 我们调整测试图像的大小,使较大的边等于384像素,而较小的边被调整为32像素的倍数(编码器施加的限制),同时保持纵横比尽可能接近原始纵横比。由于KITTI的很宽的宽高比,该策略将导致非常小的输入图像。因此,在这个数据集上,我们调整较小边长,使其等于384个像素,并采用相同的策略,否则将保持纵横比。(We thus resize the smaller axis to be equal to 384 pixels on this dataset and adopt the same strategy otherwise to maintain the aspect ratio)
我们所比较的大多数最先进的方法都专门针对特定的数据集(具有固定的图像尺寸),因此没有指定如何在推断过程中处理不同的图像大小和纵横比。我们试图根据评估脚本和训练维度,为所有方法找到最佳性能设置。对于在正方形patches 上训练的方法[32],我们遵循我们的设置,将较大的边设置为训练图像边长,并调整较小的边,使纵横比尽可能接近原始值。对于具有非正方形patches 的方法[11],[33],[34],[38],我们将较小的边固定到较小的训练图像边长。对于DORN[19],我们遵循了他们的平铺协议(tiling protocol),分别将图像大小调整为NYU和KITTI评估所规定的尺寸。对于Monodepth2[24]和Struct2Deph[27],它们都是在KITTI上训练的,因此期望非常宽的宽高比,我们使用反射填充来填充输入图像以获得相同的宽高比、调整大小到它们的特定输入维度,并将结果预测裁剪到原始目标维度。对于模型权重可用于不同训练分辨率的方法,我们评估了所有方法,并报告了性能最佳的变体的数值。
所有预测都被重新调整到真值分辨率,以便进行评估。
损失函数的比较。 我们在图3中显示了不同损失函数对验证性能的影响。我们使用RW训练具有不同损失的网络。对于序数损失(ordinal loss,参见等式(9)),我们随机抽样5000个点对[32]。在适当的情况下,我们将损失与梯度正则化项(11)相结合。通过在(1)中固定,我们还测试了视差空间中的尺度不变(但不是移位不变)MSE。训练的模型与我们对Xian[32]等人的重新实施相对应。图3显示,我们提出的修剪(trimmed)MAE损失在所有数据集上产生了最低的验证错误。因此,我们使用进行以下所有实验。
编码器的比较。 我们在图4中评估了编码器架构的影响。我们使用Xian[32]等人最初使用的ResNet-50[56]编码器定义模型,作为我们的基线,并显示了在不同编码器时性能的相对改善(越高越好)。我们测试了ResNet-101、ResNeXt-101[61]和DenseNet-161[62]。所有编码器都在ImageNet上进行了预训练[57]。对于ResNeXt-101,我们还使用了一个变体,该变体在ImageNet上训练之前用大量弱监督数据(WSL)语料库进行了预训练[63]。所有型号都在RW上进行了微调。
我们观察到,使用更好的编码器可以显著提高性能。高容量编码器的性能优于基线。在弱监督数据上预训练的ResNeXt-101编码器的性能明显优于仅在ImageNet上训练的相同编码器。我们发现预训练至关重要。具有随机初始化的ResNet-50编码器的网络平均性能比其预训练的对应网络差35%。通常,我们发现编码器的ImageNet性能是其在单目深度估计中性能的一个强有力的预测因素。这是令人鼓舞的,因为在图像分类方面取得的进步可以直接在鲁棒的单目深度估计中产生增益。与基线相比,性能提升是显著的:相对提高了15%,没有任何特定任务的调整。我们使用ResNeXt-101-WSL进行所有后续实验。
不同数据集的训练。 我们在表3和表4中评估了不同训练数据集的泛化性。虽然更专业的数据集在类似的测试集上获得更好的性能(DL用于室内场景,MD用于ETH3D,DL for indoor scenes or MD for ETH3D),但其余数据集的性能有所下降。有趣的是,单独使用的每一个数据集的平均泛化性能都比仅使用较小但经过精心策划的RW数据集差,即兼容数据集的收益平均被其他数据集的减少所抵消(the gains on compatible datasets are offset on average by the decrease on the other datasets)。
RW、MV和WS的性能差异特别有趣,因为它们具有相似的特性。虽然比RW大得多,但MV和WS都显示出较差的单独性能。这可以部分解释为由于这些数据集的视频性质而产生的冗余数据,以及RW中可能更严格的过滤(人类专家删除了具有明显缺陷的样本)。比较WS和MV,我们发现MV导致了更泛化的模型,可能是因为图像的更受控性质导致了更高质量的立体对。
对于我们的后续混合实验,我们使用表3作为参考,即我们从表现最好的单个训练数据集开始,并连续将数据集添加到混合中。我们在表5中显示了哪些数据集包含在各个训练集中。为了更好地理解电影数据集的影响,我们还显示了我们在除电影之外的所有数据集上训练的结果(MIX 4)。我们总是从预训练的RW基线开始训练。
表6和表7显示,与使用单独的数据集相比,混合多个训练集始终提高了相对于基线的性能。然而,我们也看到,当使用朴素混合时,添加数据集并不能无条件地提高性能(参见MIX 1 vs. MIX 2)。表8和9报告了Pareto optimal数据集混合的类似实验结果。我们观察到,这种方法比原始混合策略有所改进。它还能够更一致地利用其他数据集。将所有五个数据集与帕累托最优混合相结合,得到了性能最佳的模型。我们在图5中对所得模型进行了定性比较。
与现有技术的对比。 表10和表11中,我们将我们的最佳模型与各种最先进方法进行了比较。每个表的顶部与未在任何评估数据集上微调的基线进行比较(即,与我们的模型类似的Zero-shot 迁移)。底部部分显示了对数据集子集进行微调的基线,以供参考。在训练集一栏中,MC指的是人体模型挑战[38],CS指的是城市景观[45]。A.→ B表示A上的预训练和B上的微调。
我们的模型在Zero-shot性能方面以令人满意的优势优于基线。注意,我们的模型在TUM数据集的子集上优于Li等人的人体模型挑战模型[38],该数据集由Li等人专门策划,以展示其模型的优势。我们展示了基于ResNet-50(Ours–small)的更小编码器的模型变体的其他结果。这种架构相当于Xian等人提出的网络[32]。较小的模型也以令人满意的优势优于现有技术。这表明,我们模型的强大性能不仅是由于网络容量的增加,而且从根本上是由于所提出的训练方案。
针对一个特定数据集训练的一些模型(如表下部的KITTI或NYU)在这些单独的数据集上表现非常好,但在所有其他测试集上表现明显更差。对单个数据集的微调会导致对特定环境的强烈偏好。这在某些应用中是可取的,但如果模型需要推广,则不适合。我们的模型与四个表现最好的竞争对手的定性比较如图6所示。
其他定性结果。 图7显示了DIW测试集的其他定性结果[34]。我们展示了一组不同的输入图像的结果,这些图像描绘了各种物体和场景,包括人类、哺乳动物、鸟类、汽车以及其他人造和自然物体。这些图像包括室内、街道和自然场景、各种照明条件和各种摄像机角度。此外,拍摄对象的范围从近景到远景都有所不同。
我们在补充视频https://youtu.be/D46FzVyL9I8中显示了DAVIS视频数据集[64]的定性结果注意,每个帧都是单独处理的,即没有以任何方式使用时间信息。对于每个剪辑,联合缩放和平移逆深度图以进行可视化。数据集由一组不同的视频组成,包括人类、动物和汽车。这个数据集是用单目相机拍摄的,因此没有可用的真值深度信息。
Hertzmann[65]最近观察到,我们的公开可用模型即使在抽象的线条图上也能提供可信的结果。类似地,我们在图8中显示了具有不同抽象级别的绘图和绘画的结果。我们可以定性地证实[65]中的发现:即使在相对抽象的输入上,该模型也显示出估计可信相对深度的惊人能力。这似乎是正确的,只要一些(粗糙的)深度线索,如阴影或消失点存在于艺术品中。
故障案例。 我们确定了模型的常见故障案例和偏置。图像具有自然偏置,其中图像的较低部分比较高图像区域更接近相机。当随机抽样两个点并将较低的点分类为更接近相机时,[34]与人类注释器的一致率为85.8%。我们的网络也了解到了这种偏置,在图9第一行所示的一些极端情况下可以观察到这种偏置。在左边的示例中,模型无法恢复地平面,可能是因为输入图像旋转了90度。在右侧图像中,在图像的下部,距离相机大约相同距离的小球被重建为更接近相机。这种情况可以通过用旋转图像增强训练数据来防止。然而,尚不清楚图像旋转不变性是否是该任务的理想特性。
图9的第二行显示了另一个有趣的失败案例。绘画、照片和镜子通常不被正确地处理。网络基于反射器上描绘的内容而不是预测反射器本身的深度来估计深度。
其他故障案例显示在剩余的行中。强边缘会导致产生幻觉的深度不连续性。在某些情况下,可能会忽略薄结构,并且断开连接的对象之间的相对深度排列可能会失败。结果往往会在背景区域变得模糊,这可能是由于输入图像的分辨率有限和远距离的不完美真值性造成的。
7 结论
深度网络的成功是由海量数据集驱动的。对于单目深度估计,我们认为现有数据集仍然不足,可能构成限制因素。由于难以大规模捕获不同深度数据集,我们引入了用于组合互补数据源的工具。我们提出了一种灵活的损失函数和一种原则性的数据集混合策略。我们还引入了一个基于3D电影的数据集,该数据集为各种动态场景提供了密集的真值。
我们通过Zero-shot 跨数据集迁移评估了模型的鲁棒性和泛化性。我们发现,在训练过程中从未见过的数据集上系统地测试模型,比在当前可用的最多样化的数据集的一部分上测试模型更能代表它们的“in the wild”性能。
我们的工作推进了通用单目深度估计的最新技术,并表明所提出的想法大大提高了不同环境下的性能。我们希望这项工作将有助于部署满足实际应用要求的单目深度模型。我们的模型在https://github.com/intel-isl/MiDaS.