织梦怎么建设论坛网站,保险网站建设,创建一个网站买卖,网站改版介绍Depth Anything V2
Abstract
这项工作介绍了Depth Anything V2。在不追求花哨技术的情况下#xff0c;我们的目标是揭示关键发现#xff0c;为构建强大的单目深度估计模型铺平道路。值得注意的是#xff0c;与V1 相比#xff0c;该版本通过三个关键实践产生更精细#x…Depth Anything V2Abstract这项工作介绍了Depth Anything V2。在不追求花哨技术的情况下我们的目标是揭示关键发现为构建强大的单目深度估计模型铺平道路。值得注意的是与V1 相比该版本通过三个关键实践产生更精细更强大的深度预测1用合成图像替换所有标记的真实的图像2扩大我们的教师模型的容量3通过大规模伪标记的真实的图像的桥梁来教授学生模型。与基于稳定扩散的最新模型相比我们的模型要比速度快10倍以上且更准确。我们提供不同比例的模型从25M到1.3B参数支持广泛的场景。得益于其强大的泛化能力在此基础上考虑到当前测试集的多样性有限和噪声频繁我们构建了一个具有精确注释和多样化场景的通用评估基准以便于未来的研究。论文地址[2406.09414] Depth Anything V2项目地址[GitHub - DepthAnything/Depth-Anything-V2: NeurIPS 2024] Depth Anything V2. A More Capable Foundation Model for Monocular Depth EstimationDepth Anything V2针对单目深度估计MDE模型在细粒度细节与复杂场景鲁棒性的平衡难题通过三大核心实践实现突破一是用高精度合成标注图像完全替换真实标注图像解决真实数据的标签噪声与细节缺失问题二是升级教师模型容量基于 DINOv2-G并仅用合成数据训练三是借助 62M 大规模伪标注真实图像实现教师到多尺度学生模型的知识迁移同时规避合成数据的域偏移与场景覆盖局限。此外针对现有测试基准噪声多、场景单一的缺陷构建了高精度、多场景的 DA-2K 评估基准。Depth Anything V2 是对 V1 的核心升级其算法设计围绕“解决判别式模型细粒度缺失 合成数据域适配”的核心目标通过数据范式革新、模型蒸馏策略优化、评估基准重构三大维度工作实现了 “鲁棒性 细粒度 高效性” 的统一。Introduction单目深度估计MDE由于其在广泛的下游任务中的基础作用而受到越来越多的关注。精确的深度信息不仅在经典应用中是有利的例如3D重建导航和自动驾驶而且在现代场景中也是优选的例如AI生成的内容包括图像视频和3D场景。因此最近出现了许多MDE模型它们都能够处理开放世界图像。图一Depth Anything V2在鲁棒性和细粒度细节方面明显优于V1 。与基于SD的模型相比它具有更快的推理速度更少的参数和更高的深度精度。从模型架构的角度来看这些工作可以分为两组。一组是基于判别模型例如BEiT 和DINOv2 而另一组是基于生成模型例如稳定扩散SD。在图2中我们分别比较了两个类别中的两个代表性作品Depth Anything 作为判别模型Marigold 作为生成模型。可以很容易地观察到Marigold在建模细节方面更上级而Depth Anything对复杂场景产生更强大的预测。此外如表1所示Depth Anything比Marigold更高效更轻便有不同的比例可供选择。同时Depth Anything容易受到透明物体和反射的影响而这正是Marigold的优势。在这项工作中考虑到所有这些因素我们的目标是建立一个更强大的基础模型用于单目深度估计可以实现表1中列出的所有优势对复杂场景进行稳健的预测包括但不限于复杂布局、透明物体例如玻璃、反射表面例如镜子、屏幕等。在预测的深度图中包含精细的细节与金盏花的细节相当包括但不限于薄的物体例如椅子腿小孔等。提供不同的模型规模和推理效率以支持广泛的应用。可推广到足以转移即微调到下游任务例如Depth Anything V1作为第三MDEC中所有领导团队的预训练模型。图二Depth Anything V1的鲁棒性第一行误导性的房间布局和Marigold的细粒度细节第二行薄篮球网。表1强大的单目深度估计模型的可扩展属性。由于MDE的本质是一个区分性任务我们从Depth Anything V1 开始旨在保持其优势并纠正其弱点。有趣的是我们将证明要实现这样一个具有挑战性的目标不需要开发花哨或复杂的技术。最关键的部分仍然是数据。它确实与V1的数据驱动动机相同它利用大规模未标记数据来加速数据扩展并增加数据覆盖率。在这项工作中我们将首先回顾其标记数据设计然后强调未标记数据的关键作用。我们首先在下面介绍三个主要发现并在下面三个部分中详细阐述。问题1 [第2节]MiDaS或DepthAnything的粗深度是否来自于判别建模本身是否必须采用基于重扩散的建模方式来获得精细细节A1不有效的判别模型也可以产生极其精细的细节。最关键的修改是用精确的合成图像替换所有标记的真实的图像。Q2 [第3节]如果像A1提到的那样合成图像已经明显上级真实的图像为什么大多数先前的作品仍然坚持使用真实的图像答2合成图像有其缺点这在以前的范例中并不容易解决。Q3 [第4节]如何避免合成图像的缺点并扩大其优势A3放大仅在合成图像上训练的教师模型然后通过大规模伪标记的真实的图像的桥梁来教授较小的学生模型。经过探索我们成功地构建了一个功能更强大的MDE基础模型。然而我们发现当前的测试集过于嘈杂无法反映MDE模型的真正优势。因此我们进一步构建了一个具有精确注释和多样化场景的通用评估基准第6节。核心论点对应结论判别式模型能否生成细粒度深度能关键是用高精度合成标注数据替代真实数据无需依赖扩散模型为何合成数据未成为主流合成数据存在域偏移风格 / 色彩与真实图像差异和场景局限无复杂真实场景传统范式难以解决如何发挥合成数据优势用 DINOv2-G 大模型做教师通过大规模伪标注真实图像将知识迁移到多尺度学生模型伪标签与真实标注孰优伪标签质量远超真实标注在 DIML 数据集上伪标签训练模型的 AbsRel 从 0.122 降至 0.099δ1 从 0.882 升至 0.901大规模无标签真实图像是否必要必要单一数据集SA-1B迭代训练无法替代多数据集的多样性62M 数据可显著提升模型泛化性Revisiting the Labeled Data Design of Depth Anything V1基于MiDaS 在零触发MDE中的开创性工作最近的研究倾向于构建更大规模的训练数据集以提高估计性能。值得注意的是Depth Anything V1 Metric3D V1 和V2 以及ZeroDepth 已经积累了1.5M8M16M然而很少有研究对这种趋势进行批判性的研究如此大量的标记图像真的有好处吗在回答这个问题之前让我们先深入研究一下真实的标记图像可能被忽视的缺点。真实的标记数据的两个缺点1标签噪声即深度图中的不准确标签。由于各种采集过程固有的局限性真实的标记数据不可避免地存在不准确的估计这种不准确可能源于各种因素例如深度传感器无法准确捕获透明物体的深度图3a立体匹配算法对无纹理或重复模式的脆弱性图3b以及SfM方法在处理动态对象或离群值时的易受影响性质图3c。2忽略的细节。这些真实的数据集经常忽略其深度图中的某些细节。图3“GT”深度标签中的各种噪声aNYU-D BHRWSI [83]cMegaDepth 和相应训练模型中的预测误差d。在训练期间忽略黑色区域。如图4a所示树和椅子的深度表示非常粗糙。这些数据集很难在对象边界或细孔内提供详细的监督导致深度预测过于平滑如图4c中间所示。因此这些嘈杂的标签非常不可靠以至于学习的模型也会犯类似的错误图3d。例如MiDaS和Depth Anything V1在透明表面挑战中分别获得25.9%和53.5%的较差分数表12中的更多细节我们的V2以零样本方式获得83.6%的竞争分数。图4真实的图像a和合成图像B的深度标签以及相应的模型预测c。合成图像的标签是高度精确的它们的训练模型也是如此。为了克服上述问题我们决定改变我们的训练数据并寻找具有更好注释的图像。受最近几项基于SD的研究的启发这些研究专门利用具有完整深度信息的合成图像进行训练我们广泛检查合成图像的标签质量并注意到它们缓解上述缺点的潜力。合成图像的优点。它们的深度标签在两个方面都非常精确。1所有细节例如边界、薄孔、小物体等被正确地标记。如图4b所示甚至所有薄网格结构和叶子都被注释有真实深度。2我们可以获得具有挑战性的透明物体和反射表面的实际深度例如图4b中桌子上的花瓶。总之合成图像的深度是真正的“GT”。在图4c的右侧我们展示了在合成图像上训练的MDE模型的细粒度预测。此外我们可以通过从图形引擎收集来快速放大合成训练图像这与真实的图像相比不会引起任何隐私或道德问题。数据范式革新用合成标注数据替换真实标注数据摒弃真实标注数据指出真实标注的两大缺陷标签噪声深度传感器 / 立体匹配 / SfM 的固有误差细节缺失对细结构 / 透明物体标注粗糙用 595K高精度合成标注图像BlendedMVS/Hypersim 等 5 个数据集完全替代 V1 的 1.5M 真实标注数据合成数据标签可精准刻画细结构如树叶、细网与透明 / 反光物体为模型提供无噪声的细粒度监督。模型蒸馏策略大模型教师 大规模伪标注真实图像迁移升级教师模型采用 DINOv2-G1.3B 参数作为教师模型仅用合成数据训练最大化合成数据的精度优势生成伪标签教师模型为 62M 真实无标签图像BDD100K/SA-1B 等 8 个数据集生成高精度伪深度标签训练时忽略 top10% 高损失区域过滤伪标签噪声多尺度学生训练基于 DINOv2-S/B/L/G25M-1.3B 参数训练学生模型且仅用伪标注真实数据弥合合成数据的域偏移与场景局限。评估基准构建提出 DA-2K 高精度多场景基准针对现有基准NYU-D/KITTI标签噪声多、场景单一、分辨率低的缺陷构建 DA-2K 基准标注 1K 高清图像的 2K 稀疏深度对覆盖 8 类场景室内 / 室外 / 透明 / 航拍等标注流程为 “SAM 掩码采样 模型分歧筛选 人工交叉校验”。Depth Anything V2 的模型架构遵循 “教师 - 学生” 蒸馏范式各模块分工明确参数调节针对 “精度、泛化、效率” 三维目标优化模块名称核心作用关键参数参数调节逻辑DINOv2 编码器教师G学生S/B/L/G提取高维视觉特征教师继承合成数据精度学生继承真实场景泛化性1. 学习率5e-62. 模型尺度覆盖 25M-1.3B 参数3. 输入分辨率短边 resize 至 518训练时裁剪为 518×5181. 编码器学习率远低于解码器避免预训练特征被破坏2. 多尺度适配不同算力场景ViT-L 兼顾精度ViT-S 侧重效率DPT 解码器将编码器特征映射为像素级深度图保持与 V1 的范式兼容1. 学习率5e-5编码器的 10 倍2. 优化器Adam3. 学习率调度固定迭代次数教师 160K学生 480K解码器随机初始化需更高学习率快速拟合深度回归固定迭代次数适配大规模数据训练伪标签生成模块为真实无标签图像生成高精度深度标签过滤噪声1. 忽略区域比例 n10%2. 伪标签生成模型DINOv2-G3. 数据比例合成数据 595K 伪标注真实数据 62M10% 的高损失区域过滤平衡伪标签精度与覆盖用大模型生成伪标签保证标签质量DA-2K 标注模块构建高精度多场景评估基准1. 深度对采样阈值深度比 32. 场景覆盖8 类3. 图像分辨率1500×2000 级深度比阈值保证标注有效性多场景覆盖验证模型全场景鲁棒性高清图像适配现代应用需求教师模块DINOv2-GDPT 解码器通过合成数据学习细粒度深度表征伪标签模块教师模型为真实图像标注实现 “合成精度→真实场景” 的知识传递学生模块编码器提取特征后经 DPT 解码器输出深度同时通过特征对齐损失保留 DINOv2 语义先验评估模块DA-2K 基准从多维度验证模型性能弥补传统基准的缺陷。Challenges in Using Synthetic Data如果合成数据如此有利为什么真实的数据仍然主导MDE在本节中我们确定了合成图像的两个限制这两个限制阻碍了它们在现实中的轻松使用。局限性1.合成图像与真实的图像之间存在分布偏移当前的图形引擎虽然追求真实感效果但其风格和颜色分布与真实的图像仍有明显差异合成图像在颜色上过于“干净”在布局上过于“有序”而真实的图像则包含更多的随机性例如在比较图4a和图4b时我们可以立即区分合成图像。这种分布变化使得模型很难从合成图像转换到真实的图像即使两个数据源共享类似的布局。限制2.合成图像具有有限的场景覆盖范围。它们是从具有预定义的固定场景类型的图形引擎迭代采样的例如“客厅”和“街景”。因此尽管Hypersim 或Virtual KITTI 图4b具有惊人的精度但我们不能期望在它们上训练的模型在现实世界的场景中很好地泛化例如“拥挤的人”。相比之下一些由网络立体图像例如HRWSI 或单眼视频例如MegaDepth 构建的真实的数据集可以覆盖广泛的现实世界场景。因此在MDE中合成到真实的传输是不平凡的。为了验证这一说法我们进行了一项试点研究使用四种流行的预训练编码器包括BEiT SAM Syndrome 和DINOv 2 仅在合成图像上学习MDE模型。如图5所示只有DINOv 2-G达到了令人满意的结果。所有其他模型系列以及较小的DINOv 2模型遭受严重的泛化问题。这项初步研究似乎给出了在MDE中使用合成数据的直接解决方案即建立在最大的DINOv 2编码器上并依赖其固有的泛化能力。然而这种天真的解决方案面临两个问题。图5不同视觉编码器在合成到真实的转换上的定性比较。只有DINOv 2-G产生令人满意的预测。有关定量比较请参阅第B.6节。首先DINOv 2-G经常遇到失败的情况即合成训练图像中很少出现真实的测试图像的模式。在图6中我们可以清楚地观察到天空云和人头的错误深度预测。这种失败是可以预料的因为我们的合成训练集不包括各种天空模式或人类。此外在存储和推理效率方面大多数应用程序无法容纳资源密集型的DINOv 2-G模型1.3B。实际上由于其实时速度Depth Anything V1中最小的模型使用最广泛。图6最强大的DINOv 2-G模型在纯合成图像上训练时的失败案例。左天空应该是超远的。右头部的深度与身体不一致。为了缓解泛化问题一些作品使用真实的和合成图像的组合训练集。不幸的是如第B.9节所示真实的图像的粗糙深度图对细粒度预测是破坏性的。另一个潜在的解决方案是收集更多的合成图像这是不可持续的因为创建模仿每个真实世界场景的图形引擎是棘手的。因此在使用合成数据构建MDE模型时需要一个可靠的解决方案。在本文中我们将缩小这一差距并提出一个路线图解决精确性和鲁棒性的困境没有任何权衡并适用于任何模型规模。Key Role of Large-Scale Unlabeled Real Images我们的解决方案很简单结合未标记的真实的图像。我们最强大的MDE模型基于DINOv 2-G最初纯粹是在高质量的合成图像上训练的。然后它在未标记的真实的图像上分配伪深度标签。最后我们的新模型只使用大规模和精确的伪标记图像进行训练。Depth Anything V1 强调了大规模未标记的真实的数据的重要性。在这里在我们的合成标记图像的特殊背景下我们将从三个方面更详细地说明它的不可或缺的作用。弥合领域差距。如前所述由于分布偏移从合成训练图像直接转换为真实的测试图像具有挑战性。但是如果我们能够利用额外的真实的图像作为中间学习目标则该过程将更加可靠。直观地在对伪标记真实的图像进行明确训练之后模型可以更加熟悉真实世界的数据分布。与手动注释的图像相比我们自动生成的伪标签粒度更细更完整如图17所示。增强场景覆盖。合成图像的多样性有限没有包含足够的真实世界场景。然而我们可以通过合并来自公共数据集的大规模未标记图像来轻松覆盖许多不同的场景。此外合成图像确实非常冗余因为它们是从预定义的视频中重复采样的。相比之下未标记的真实的图像清晰可辨信息量很大通过对足够的图像和场景进行训练模型不仅表现出更强的零样本MDE能力如图6所示“未标记的真实的图像”但它们也可以作为下游相关任务的更好的预训练源。将知识从最有能力的模型转移到较小的模型。我们在图5中显示较小的模型不能直接受益于合成到真实的转移。然而配备了大规模未标记的真实的图像它们可以学习模仿最有能力的模型的高质量预测类似于知识蒸馏。但不同的是我们的蒸馏是通过额外的未标记的真实的数据在标签级强制执行的而不是在原始标记数据的特征或logit级强制执行的。这种做法更安全因为有证据表明特征级蒸馏并不总是有益的特别是当师生比例差距巨大时。最后如图16所示未标记的图像极大地提高了我们较小模型的鲁棒性Depth Anything V2Overall Framework根据上述所有分析我们训练Depth Anything V2的最终管道是清晰的图7。它包括三个步骤完全基于高质量的合成图像训练基于DINOv 2-G的可靠教师模型。在大规模未标记的真实的图像上产生精确的伪深度。在伪标记的真实的图像上训练最终的学生模型以实现鲁棒的泛化我们将在该步骤中展示合成图像是不必要的。我们将发布四个学生模型分别基于DINOv2 small、base、large和giant。图7Depth Anything V2.我们首先在精确的合成图像上训练最有能力的教师。然后为了减轻合成数据的分布偏移和有限的多样性我们与教师一起注释未标记的真实的图像。最后我们在高质量的伪标记图像上训练学生模型。Details如表7所示我们使用五个精确的合成数据集595 K图像和8个大规模伪标记的真实的数据集62M图像进行训练。与V1 相同对于每个伪标记样本我们在训练期间忽略其前n个最大损失区域其中n设置为10%。我们将它们视为潜在的噪声伪标签。类似地我们的模型产生仿射不变的逆深度。我们使用两个损失项对标记图像进行优化尺度和平移不变损失Lssi和梯度匹配损失Lgm。这两个目标函数并不是新的因为它们是由MiDaS 提出的。但不同的是我们发现Lgm在使用合成图像时对深度清晰度非常有益第B.7节。在伪标记图像上我们遵循V1添加额外的特征对齐损失以保留来自预训练的DINOv2编码器的信息语义。表7我们的训练数据来源。A New Evaluation Benchmark: DA-2KLimitations in Existing Benchmarks在第2节中我们证明了常用的真实的训练集具有噪声深度标签。在这里我们进一步论证了广泛采用的测试基准也是噪声的。图8说明了尽管使用了专门的深度传感器但NYU-D 上的镜子和薄结构的错误注释。如此频繁的标签噪声使得强大的MDE模型的报告指标不再可靠。图8广泛采用但确实存在噪声的测试基准的可视化]。如突出显示的那样镜子和薄结构的深度不正确黑色像素被忽略。相比之下我们的模型预测是准确的。噪声将导致更好的模型而不是获得更低的分数。除了标签噪声之外这些基准测试的另一个缺点是多样性有限。它们中的大多数最初是针对单个场景提出的。例如NYU-D 专注于一些室内房间而KITTI 只包含几个街道场景。这些基准测试的性能可能无法反映真实世界的可靠性。理想情况下我们希望MDE模型可以稳健地处理任何不可见的场景。这些现有基准测试的最后一个问题是分辨率低。它们大多提供分辨率约为500 x 500的图像。但对于现代相机我们通常需要对更高分辨率的图像进行精确的深度估计例如1000 x 2000。目前尚不清楚从这些低分辨率基准测试中得出的结论是否可以安全地转移到高分辨率基准测试中。DA-2K考虑到上述三个限制我们的目标是构建一个用于相对单目深度估计的通用评估基准该基准可以1提供精确的深度关系2覆盖广泛的场景3包含大多数现代使用的高分辨率图像。事实上人类注释每个像素的深度是不切实际的特别是对于野外图像。因此遵循DIW 我们为每个图像标注稀疏深度对。通常给定一个图像我们可以选择其上的两个像素并确定它们之间的相对深度即哪个像素更接近。具体地说我们使用两个不同的管道来选择像素对。在第一个管道中如图9a所示我们使用SAM 来自动预测对象遮罩。我们利用提示它们的关键点像素来代替遮罩。我们随机采样两个关键像素并查询四个专家模型和我们的对它们的相对深度进行投票。如果存在分歧该对将被发送给人类注释者以决定真正的相对深度。由于潜在的模糊性注释者可以跳过任何对。然而可能会有所有模型都错误地预测具有挑战性的对的情况为了解决这个问题我们引入了第二个管道在那里我们仔细分析图像并手动识别具有挑战性的对。图9我们提出的评估基准DA-2K。a两点之间相对深度的注释管道。基于SAM 掩码预测对点进行采样。四个深度模型之间不一致的对将弹出供注释器标记。B我们场景覆盖的详细信息。为了保证精确性所有的标注都要经过另外两个标注者的三重检查。为了保证多样性我们首先总结了MDE的八个重要应用场景图9b并要求GPT4生成与每个场景相关的不同关键字。然后我们使用这些关键字从Flickr下载相应的图像。最后我们总共用2K像素对标注1K图像。由于篇幅所限请参阅C节了解详细信息以及与DIW的比较。DA-2K的定位。尽管有这些优势我们并不期望DA-2K取代目前的基准。精确的稀疏深度与场景重建所需的精确密集深度仍然相距甚远。然而DA-2K可以被认为是准确的密集深度的先决条件。因此我们相信DA-2K可以作为现有基准的有价值的补充因为它广泛的场景覆盖和精度。它还可以作为用户选择DA-2K覆盖的特定场景的社区模型的快速事先验证。最后我们相信它也是未来多模态LLM三维感知的潜在试验平台。表8将我们的Depth Anything V2编码器转移到语义分割。我们采用Mask2Former作为我们的分割模型。我们在没有Mapillary 或COCO 预训练的情况下实现了结果。ExperimentImplementation details遵循Depth Anything V1 我们使用DPT 作为我们的深度解码器构建在DINOv 2编码器上。所有图像都是在518×518的分辨率下训练的方法是将较短的尺寸调整为518然后随机裁剪。在合成图像上训练教师模型时我们使用64的批量大小进行160 K次迭代。在伪标记的真实的图像上训练的第三阶段该模型以192的批量大小进行480 K次迭代的训练。我们使用Adam优化器并将编码器和解码器的学习率分别设置为5e-6和5e-5。在这两个训练阶段中我们不平衡训练数据集而是简单地连接它们。Lssi和Lgm的权重比设置为12。Zero-Shot Relative Depth Estimation传统基准测试的性能。由于我们的模型预测仿射不变的逆深度为了公平起见我们在五个看不见的测试数据集上与Depth Anything V1 和MiDaS V3.1 进行比较。如表2所示我们的结果上级MiDaS与V1 相当。我们在两个数据集上的指标略低于V1。然而这些数据集上的普通度量不是本文的重点。该版本旨在为薄结构提供细粒度的预测并为复杂场景透明物体等提供鲁棒的预测。这些方面的改进无法正确反映在当前的基准测试中。表二零样本相对深度估计。更好AbsRel ↓δ1 ↑。仅从指标来看Depth Anything V2优于MiDaS但仅与V1相当。但事实上我们V2的重点和优势例如细粒度的细节、对复杂布局的鲁棒性、透明对象等不能正确地反映在这些基准上。即模型更好但评分更差也在中观察到。在我们提出的基准测试DA-2K上的性能。如表3所示在我们提出的具有不同场景的基准测试上即使是我们最小的模型也明显优于其他基于SD的模型例如Marigold 和Geowlord 。我们最有能力的模型在相对深度分辨方面比Margold高出10.6%的准确度。请参阅表14了解综合性能。我们的模型的场景性能。表3在我们提出的DA-2K评估基准上的性能其中包括八个代表性的场景。即使是我们最轻量级的模型也上级所有其他社区模型。Fine-tuned to Metric Depth Estimation为了验证我们模型的泛化能力我们将其编码器转移到下游度量深度估计任务。首先与V1 相同我们遵循ZoeDepth 管道但用我们的预训练编码器替换其MiDaS 编码器。如表4所示我们在NYU-D和KITTI数据集上实现了比以前方法的显着改进。值得注意的是即使是我们基于ViT-S的最轻量级模型也上级基于ViT-L的其他模型。表4将我们的Depth Anything V2预训练编码器微调为域内度量深度估计即训练和测试图像共享相同的域。所有比较方法都使用接近ViT-L的编码器大小。虽然报告的指标看起来令人印象深刻但由于训练集中的固有噪声在NYUv2或KITTI上训练的模型无法产生细粒度的深度预测并且对透明物体不鲁棒。因此为了满足多视图合成等现实应用我们在Hypersim 和Virtual KITTI 合成数据集上微调了我们强大的编码器用于室内和室外度量深度估计我们将发布这两个度量深度模型。请参考图15与以前的ZoeDepth方法进行定性比较。Ablation Study由于篇幅所限除了两个关于伪标签的消融外我们将大部分消融推迟到附录。大规模伪标记的真实的图像的重要性。如表5所示与仅在合成图像上训练相比我们的模型通过合并伪标记的真实的图像得到了极大的增强。与Depth Anything V1 不同我们进一步尝试在训练学生模型期间删除合成图像。我们发现这甚至可以为较小的模型带来稍好的结果例如ViT-S和ViT-B。所以我们最终选择纯粹在伪标记图像上训练学生模型。这种观察确实类似于SAM 它只释放其伪标记掩码。表5伪标记的未标记的真实的图像的重要性Di. Di精确标记的合成图像。在真实的标记图像上的伪标记与手动标记。我们之前在图4a中已经证明现有的标记真实的数据集非常嘈杂。在这里我们进行定量比较。我们使用来自DIML 数据集的真实的图像并分别比较其原始手动标签和我们生成的伪标签下的传输性能。我们可以在表6中观察到使用伪标签训练的模型这个巨大的差距表明了我们的伪标签的高质量和当前标记的真实的数据集中的丰富噪声。表6原始手动标签和我们在DIML数据集上生成的伪标签之间的比较。我们生产的伪标签比DIML提供的手动标签质量高得多。Related Work单目深度估计。早期的作品专注于域内度量深度估计其中训练图像和测试图像必须共享相同的域。由于其应用场景受限最近零样本相对单目深度估计受到越来越多的关注。其中一些作品通过更好的建模方式解决了这一任务例如使用稳定扩散作为深度去噪器。其他作品专注于数据驱动的视角。例如MiDaS 和Metric3D 分别收集2M和8M标记图像。意识到放大标记图像的困难Depth Anything V1 利用62M未标记图像来增强模型的鲁棒性。在这项工作中不同的是我们指出了广泛使用的标记真实的图像的多种局限性。因此我们特别强调了诉诸合成图像以确保深度精度的必要性。同时为了解决合成图像引起的泛化问题我们采用数据驱动大规模伪标记的真实的图像和模型驱动按比例放大教师模型策略。从未标记的真实的图像中学习。如何从未标记的图像中学习信息表示在半监督学习领域得到了广泛的研究。然而他们专注于学术基准仅允许使用小规模的标记和未标记的图像。相比之下我们研究了真实世界的应用场景即如何用62M未标记图像进一步提升0.6M标记图像的基线。此外与Depth Anything V1 不同我们展示了未标记真实的图像不可或缺的作用特别是当我们用合成图像替换所有标记的真实的图像时我们证明“精确的合成数据伪标记的真实的数据”是比标记的真实的数据更有前途的路线图。知识蒸馏。我们从我们最有能力的教师模型中提取可转移的知识到更小的模型中。这与知识蒸馏KD的核心精神相似。但我们也有根本的不同因为我们通过额外的未标记的真实的图像在预测水平上进行蒸馏而KD 通常通过标记图像在特征或logit水平上研究更好的蒸馏策略我们旨在揭示大规模未标记数据和更大教师模型的重要性而不是精致的损失设计或蒸馏管道。此外直接在具有巨大规模差距的两个模型之间提取特征表示确实是不平凡的和有风险的。相比之下我们的伪标签蒸馏更容易和更安全甚至从1.3B参数的模型到25M参数的模型。现有 MDE 模型分为两大阵营以Depth Anything V1为代表的判别式模型优势是复杂场景鲁棒性强、推理高效但无法精准建模细粒度结构如细网、透明物体以Marigold为代表的 SD 类生成式模型优势是细节丰富但推理低效且复杂场景鲁棒性差具体对比如下表模型类型细粒度细节透明 / 反光物体复杂场景推理效率迁移性Marigold生成式✓✓✗✗✗Depth Anything V1判别式✗✗✓✓✓Depth Anything V2优化判别式✓✓✓✓✓Conclusion在这项工作中我们提出了一个更强大的单目深度估计基础模型Depth Anything V2它能够1提供鲁棒的细粒度深度预测2支持各种模型大小的广泛应用从25 M到1.3B参数3容易被罚款-调整到下游任务作为一个有前途的模型初始化。我们揭示了关键的发现为建立一个强大的MDE模型铺平了道路。此外针对现有测试集多样性差、噪声大的问题构建了一个通用的评估基准DA-2K该基准涵盖了具有精确且具有挑战性的稀疏深度标签的各种高分辨率图像。Depth Anything V2 选择 “教师模型仅用合成数据、学生模型仅用伪标注真实数据” 的训练范式该范式的核心是分离 “精度构建” 与 “泛化适配” 任务教师模型用合成数据可避免真实数据的噪声干扰最大化标签精度学生模型用伪标注真实数据可弥合合成数据的域差距同时规避真实标注的细节缺失。直接混合合成与真实标注数据不可行实验表明即使仅混入 5% 的真实数据如 HRWSI也会破坏合成数据带来的细粒度预测能力导致模型输出重新变得粗糙。DA-2K 基准相比现有 MDE 测试集的核心优势是高精度、多场景、高分辨率弥补了现有基准的三大缺陷。其精度保障依赖三层机制1先通过 SAM 掩码采样像素对确保采样点对应真实物体2用 4 个专家模型对像素对投票仅将分歧样本送入人工标注减少无效标注3所有标注经三人交叉校验过滤模糊 / 歧义样本最终形成的稀疏深度对可作为稠密深度评估的可靠先验。Depth Anything V2 的损失函数分 “教师合成数据训练” 和 “学生伪标注数据训练” 两阶段各损失针对不同阶段的核心矛盾设计教师模型损失合成数据训练L_ssi L_gm权重比 1:2尺度偏移不变损失L_ssi.数学本质与 V1 一致通过对深度做零均值、单位尺度归一化消除数据集间的量纲差异实现跨数据集统一监督保证模型对合成数据的深度尺度鲁棒性为伪标签生成提供稳定基准。梯度匹配损失L_gm强制模型预测的深度梯度与合成标签梯度匹配解决合成数据训练模型的深度锐度不足问题实验证明权重从 0.5 提升至 2.0 时细结构预测锐度持续增强见图 10。图10梯度匹配损失Lgm在细粒度细节方面的影响。学生模型损失伪标注数据训练L_ssi L_gm 特征对齐损失特征对齐损失数学本质与 V1 一致计算学生模型特征与冻结 DINOv2 特征的余弦相似度仅对相似度低于阈值的像素计算损失保留 DINOv2 的语义先验提升模型对真实场景的语义理解能力同时避免语义信息破坏深度的局部判别性。优先保证细粒度精度L_gm 在合成数据上的强监督是细结构预测的关键其次保证泛化性特征对齐损失与伪标注数据结合弥合域差距最后保证跨数据集兼容性L_ssi 实现不同数据的统一监督。Depth Anything V2 的算法设计是“数据范式革新 模型蒸馏优化 评估基准升级”的协同成果通过合成数据解决精度问题通过伪标注真实数据解决泛化问题通过多尺度架构解决效率问题最终实现了判别式 MDE 模型的性能突破。其核心贡献不仅是指标的提升更是为 MDE 领域提供了 “合成数据筑底 真实伪标注拓界” 的通用范式。代码仓库结构与核心组件核心模块 / 文件功能说明depth_anything_v2/模型核心代码包含网络结构定义基于 DINOv2 编码器 DPT 头。metric_depth/基于预训练模型微调的 metric 深度估计模块支持室内 / 室外场景。run.py单张图像深度估计推理脚本。run_video.py视频序列深度估计脚本支持长视频一致性深度生成。app.pyGradio 交互式演示程序方便可视化测试。DA-2K.md自定义的 DA-2K 基准测试集说明用于评估相对深度估计性能。研究工作的核心是基于DINOv2 编码器和DPT 解码器的深度估计框架代码中通过以下组件实现DINOv2 编码器depth_anything_v2/dinov2.py基于 Facebook 的 DINOv2 预训练模型视觉 Transformer负责提取图像的多尺度特征。代码中DinoVisionTransformer类实现了该编码器支持不同参数规模vits/vitb/vitl/vitg并通过interpolate_pos_encoding适配不同输入图像尺寸。DPT 解码器depth_anything_v2/dpt.py研究中采用 DPTDense Prediction Transformer结构作为解码器将编码器输出的特征转换为稠密深度图。DPTHead类实现了这一过程通过projects层将多尺度特征投影到统一维度通过resize_layers调整特征图尺寸实现多尺度融合最终通过output_conv生成单通道深度图。模型入口DepthAnythingV2类整合编码器和解码器提供infer_image方法实现端到端的深度估计见 README 中的使用示例。支持不同规模模型参数从 24.8M 到 1.3B适配不同计算资源。Metric 深度估计metric_depth/目录研究中基于预训练的 Depth Anything V2 编码器在 synthetic 数据集Hypersim 用于室内Virtual KITTI 用于室外上微调实现绝对尺度的深度估计。metric_depth/run.py提供微调脚本depth_to_pointcloud.py支持将 metric 深度图转换为点云需输入相机内参体现 metric 深度的实用价值。完整实现了 Depth Anything V2 的研究成果从核心模型DINOv2DPT到扩展功能metric 深度、视频深度再到评估工具DA-2K形成了一套完整的深度估计解决方案。Depth Anything (V1/V2)Depth Anything 是面向单目深度估计的判别式基础模型V1 聚焦 “大规模无标签真实数据挖掘”V2 升级为 “合成数据筑精度 伪标注真实数据拓泛化”全流程围绕数据 - 模型 - 训练 - 评估 - 落地闭环设计维度Depth Anything V1Depth Anything V2核心数据范式「有标签真实数据 无标签真实数据」双轨「合成标注数据 伪标注真实数据」双轨完全摒弃真实标注数据规模 / 来源- 有标签1.5M6 个公开数据集如 NYU-D/KITTI- 无标签62M8 个数据集如 SA-1B- 合成标注595K5 个数据集如 BlendedMVS/Hypersim- 伪标注真实62M同 V1标注类型 / 格式- 有标签稠密深度图.png/.npy单通道浮点型单位 m- 无标签无标注仅原始 RGB- 合成标注稠密深度图无噪声细粒度标注- 伪标注由 DINOv2-G 教师模型生成的稠密深度图标注工具 / 逻辑- 真实标注依赖 LiDAR / 立体匹配 / SfM存在噪声- 无标签无标注- 合成标注3D 引擎渲染如 Blender- 伪标注源码depth_anything_v2/run.py的教师模型推理生成源码数据加载类datasets/base_dataset.py支持 NYU/KITTI 等格式datasets/synthetic_dataset.pydatasets/real_dataset.py区分合成 / 伪标注数据输入图像RGB 三通道分辨率统一 resize 为「短边 518px」训练时随机裁剪 518×518源码transforms.py的ResizeRandomCrop深度标签单通道浮点型数组值为相对 / 绝对深度V1 侧重相对V2 新增 metric 深度后支持绝对源码中存储为.npy高效或.png8/16 位量化数据组织形式dataset_root/ ├── rgb/# 按场景/数据集分文件夹如nyu/rgb/0001.jpg├── depth/# 对应深度标签如nyu/depth/0001.npy└── splits/# 训练/测试划分txt每行是图像文件名无后缀数据增强核心作用提升鲁棒性V2 强化细粒度增强策略实现方式源码transforms.py作用V1/V2 差异颜色畸变随机亮度 / 对比度 / 饱和度0.8-1.2 倍、高斯模糊核大小 3/5、灰度化概率 0.2降低模型对颜色的依赖提升泛化V2 新增 “色彩匹配”对齐合成 / 真实数据色域空间畸变CutMix概率 0.5随机矩形区域混合两张图、随机水平翻转概率 0.5CutMix 提升空间鲁棒性翻转扩充数据V2 CutMix 仅用于伪标注数据避免破坏合成数据细粒度尺度扰动随机缩放0.75-1.25 倍后裁剪适配不同物体尺度一致噪声过滤V2 新增伪标注时忽略 top10% 高损失区域源码pseudo_labeling.py过滤伪标签噪声V1 无因 V1 伪标签由小模型生成V2 由大模型生成但仍需过滤核心架构DINOv2 编码器 DPT 解码器V1/V2 一致仅编码器规模升级输入RGB图像DINOv2视觉Transformer编码器多尺度特征提取-4个stage输出DPT解码器特征投影多尺度特征融合-上采样拼接深度图回归-单通道输出各模块前向计算与作用源码depth_anything_v2/dinov2.pydpt.pyDINOv2 编码器: 图像分 patch16×16→ 线性投影为 token 位置编码经 12/24/32/40 层 Transformer对应 ViT-S/B/L/G→ 输出 4 个 stage 的特征分辨率1/4, 1/8, 1/16, 1/32位置编码支持动态插值interpolate_pos_encoding适配任意输入分辨率。继承 DINOv2 预训练的通用视觉表征兼顾语义理解与空间结构感知。模型规模层数隐藏维度参数量学习率训练ViT-S1238424.8M5e-6ViT-B2476886.6M5e-6ViT-L321024335M5e-6ViT-G4015361.3B5e-6DPT 解码器: 特征投影将编码器 4 个 stage 的特征通过 1×1 卷积投影到统一维度256多尺度融合从最深层1/32开始逐层上采样转置卷积并与浅层特征拼接深度回归最终拼接特征经 3×3 卷积→1×1 卷积→单通道深度图分辨率与输入一致。将 Transformer 的全局特征转换为稠密像素级深度预测弥补编码器 “低分辨率” 缺陷。关键参数源码dpt.py投影维度256平衡精度与计算量上采样方式转置卷积stride2kernel4输出激活无深度值为浮点型无需 sigmoid/softmax。前向传递完整流程源码DepthAnythingV2类forward方法defforward(self,x):# 1. 编码器提取多尺度特征featuresself.encoder.get_intermediate_layers(x,n4,reshapeTrue)# 2. 解码器投影融合outself.decoder(features)# 3. 深度图上采样至输入尺寸outF.interpolate(out,sizex.shape[2:],modebilinear,align_cornersFalse)returnout端到端实现 “RGB→深度图”V1/V2 仅编码器预训练权重、解码器初始化略有差异V2 解码器从 0 初始化V1 复用 MiDaS 初始化。损失函数总览V1/V2 对比损失类型公式核心设计目标V1/V2 差异尺度偏移不变损失L_ssiL s s i d ^ ∗ − d ^ \mathcal{L}_{ssi}\hat{d}^* - \hat{d}Lssid^∗−d^d ^ \hat {d}d^为归一化深度消除深度尺度 / 偏移差异统一监督一致梯度匹配损失L_gmL g m ∇ d ^ ∗ − ∇ d ^ \mathcal{L}_{gm}\nabla \hat{d}^* - \nabla \hat{d}Lgm∇d^∗−∇d^∇ \nabla∇为梯度提升深度图锐度保留细粒度V2 新增权重 2:1相对 L_ssi特征对齐损失L_featL f e a t 1 − c o s ( f , f d i n o v 2 ) \mathcal{L}_{feat}1 - cos(f, f_{dinov2})Lfeat1−cos(f,fdinov2)余弦相似度继承 DINOv2 语义先验V1/V2 一致V2 阈值 α0.85无标签损失L_uCutMix 分区域加权 L_ssi利用无标签 / 伪标注数据监督V1 用于无标签真实数据V2 用于伪标注真实数据L_ssi解决 “多数据集深度量纲不一致” 问题如 NYU-D 是室内米级KITTI 是室外米级通过归一化深度 - 中位数 / 均值绝对偏差实现 “相对深度” 监督是核心回归损失L_gmV2针对 V1 深度图 “过度平滑” 缺陷通过梯度约束强制模型还原细结构如玻璃、细网是细粒度优化损失L_feat弥补 “深度回归仅关注距离忽略语义” 的问题通过对齐 DINOv2 特征让模型理解 “桌子在椅子上” 等语义关系提升复杂场景鲁棒性L_u将无标签 / 伪标注数据转化为有效监督V1 解决 “有标签数据少”V2 解决 “合成数据域偏移”。损失权重与训练阶段源码losses.pyV1L t o t a l ( L l L u L f e a t ) / 3 \mathcal{L}_{total} (\mathcal{L}_{l} \mathcal{L}_{u} \mathcal{L}_{feat}) / 3Ltotal(LlLuLfeat)/3有标签无标签批次比 1:2V2教师L t o t a l L s s i 2 ∗ L g m \mathcal{L}_{total} \mathcal{L}_{ssi} 2*\mathcal{L}_{gm}LtotalLssi2∗Lgm合成数据无 L_featV2学生L t o t a l ( L s s i 2 ∗ L g m L f e a t ) / 4 \mathcal{L}_{total} (\mathcal{L}_{ssi} 2*\mathcal{L}_{gm} \mathcal{L}_{feat}) / 4Ltotal(Lssi2∗LgmLfeat)/4伪标注数据为主侧重点V1 侧重 “泛化性”V2 侧重 “精度 泛化”L_gm 是 V2 细粒度提升的核心。训练技巧作用与落地源码train.py训练技巧实现方式作用论文验证V1/V2 差异学习率策略编码器 5e-6解码器 5e-5解码器 10 倍线性衰减无 warmup保护编码器预训练特征解码器快速拟合V2 训练迭代更长教师 160K学生 480K批次配比V1有标签无标签 1:2; V2合成伪标注 0:1教师仅合成学生仅伪标注平衡不同数据的监督强度V2 无混合数据避免合成 / 真实冲突模型初始化V1解码器复用 MiDaS 权重V2全模型从 0 初始化编码器加载 DINOv2 预训练V2 避免 MiDaS 平滑缺陷核心差异V2 更依赖合成数据监督梯度裁剪max_norm1.0源码torch.nn.utils.clip_grad_norm_防止梯度爆炸稳定训练一致混合精度训练FP16NVIDIA AMP降低显存占用提升训练速度V2 ViT-G 必须用否则显存不足伪标签过滤V2忽略 top10% 高损失区域源码pseudo_labeling.py过滤伪标签噪声提升监督质量V1 无因 V1 伪标签质量低编码器低学习率保留 DINOv2 语义先验是 “多任务迁移”如语义分割的基础批次配比V1 解决无标签数据利用率V2 避免合成 / 真实数据的域冲突梯度裁剪 混合精度支撑 62M 大规模数据训练V2 ViT-G 训练需 8 卡 A100混合精度可节省 50% 显存。核心评估维度相对深度 Metric 深度指标类型具体指标计算公式核心意义相对深度δ1/δ2/δ3δk % of pixels where max(d*/d, d/d*) 1.25^k预测与真值的相对误差δ1 越接近 1 越好相对深度AbsRel1 N ∑ d ∗ − d d ∗ \frac{1}{N}\sum\frac{d^* - d}{d^*}N1∑d∗d∗−d平均绝对相对误差越小越好相对深度RMSE1 N ∑ ( d ∗ − d ) 2 \sqrt{\frac{1}{N}\sum(d^* - d)^2}N1∑(d∗−d)2均方根误差越小越好Metric 深度SqRel1 N ∑ ( d ∗ − d ) 2 d ∗ \frac{1}{N}\sum\frac{(d^* - d)^2}{d^*}N1∑d∗(d∗−d)2平方相对误差对大误差敏感自定义基准V2DA-2K 准确率正确预测的深度对比例深度比 3多场景鲁棒性评估计算实现源码eval.pydefcompute_metrics(pred,gt,mask):# 掩码过滤无效像素如gt0predpred[mask]gtgt[mask]# 计算AbsRelabs_reltorch.mean(torch.abs(pred-gt)/gt)# 计算δ1ratiotorch.max(pred/gt,gt/pred)delta1torch.mean((ratio1.25).float())returnabs_rel.item(),delta1.item()可视化方式源码visualization.py可视化类型实现方式观察分析维度深度图渲染归一化深度值→伪彩色映射jet/rainbow 色板叠加 RGB 图像对比1. 细结构是否还原如细网、玻璃2. 物体边界是否清晰3. 整体深度层次是否合理梯度热力图计算深度图梯度→热力图渲染V2 L_gm 是否生效梯度越明显越好点云可视化深度图 相机内参→点云Open3DRGB 着色3D 结构是否正确如室内家具布局误差热力图预测 - 真值的绝对误差→热力图红 大误差绿 小误差误差集中区域如透明物体、动态区域视频时序可视化逐帧深度图拼接添加光流约束的一致性渲染帧间深度是否连贯无闪烁结果后处理源码post_processing.py后处理策略实现方式作用尺度校准Metric预测深度 × 缩放因子 偏移量通过最小二乘拟合真值相对深度→绝对深度边缘平滑引导滤波guided filter以 RGB 图像为引导保留边缘的同时降低噪声时序平滑视频前一帧深度图加权融合权重 0.3降低视频深度闪烁异常值过滤裁剪深度值至 [0.1, 100] m室内/[0.1, 200] m室外去除离谱预测值真实标注数据存在两类问题一是标签噪声深度传感器无法捕捉透明物体、立体匹配易受重复纹理干扰、SfM 对动态物体失效二是细节缺失对细结构 / 物体边界标注粗糙导致模型预测过度平滑。合成标注数据标签精度高且细节完整但存在域偏移风格 / 色彩与真实图像差异大和场景覆盖局限仅含预定义场景无拥挤人群等真实场景。教师模型训练采用 DINOv2-G 编码器 DPT 解码器仅用 595K 合成数据训练损失为尺度偏移不变损失L s s i L_{ssi}Lssi**与**梯度匹配损失L g m L_{gm}Lgm权重比 1:2L g m L_{gm}Lgm提升深度锐度。伪标签生成教师模型为 62M 真实无标签图像生成高精度深度伪标签训练时忽略 top10% 高损失区域过滤潜在噪声。学生模型训练基于 DINOv2-S/B/L/G 多尺度编码器仅用伪标注真实数据训练额外加入DINOv2 特征对齐损失保留语义先验最终释放 25M-1.3B 多尺度模型。采用 “SAM 掩码采样 模型分歧筛选 人工校验” 流程先通过 SAM 生成物体掩码并采样像素对再用 4 个专家模型投票分歧样本由人工标注相对深度绿色点更近、红色点更远最终标注 1K 图像、2K 像素对。涵盖8 类典型场景室内20%、室外17%、非真实15%、透明 / 反光10%、恶劣风格、航拍、水下、物体且以 1500×2000 级高清图像为主。平衡的关键是 “合成数据筑精度伪标注真实数据拓泛化” 的双阶段方案先通过合成数据为教师模型注入细结构监督再通过大规模伪标注真实数据将知识迁移到学生模型。与 V1 的本质区别在于V1 依赖 “真实标注 无标签数据”存在真实数据的噪声 / 细节缺陷V2 完全摒弃真实标注用合成数据保证标签精度同时通过伪标注真实数据解决合成数据的域偏移问题实现 “细粒度 鲁棒性” 的统一。