Depth Anything V2:深度万象 V2
摘要
本文介绍了 Depth Anything V2。在不追求复杂技术的前提下,我们旨在揭示一些关键发现,为构建强大的单目深度估计模型铺平道路。与 V1 [89] 相比,本版本通过三项关键实践产生了更精细且更鲁棒的深度预测:1)用合成图像替代所有标注的真实图像;2)扩大教师模型的容量;3)通过大规模伪标签真实图像的桥梁来训练学生模型。与基于稳定扩散(Stable Diffusion)构建的最新模型 [31] 相比,我们的模型在效率上显著更高(速度提升超过 10 倍),且更为准确。我们提供了不同规模的模型(参数量从 2500 万到 13 亿不等),以支持广泛的应用场景。得益于其强大的泛化能力,我们对其进行了度量深度标签的微调,以获得我们的度量深度模型。除了我们的模型外,考虑到当前测试集的多样性有限且常常存在噪声,我们构建了一个多功能评估基准,具有精确的标注和多样的场景,以促进未来的研究。
1 引言
单目深度估计(MDE)正在获得越来越多的关注,因为它在广泛的下游任务中具有重要作用。精确的深度信息不仅对经典应用(如3D重建[47, 32, 93]、导航[82]和自动驾驶[80])有利,而且在现代场景中也具有重要意义,例如AI生成的内容,包括图像[101]、视频[39]和3D场景[87, 64, 68]。因此,最近出现了许多能够处理开放世界图像的MDE模型[56, 7, 6, 95, 26, 38, 31, 89, 88, 25, 20, 52, 28]。
从模型架构的角度来看,这些工作可以分为两大类。一类[7, 6, 89, 28]基于判别模型,如BEiT [4]和DINOv2 [50],另一类[31, 20, 25]基于生成模型,如Stable Diffusion (SD) [59]。在图2中,我们分别比较了这两类代表性工作:作为判别模型的Depth Anything [89]和作为生成模型的Marigold [31]。可以很容易地观察到,Marigold在细节建模方面更强,而Depth Anything则在复杂场景下产生更为鲁棒的预测。此外,正如表1所总结的,Depth Anything比Marigold更加高效且轻量,并提供了不同规模的选择。与此同时,Depth Anything在透明物体和反射面方面的表现较弱,而这些正是Marigold的强项。
在这项工作中,考虑到所有这些因素,我们的目标是构建一个更强大的单目深度估计基础模型,能够实现表1中列出的所有优势:
• 在复杂场景中生成鲁棒的预测,包括但不限于复杂布局、透明物体(如玻璃)、反射表面(如镜子、屏幕)[15]等。
• 在预测深度图中包含细节(与Marigold的细节相当),包括但不限于薄物体(如椅子腿)[42]、小孔等。
• 提供多样化的模型规模和推理效率,以支持广泛的应用[82]。
• 具有足够的泛化能力,可迁移(即微调)到下游任务,例如Depth Anything V1作为所有领先团队在第三届MDEC1 [72]中的预训练模型。
由于MDE本质上是一个判别任务,我们从Depth Anything V1 [89]出发,旨在保持其优势并纠正其弱点。有趣的是,我们将证明,为了实现这一具有挑战性的目标,并不需要开发复杂或精致的技术。最关键的部分仍然是数据。它实际上与V1的数据驱动动机相同,即利用大规模未标注数据加速数据扩展并增加数据覆盖面。在这项工作中,我们将首先重新审视其标注数据设计,然后强调未标注数据的关键作用。
我们首先提出以下三个关键发现,接下来的三个部分将详细阐述它们。
Q1 [第2节]:MiDaS或Depth Anything的粗略深度是否来自于判别建模本身?为了获得精细的细节,是否必须采用基于扩散的重建方式?
A1:不,高效的判别模型也可以产生极其精细的细节。最关键的修改是用精确的合成图像替代所有真实标注图像。
Q2 [第3节]:如果如A1所述,合成图像已经明显优于真实图像,为什么大多数先前的工作仍然坚持使用真实图像?
A2:合成图像有其缺点,这些缺点在先前的范式中并不容易解决。
Q3 [第4节]:如何避免合成图像的缺点,并同时放大其优势?
A3:扩大仅通过合成图像训练的教师模型的规模,然后通过大规模伪标签真实图像的桥梁来教导(较小的)学生模型。
通过这些探索,我们成功构建了一个更强大的MDE基础模型。然而,我们发现当前的测试集[70]太嘈杂,无法真实反映MDE模型的优势。因此,我们进一步构建了一个具有精确注释和多样化场景的通用评估基准(第6节)。
2 重新审视Depth Anything V1的标注数据设计
基于MiDaS [56, 7] 在零-shot MDE中的开创性工作,最近的研究倾向于构建更大规模的训练数据集,以增强估计性能。值得注意的是,Depth Anything V1 [89]、Metric3D V1 [95] 和V2 [28],以及ZeroDepth [26],分别从不同来源收集了150万、800万、1600万和1500万张标注图像用于训练。然而,很少有研究批判性地审视这一趋势:如此大量的标注图像真的有优势吗?
在回答这个问题之前,我们首先深入探讨真实标注图像可能被忽视的缺点。
真实标注数据的两个缺点
1)标签噪声,即深度图中的标签不准确。由于各种采集方法的局限性,真实标注数据不可避免地包含不准确的估计。这些不准确可能来自多种因素,例如深度传感器无法准确捕捉透明物体的深度(如图3a所示),立体匹配算法容易受到无纹理或重复图案的影响(如图3b所示),以及结构从运动(SfM)方法在处理动态物体或异常值时的脆弱性(如图3c所示)。
2)忽略细节。这些真实数据集常常忽视深度图中的某些细节。如图4a所示,树木和椅子的深度表示明显粗糙。这些数据集难以在物体边界或薄孔内部提供详细的监督,导致深度预测过于平滑,如图4c中间所示。因此,这些噪声标签是如此不可靠,以至于学习到的模型做出了相似的错误预测(如图3d所示)。例如,MiDaS和Depth Anything V1在透明表面挑战中分别获得了25.9%和53.5%的低分(更多细节见表12:我们V2在零-shot测试中获得了83.6%的竞争分数)。
为了克服上述问题,我们决定更改训练数据,寻找具有显著更好标注的图像。受到几篇最近基于SD的研究[31, 20, 25]的启发,这些研究专门利用具有完整深度信息的合成图像进行训练,我们广泛检查了合成图像的标签质量,并注意到它们能够缓解上述讨论的缺点。
合成图像的优势
它们的深度标签在两个方面都具有高度的精确性。
1)所有细节(例如,边界、薄孔、小物体等)都被正确标注。如图4b所示,即使是所有细网结构和树叶也都被标注了真实的深度。
2)我们可以获得具有挑战性的透明物体和反射表面的实际深度,例如图4b中桌子上的花瓶。总之,合成图像的深度是真正的“GT”(Ground Truth,真实标签)。在图4c的右侧,我们展示了一个基于合成图像训练的MDE模型的精细预测结果。此外,我们可以通过从图形引擎[58, 63, 53]收集来快速扩展合成训练图像,与真实图像相比,这不会引发任何隐私或伦理问题。
3 合成数据使用中的挑战
如果合成数据如此有优势,为什么真实数据仍然主导着MDE呢?在本节中,我们指出了合成图像存在的两个限制,阻碍了它们在实际应用中的广泛使用。
限制1:合成图像与真实图像之间存在分布差异
尽管当前的图形引擎力求实现逼真的效果,但它们的风格和颜色分布仍然与真实图像显著不同。合成图像在颜色上过于“干净”,在布局上过于“有序”,而真实图像则包含更多的随机性。例如,当比较图4a和图4b中的图像时,我们可以立刻区分出合成图像。这样的分布差异使得模型很难从合成图像迁移到真实图像,即使这两种数据源的布局相似[57, 9]。
限制2:合成图像的场景覆盖有限
它们是从图形引擎中按预定义的固定场景类型(例如“客厅”和“街道场景”)进行反复采样的。因此,尽管像Hypersim[58]或Virtual KITTI[9]这样的合成图像精度惊人(如图4b所示),我们不能指望在这些图像上训练的模型能在真实世界的场景中表现得很好,比如“人群密集的场景”。相比之下,一些从网页立体图像(例如HRWSI[83])或单目视频(例如MegaDepth[37])构建的真实数据集能够覆盖更广泛的真实世界场景。
因此,合成到真实的迁移在MDE中并非易事。为了验证这一说法,我们进行了一项初步研究,利用四个流行的预训练编码器(包括BEiT [4]、SAM [33]、SynCLR [75]和DINOv2 [50])仅在合成图像上训练MDE模型。如图5所示,只有DINOv2-G取得了令人满意的结果。所有其他模型系列以及较小的DINOv2模型都面临严重的泛化问题。这个初步研究似乎为在MDE中使用合成数据提供了一个直接的解决方案,即基于最大的DINOv2编码器,并依赖其固有的泛化能力。然而,这一简单的解决方案面临两个问题。首先,当真实测试图像的模式在合成训练图像中很少出现时,DINOv2-G经常遇到失败情况。在图6中,我们可以清晰地观察到天空(云)和人头的深度预测错误。这类失败可以预见,因为我们的合成训练集不包括多样的天空模式或人类。此外,考虑到存储和推理效率的问题,绝大多数应用无法承载资源密集型的DINOv2-G模型(1.3B)。实际上,Depth Anything V1中最小的模型由于其实时速度而被广泛使用。
为了缓解泛化问题,一些工作[7, 89, 28]使用了真实和合成图像的结合训练集。不幸的是,如B.9节所示,真实图像的粗糙深度图会破坏精细的预测。另一个潜在的解决方案是收集更多的合成图像,但由于创建能够模仿每个现实世界场景的图形引擎是不可行的,因此这并不可持续。因此,在构建MDE模型时,依赖合成数据的可靠解决方案是非常关键的。在本文中,我们将填补这一空白,展示一个解决精确性与鲁棒性困境的路线图,且无需任何折中,适用于任何模型规模。
4 大规模未标记真实图像的关键作用
我们的解决方案很简单:将未标记的真实图像纳入训练。我们最强大的MDE模型,基于DINOv2-G,最初仅在高质量的合成图像上进行训练。然后,它在未标记的真实图像上分配伪深度标签。最后,我们的新模型仅在大规模且精确伪标注的图像上进行训练。Depth Anything V1 [89]强调了大规模未标记真实数据的重要性。在这里,针对合成标注图像的特殊背景下,我们将从三个方面更详细地展示其不可或缺的作用。
缩小领域差距
如前所述,由于分布差异,从合成训练图像直接迁移到真实测试图像具有挑战性。但如果我们能利用额外的真实图像作为中间学习目标,过程将更可靠。直观地说,经过在伪标注的真实图像上显式训练后,模型将更加熟悉真实世界的数据分布。与手动标注的图像相比,我们自动生成的伪标签更加细致和完整,如图17所示。
增强场景覆盖范围
合成图像的多样性是有限的,未能涵盖足够的真实世界场景。然而,通过结合来自公共数据集的大规模未标记图像,我们可以轻松覆盖众多不同的场景。此外,合成图像由于是从预定义的视频中重复采样而显得非常冗余。相比之下,未标记的真实图像明显更加区分且信息丰富。通过在足够的图像和场景上进行训练,模型不仅展示了更强的零-shot MDE能力(如图6所示“+未标记的真实图像”),还能够作为下游相关任务的更好预训练来源[72]。
从最强模型向小模型传递知识
如图5所示,较小的模型不能单独从合成到真实的迁移中获益。然而,借助大规模未标记的真实图像,它们可以学习模仿最强大模型的高质量预测,这类似于知识蒸馏[27]。但不同的是,我们的蒸馏是在标签级别上通过额外的未标记真实数据强制执行的,而不是在特征或logit级别上使用原始标注数据进行的。这一做法更安全,因为有证据表明,特征级别的蒸馏并不总是有益的,尤其是在教师和学生模型规模差距很大的情况下[48]。最终,如图16所示,未标记的图像极大地提升了我们较小模型的鲁棒性。
5 Depth Anything V2
5.1 总体框架
根据以上分析,我们训练Depth Anything V2的最终流程非常明确(如图7所示)。它由三步组成:
- 基于DINOv2-G,仅使用高质量合成图像训练一个可靠的教师模型。
- 在大规模未标记的真实图像上生成精确的伪深度。
- 在伪标注的真实图像上训练最终的学生模型,实现强大的泛化能力(我们将展示在此步骤中合成图像并非必需)。
我们将发布四个学生模型,分别基于DINOv2的小型、基础、大型和超大型模型。
5.2 细节
如表7所示,我们使用五个精确的合成数据集(595K张图像)和八个大规模伪标注真实数据集(62M张图像)进行训练。与V1 [89]相同,对于每个伪标注样本,我们在训练过程中忽略其前n个最大损失区域,其中n设置为10%。我们将这些区域视为潜在的噪声伪标签。类似地,我们的模型生成仿射不变的逆深度。
我们在标注图像上使用两个损失项进行优化:尺度和位移不变损失Lssi和梯度匹配损失Lgm。这两个目标函数并不新颖,因为它们是由MiDaS [56]提出的。但不同的是,我们发现Lgm在使用合成图像时对于深度清晰度非常有益(参见B.7节)。对于伪标注图像,我们沿用V1的做法,添加了一个额外的特征对齐损失,以保留从预训练的DINOv2编码器中提取的有用语义信息。
6 新的评估基准:DA-2K
6.1 现有基准的局限性
在第二节中,我们展示了常用的真实训练集存在标注噪声的问题。在这里,我们进一步论证了广泛采用的测试基准同样存在噪声。图8展示了在NYU-D [70]数据集中,尽管使用了专门的深度传感器,但镜子和薄结构的标注仍然不准确。这样的标注噪声使得强大的MDE模型报告的指标变得不再可靠。
除了标注噪声,另一个问题是这些基准的多样性有限。大多数基准最初是为单一场景提出的。例如,NYU-D [70]专注于几个室内房间,而KITTI [24]仅包含几种街景。这些基准上的表现可能无法真实反映模型在实际环境中的可靠性。理想情况下,我们希望MDE模型能够稳健地处理任何未见过的场景。
最后,这些现有基准的另一个问题是低分辨率。它们大多数提供的图像分辨率约为500×500,但现代相机通常要求对更高分辨率的图像(例如1000×2000)进行精确的深度估计。尚不清楚从这些低分辨率基准得出的结论是否能安全地转移到高分辨率基准。
6.2 DA-2K
考虑到上述三个局限性,我们旨在构建一个多功能的评估基准,用于相对单目深度估计,旨在满足以下三个要求:
- 提供精确的深度关系;
- 涵盖广泛的场景;
- 包含大多数现代应用所需的高分辨率图像。
实际上,对于人类来说,为每个像素标注深度是不可行的,尤其是在野外图像中。因此,我们遵循DIW [11]的做法,对每张图像进行稀疏的深度对标注。通常,给定一张图像,我们可以选择两像素并决定它们之间的相对深度(即哪个像素更近)。
具体而言,我们采用两条不同的管道来选择像素对。在第一条管道中,如图9a所示,我们使用SAM [33]自动预测物体掩模。我们不是使用这些掩模,而是利用能够触发它们的关键点(像素)。我们随机选择两个关键像素并查询四个专家模型([89, 31, 20]以及我们的模型),让它们对这两者的相对深度进行投票。如果存在分歧,样本将送到人工标注员处,由他们来决定真正的相对深度。由于可能存在歧义,标注员可以跳过任何对。然而,可能会出现所有模型都错误预测了具有挑战性的对,并且这些对不会被标记。为了解决这个问题,我们引入了第二条管道,在这里我们仔细分析图像并手动标定具有挑战性的对。
以确保准确性,所有标注均由另外两位标注员进行三重核查。为了确保多样性,我们首先总结了MDE的八个重要应用场景(图9b),并请求GPT-4生成与每个场景相关的多样化关键词。随后,我们使用这些关键词从Flickr下载相应的图像。最后,我们标注了1000张图像,共标注了2000个像素对。由于篇幅所限,详细内容和与DIW [11]的比较请参见C节。
DA-2K的位置
尽管DA-2K具有许多优点,但我们并不期望它取代现有基准。准确的稀疏深度仍然远远不足以满足场景重建所需的精确密集深度。然而,DA-2K可以被视为精确密集深度的前提条件。因此,我们相信DA-2K可以作为现有基准的宝贵补充,因其广泛的场景覆盖和精度。它还可以作为用户在选择适用于DA-2K中具体场景的社区模型时的快速先验验证。最后,我们还认为它是未来多模态大语言模型[41, 21, 3]在3D感知方面的潜在测试平台。
7 实验
7.1 实现细节
遵循Depth Anything V1 [89]的做法,我们使用DPT [55]作为深度解码器,基于DINOv2编码器构建。所有图像都以518×518的分辨率进行训练,首先调整短边的尺寸为518,然后进行随机裁剪。在训练教师模型时,我们使用合成图像,批量大小为64,训练160K次迭代。在第三阶段的训练中,我们对伪标签真实图像进行训练,批量大小为192,训练480K次迭代。我们使用Adam优化器,并将编码器和解码器的学习率分别设置为5e-6和5e-5。在两个训练阶段中,我们没有平衡训练数据集,而是简单地将它们拼接在一起。Lssi和Lgm的权重比设置为1:2。
7.2 zero-shot 相对深度估计
在传统基准上的表现
由于我们的模型预测的是仿射不变的逆深度,出于公平考虑,我们在五个未见测试数据集上与Depth Anything V1 [89]和MiDaS V3.1 [7]进行了比较。如表2所示,我们的结果优于MiDaS,并且与V1 [89]相当。在两个数据集的指标上,我们略逊于V1。然而,这些数据集的基础指标并不是本文的重点。本版本的目标是生成细粒度的预测,尤其是针对薄结构、复杂场景和透明物体等的鲁棒预测。这些维度的改进无法在当前基准中得到正确体现。
在我们提出的DA-2K基准上的表现
如表3所示,在我们提出的多样化场景基准上,即使是我们最小的模型,也显著优于其他重型SD模型,如Marigold [31]和Geowizard [20]。我们的最强大模型在相对深度判别的准确性上,比Marigold高出10.6%。有关我们模型在各个场景下的全面表现,请参见表14。
7.3 微调至度量深度估计
为了验证我们模型的泛化能力,我们将其编码器转移到下游的度量深度估计任务中。首先,像V1 [89]一样,我们遵循ZoeDepth [6]的流水线,但将其MiDaS [7]编码器替换为我们预训练的编码器。如表4所示,我们在NYU-D和KITTI数据集上显著超越了之前的方法。值得注意的是,即使是基于ViT-S的最轻量化模型,也优于其他基于ViT-L的模型[6]。
尽管报告的指标看起来令人印象深刻,但在NYUv2或KITTI数据集上训练的模型由于训练集中的固有噪声,未能生成细粒度的深度预测,并且在透明物体的处理上不够鲁棒。因此,为了满足真实世界应用的需求,如多视图合成,我们对我们的强大编码器进行了微调,分别在Hypersim [58]和Virtual KITTI [9]合成数据集上进行了室内和室外的度量深度估计。我们将发布这两个度量深度模型。有关与之前的ZoeDepth方法的定性比较,请参见图15。
7.4 消融研究
由于篇幅限制,除伪标签部分的两个实验外,我们将大部分消融研究放到附录中。
大规模伪标签真实图像的重要性
如表5所示,与仅在合成图像上训练相比,加入伪标签真实图像后,我们的模型得到了极大的增强。与Depth Anything V1 [89]不同,我们进一步尝试在训练学生模型时去除合成图像。我们发现,这甚至可以使较小的模型(例如ViT-S和ViT-B)获得略微更好的结果。因此,我们最终选择仅在伪标签图像上训练学生模型。这一观察结果与SAM [33]类似,后者仅发布了其伪标签的掩膜。
伪标签与手工标签的比较
我们之前在图4a中展示了现有真实标签数据集存在严重的噪声。这里我们进行定量比较。我们使用DIML [14] 数据集中的真实图像,分别比较在原始手工标签和我们生成的伪标签下的转移性能。如表6所示,使用伪标签训练的模型明显优于手工标签对应的模型。这一巨大差距表明,我们的伪标签质量非常高,而当前真实数据集中的标签噪声丰富。
8 相关工作
单目深度估计
早期的工作 [18, 19, 5] 主要集中在领域内度量深度估计上,其中训练和测试图像必须来自同一领域 [70, 24]。由于这些方法应用场景有限,最近越来越多的研究关注零-shot 相对单目深度估计任务。在这些研究中,一些工作通过更好的建模方法来解决这个任务,例如使用稳定扩散(Stable Diffusion)[59] 作为深度去噪器 [31, 25, 20]。其他一些工作 [94, 96, 89] 则从数据驱动的角度出发。例如,MiDaS [56, 55, 7] 和 Metric3D [95] 分别收集了200万和800万标签图像。鉴于扩大标签图像规模的困难,Depth Anything V1 [89] 利用6200万未标注的图像来增强模型的鲁棒性。在这项工作中,我们提出了广泛使用的真实标签数据集存在的多个局限性。因此,我们特别强调了依赖合成图像来确保深度精度的必要性。同时,为了解决由合成图像带来的泛化问题,我们采用了数据驱动(大规模伪标签真实图像)和模型驱动(扩大教师模型规模)两种策略。
从未标注的真实图像中学习
如何从未标注的图像中学习有用的表征是半监督学习领域广泛研究的问题 [36, 86, 71, 90]。然而,这些研究主要集中于学术基准 [34],这些基准仅允许使用小规模的标注和未标注图像。相比之下,我们研究了一个真实应用场景,即如何通过62M未标注图像进一步提升基线(0.6M标注图像)。此外,与Depth Anything V1 [89]不同,我们展示了未标注真实图像的不可或缺的作用,特别是在我们将所有标注真实图像替换为合成图像时 [22, 23, 61]。我们证明了“精确的合成数据 + 伪标签真实数据”比使用标注真实数据更为有前途。
知识蒸馏
我们从最强大的教师模型中蒸馏可转移的知识到较小的模型中。这与知识蒸馏(KD)[27]的核心精神相似。但我们与传统的知识蒸馏方法有所不同,我们通过额外的未标注真实图像在预测层进行蒸馏,而KD [2, 73, 100] 通常在特征层或logit层进行蒸馏。我们的目标是揭示大规模未标注数据和更大教师模型的重要性,而不是精细的损失设计 [43, 69] 或蒸馏管道 [10]。此外,直接在两个具有巨大规模差距的模型之间蒸馏特征表示是非常困难且具有风险的 [48]。相比之下,我们的伪标签蒸馏更加简便且安全,即使是从一个1.3B参数的模型到一个2500万参数的模型。
9 结论
在这项工作中,我们提出了Depth Anything V2,这是一个更强大的单目深度估计基础模型。它具有以下特点:
- 提供强健且细粒度的深度预测;
- 支持多种应用场景,具有从2500万到13亿参数不等的不同模型尺寸;
- 可以轻松地微调到下游任务,作为一个有前途的模型初始化。
我们揭示了一些关键发现,为构建强大的MDE模型铺平了道路。此外,鉴于现有测试集的多样性差和噪声丰富,我们构建了一个多功能评估基准DA-2K,涵盖了多种场景和高分辨率图像,并提供精确且具有挑战性的稀疏深度标签。