点击下方卡片,关注“自动驾驶之心”公众号
戳我-> 领取自动驾驶近15个方向学习路线
文章作者 | 司马缸砸光
编辑 | 自动驾驶之心
本文介绍了Depth Anything V2。不追求花哨的技术,而是旨在揭示关键发现,为构建强大的单目深度估计模型铺平道路。值得注意的是,与V1相比,本版本通过三项关键实践产生了更精细、更稳健的深度预测:1) 将所有带标签的真实图像替换为合成图像;2) 扩大教师模型的容量;3) 通过大规模伪标签真实图像的桥梁来教授学生模型。与基于Stable Diffusion的最新模型相比,我们的模型在效率(速度快10倍以上)和准确性上都显著提高。我们提供了不同规模(参数范围从25M到1.3B)的模型,以支持广泛的场景。得益于它们强大的泛化能力,我们使用度量深度标签对其进行微调,以获得我们的度量深度模型。除了我们的模型外,考虑到当前测试集的有限多样性和频繁噪声,我们还构建了一个具有精确注释和多样化场景的多功能评估基准,以促进未来的研究。
领域背景介绍
单目深度估计(MDE)正受到越来越多的关注,这得益于它在广泛的下游任务中的基础性作用。精确的深度信息不仅在经典应用中如3D重建、导航和自动驾驶中受到青睐,在现代场景中如AI生成的内容,包括图像、视频和3D场景中也备受关注。因此,最近出现了许多MDE模型,它们都能处理开放世界的图像。
从模型架构的角度来看,这些工作可以分为两组。一组基于判别模型,例如BEiT和DINOv2,而另一组则基于生成模型,例如Stable Diffusion(SD)。在图2中,我们分别比较了两类中的两个代表性工作:作为判别模型的Depth Anything和作为生成模型的Marigold。可以很容易地观察到,Marigold在建模细节方面更胜一筹,而Depth Anything对于复杂场景产生了更稳健的预测。此外,如表1所示,Depth Anything比Marigold更高效且轻量级,并且有多种规模可供选择。然而,与此同时,Depth Anything对透明物体和反射的敏感度较高,这却是Marigold的优势所在。
在这项工作中,我们考虑到所有这些因素,旨在构建一个更加强大的单目深度估计基础模型,该模型能够实现表1中列出的所有优势:
• 为复杂场景产生稳健的预测,包括但不限于复杂的布局、透明物体(如玻璃)、反射表面(如镜子、屏幕)等。• 在预测的深度图中包含精细的细节(与Marigold的细节相当),包括但不限于薄物体(如椅子腿)、小孔等。• 提供不同的模型规模和推理效率,以支持广泛的应用。• 具有足够的泛化能力,可以转移到下游任务中(即进行微调)。
由于单目深度估计(MDE)本质上是一个判别任务,我们从Depth Anything V1出发,旨在保持其优势并纠正其弱点。有趣的是,我们将展示,要实现这样一个具有挑战性的目标,并不需要开发复杂或高级的技术。最关键的部分仍然是数据。这确实与V1的数据驱动动机相同,它利用大规模未标记数据来加快数据扩展并增加数据覆盖范围。在这项工作中,将首先重新审视其标记数据设计,然后强调未标记数据的关键作用。
下面我们先提出三个关键发现。我们将在接下来的三个部分中详细阐述它们。
问题1:MiDaS或Depth Anything的粗略深度是否来自判别建模本身?是否必须采用基于扩散的复杂建模方式来获取精细细节?
回答1:不,高效的判别模型也可以产生极其精细的细节。最关键的修改是将所有标记的真实图像替换为精确的合成图像。
问题2:如果如回答1所述,合成图像已经明显优于真实图像,为什么大多数先前的工作仍然坚持使用真实图像?
回答2:合成图像有其缺点,这在以前的范式中并不容易解决。
问题3:如何避免合成图像的缺点并放大其优势?
回答3:扩大仅使用合成图像训练的教师模型规模,然后通过大规模伪标记真实图像的桥梁来教授(较小的)学生模型。
经过这些探索后,我们成功构建了一个更加强大的MDE基础模型。然而,我们发现当前的测试集过于嘈杂,无法反映MDE模型的真实优势。因此进一步构建了一个具有精确注释和多样化场景的多功能评估基准。
重新审视Depth Anything V1的标记数据设计
在MiDaS在无监督单目深度估计方面的开创性工作基础上,近期研究倾向于构建更大规模的训练数据集,以努力提升估计性能。值得注意的是,Depth Anything V1、Metric3D V1和V2,以及ZeroDepth,分别从不同来源收集了150万、800万、1600万和1500万张标记图像用于训练。然而,很少有研究对这一趋势进行了批判性考察:如此大量的标记图像真的有益吗?
在回答这个问题之前,让我们先深入探讨真实标记图像可能被忽视的缺点。真实标记数据的两个缺点。1) 标签噪声,即深度图中的不准确标签。由于各种收集程序固有的限制,真实标记数据不可避免地包含不准确的估计。这种不准确可能由多种因素引起,例如深度传感器无法准确捕获透明物体的深度(图3a),立体匹配算法对无纹理或重复模式的脆弱性(图3b),以及SfM方法在处理动态对象或异常值时的敏感性(图3c)。
2)忽略的细节。这些真实数据集往往忽略了其深度图中的某些细节。如图4a所示,树和椅子的深度表示非常粗糙。这些数据集难以在目标边界或薄孔内提供详细的监督,导致深度预测过度平滑,如图4c的中间部分所示。因此,这些噪声标签非常不可靠,以至于学习到的模型也会犯类似的错误(图3d)。例如,MiDaS和Depth Anything V1在透明表面挑战中分别获得了25.9%和53.5%的糟糕分数。
为了克服上述问题,决定改变我们的训练数据,并寻求标记质量显著更好的图像。受到最近几项基于合成数据(SD)的研究的启发,这些研究仅使用带有完整深度信息的合成图像进行训练,我们广泛检查了合成图像的标签质量,并注意到它们有可能缓解上述讨论的缺点。
合成图像的优势。它们的深度标签在两个方面非常精确。1) 所有细节(例如,边界、薄孔、小物体等)都被正确标记。如图4b所示,即使是所有细小的网格结构和叶子都被标注了真实的深度。2) 我们可以获取具有挑战性的透明物体和反射表面的实际深度,例如图4b中桌子上的花瓶。简而言之,合成图像的深度确实是“真实值”(Ground Truth)。在图4c的右侧,我们展示了在合成图像上训练的MDE模型的精细预测。此外,我们可以通过从图形引擎中收集数据来快速扩大合成训练图像的数量,与真实图像相比,这不会引起任何隐私或伦理问题。
使用合成数据的挑战
如果合成数据如此有优势,为什么真实数据仍然在MDE中占据主导地位?在本节中,我们识别出合成图像的两个限制,这些限制阻碍了它们在现实中的轻松使用。
限制1. 合成图像和真实图像之间存在分布差异。尽管当前的图形引擎努力追求逼真的效果,但它们的风格和颜色分布仍与真实图像有显著差异。合成图像的颜色过于“干净”,布局过于“有序”,而真实图像则包含更多的随机性。例如,比较图4a和图4b中的图像,我们可以立即区分出合成图像。这种分布差异使得模型很难从合成图像转移到真实图像,即使这两个数据源具有相似的布局。
限制2. 合成图像的场景覆盖范围有限。它们是从图形引擎中迭代采样的,具有预定义的固定场景类型,例如“客厅”和“街道场景”。因此,尽管Hypersim或Virtual KITTI(如图4b所示)具有惊人的精度,但我们不能期望在这些数据集上训练的模型在现实世界场景(如“拥挤的人群”)中也能很好地泛化。相比之下,一些从网络立体图像(例如HRWSI)或单目视频(例如MegaDepth)构建的真实数据集,可以覆盖广泛的现实世界场景。
因此,在MDE中从合成到真实的迁移并非易事。为了验证这一说法,我们进行了一项初步研究,仅使用四种流行的预训练编码器(包括BEiT、SAM、SynCLR和DINOv2)在合成图像上学习MDE模型。如图5所示,只有DINOv2-G取得了令人满意的结果。其他所有模型系列以及较小的DINOv2模型都存在严重的泛化问题。这项初步研究似乎为在MDE中使用合成数据提供了一个直接的解决方案,即基于最大的DINOv2编码器,并依赖其固有的泛化能力。然而,这种简单的解决方案面临两个问题。首先,当真实测试图像的模式在合成训练图像中很少出现时,DINOv2-G经常遇到失败的情况。在图6中,我们可以清楚地观察到天空(云)和人类头部的深度预测错误。这种失败是可以预料的,因为我们的合成训练集不包括多样化的天空模式或人类。此外,大多数应用无法从存储和推理效率方面容纳资源密集型的DINOv2-G模型(1.3B)。实际上,由于其实时速度,Depth Anything V1中的最小模型被使用得最广泛。
为了缓解泛化问题,一些工作使用真实和合成图像的混合训练集。不幸的是,真实图像的粗略深度图对精细预测具有破坏性。另一个潜在的解决方案是收集更多的合成图像,但这是不可持续的,因为创建模拟每个现实世界场景的图形引擎是棘手的。因此,在使用合成数据构建MDE模型时,需要一个可靠的解决方案。在本文中,我们将弥补这一差距,并提出一个解决方案,该方案解决了精确性和鲁棒性的两难问题,无需任何折衷,并且适用于任何模型规模。
大规模未标注真实图像的关键作用
我们的解决方案很直接:结合未标记的真实图像。我们最强大的MDE模型,基于DINOv2-G,最初仅在高质量的合成图像上进行训练。然后,它给未标记的真实图像分配伪深度标签。最后,我们的新模型仅使用大规模且精确伪标记的图像进行训练。Depth Anything V1已经强调了大规模未标记真实数据的重要性。在这里,在我们特定的合成标记图像背景下,将从三个角度更详细地展示其不可或缺的作用。
弥合领域差异。如前所述,由于分布差异,直接从合成训练图像转移到真实测试图像是具有挑战性的。但如果我们能利用额外的真实图像作为中间学习目标,这个过程将更可靠。直观地看,经过在伪标记的真实图像上的明确训练后,模型可以更加熟悉现实世界的数据分布。与手动标注的图像相比,我们自动生成的伪标签更加精细和完整,如图17所示。
增强场景覆盖。合成图像的多样性有限,没有包含足够的现实世界场景。然而,我们可以通过结合来自公共数据集的大规模未标记图像来轻松覆盖许多不同的场景。此外,由于合成图像是从预定义的视频中重复采样得到的,因此它们确实非常冗余。相比之下,未标记的真实图像则清晰可辨且非常具有信息性。通过训练足够的图像和场景,模型不仅显示出更强的零次学习MDE能力,而且它们还可以作为下游相关任务的更好预训练源。
将最强大模型的知识转移到较小的模型中。如图5所示,较小的模型本身无法直接从合成到真实的迁移中受益。然而,借助大规模未标记的真实图像,它们可以学习模仿最强大模型的高质量预测,类似于知识蒸馏。但不同的是,我们的蒸馏是在标签级别上通过额外的未标记真实数据进行的,而不是在特征或逻辑级别上使用原始标记数据。这种做法更安全,因为有证据表明特征级别的蒸馏并不总是有益的,尤其是当教师-学生规模差距很大时。
Depth Anything V2
根据以上所有分析,我们训练Depth Anything V2的最终流程已经很清晰(如图7所示)。
它包含三个步骤:
仅基于高质量的合成图像,训练一个基于DINOv2-G的可靠教师模型。
在大规模未标注的真实图像上生成精确的伪深度标签。
使用伪标记的真实图像训练最终的学生模型以实现鲁棒的泛化。
我们将发布四个学生模型,分别基于DINOv2的small, base, large, and giant版本。
如表7所示,我们使用了五个精确的合成数据集(595K张图像)和八个大规模伪标记的真实数据集(62M张图像)进行训练。与V1相同,对于每个伪标记样本,在训练过程中忽略其损失最大的前n个区域,其中n设置为10%。我们认为这些区域是潜在的带有噪声的伪标签。类似地,我们的模型生成仿射不变的逆深度。
在标注图像上使用两个损失项进行优化:一个尺度和偏移不变损失Lssi和一个梯度匹配损失Lgm。这两个目标函数并不是新的。但不同的是,我们发现当使用合成图像时,Lgm对深度锐度非常有益。在伪标注的图像上,遵循V1添加了一个额外的特征对齐损失,以保留来自预训练的DINOv2编码器的信息性语义。
新的评估基准:DA-2K
1)现有基准的局限性
图8展示了NYU-D上对于镜子和薄结构的错误标注,尽管使用了专门的深度传感器。这种频繁的标签噪声使得强大的MDE模型报告的指标不再可靠。除了标签噪声外,这些基准的另一个缺点是多样性有限。它们中的大多数最初是为单一场景提出的。例如,NYU-D主要关注少数室内房间,而KITTI仅包含几个街道场景。这些基准上的性能可能无法反映现实世界的可靠性。理想情况下,我们希望MDE模型能够稳健地处理任何未见过的场景。这些现有基准的最后一个问题是分辨率低。它们大多提供分辨率为500×500左右的图像。但是,使用现代相机,我们通常需要对更高分辨率的图像(例如1000×2000)进行精确的深度估计。目前尚不清楚从这些低分辨率基准得出的结论是否可以安全地转移到高分辨率基准上。
2)DA-2K
考虑到上述三个限制,我们旨在构建一个通用的相对单目深度估计评估基准,该基准能够:1) 提供精确的深度关系,2) 覆盖广泛的场景,以及3) 包含主要用于现代用途的高分辨率图像。事实上,人为标注每个像素的深度是不切实际的,尤其是对于自然图像。因此,遵循DIW,对每张图像标注稀疏的深度对。一般来说,给定一张图像,我们可以选择其上的两个像素,并确定它们之间的相对深度(即哪个像素更近)。
具体来说,我们采用两种不同的流程来选择像素对。在第一个流程中,如图9a所示,我们使用SAM自动预测目标mask。我们并不直接使用这些mask,而是利用提示它们的关键点(像素)。随机抽取两个关键点,并查询四个专家模型对它们的相对深度进行投票。如果有分歧,这一对将被发送给人类标注者来决定真正的相对深度。由于可能存在歧义,标注者可以跳过任何一对。然而,可能存在所有模型都错误预测具有挑战性的像素对的情况,而这些对并未被标注出来。为了解决这个问题,我们引入了第二个流程,其中我们仔细分析图像并手动识别具有挑战性的像素对。
为了确保准确性,所有标注都由其他两位标注者进行三重检查。为了确保多样性,首先总结了MDE的八个重要应用场景(图9b),并请GPT4为每个场景生成相关的多样化关键词。然后,使用这些关键词从Flickr下载相应的图像。最后,我们总共对1K张图像进行了标注,包含2K个像素对。
DA-2K的地位。尽管具有优势,但我们并不期望DA-2K取代当前的基准。准确的稀疏深度仍然远未达到场景重建所需的精确密集深度。然而,DA-2K可以被认为是准确密集深度的先决条件。因此,我们认为DA-2K由于其广泛的场景覆盖和精确性,可以作为现有基准的有价值补充。它还可以作为用户为DA-2K中涵盖的特定场景选择社区模型的快速前期验证。最后,我们认为它也是未来多模态LLMs的3D感知能力的潜在测试平台。
实验对比
参考
[1] Depth Anything V2
投稿作者为『自动驾驶之心知识星球』特邀嘉宾,欢迎加入交流!
① 全网独家视频课程
BEV感知、BEV模型部署、BEV目标跟踪、毫米波雷达视觉融合、多传感器标定、多传感器融合、多模态3D目标检测、车道线检测、轨迹预测、在线高精地图、世界模型、点云3D目标检测、目标跟踪、Occupancy、cuda与TensorRT模型部署、大模型与自动驾驶、Nerf、语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习)
网页端官网:www.zdjszx.com② 国内首个自动驾驶学习社区
国内最大最专业,近3000人的交流社区,已得到大多数自动驾驶公司的认可!涉及30+自动驾驶技术栈学习路线,从0到一带你入门自动驾驶感知(2D/3D检测、语义分割、车道线、BEV感知、Occupancy、多传感器融合、多传感器标定、目标跟踪)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、大模型、端到端等,更有行业动态和岗位发布!欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频
③【自动驾驶之心】技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦感知、定位、融合、规控、标定、端到端、仿真、产品经理、自动驾驶开发、自动标注与数据闭环多个方向,目前近60+技术交流群,欢迎加入!扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)
④【自动驾驶之心】全平台矩阵