跳到主要内容
Metric3D v2: 零样本单目度量深度与表面法线估计几何基础模型 | 极客日志
Python AI 算法
Metric3D v2: 零样本单目度量深度与表面法线估计几何基础模型 综述由AI生成 Metric3D v2 是一款面向单目图像的零样本度量深度与表面法向量联合估计的几何基础模型。针对度量深度的相机内参歧义和表面法向量的标注稀缺问题,提出了规范相机空间转换模块(CSTM)和联合深度 - 法向量优化模块。模型基于超 1600 万张图像训练,在多个深度与法向量基准上达到 SOTA,并赋能 3D 重建、单目 SLAM 等下游任务。
不羁 发布于 2026/4/6 更新于 2026/5/22 27 浏览Metric3D v2: A Versatile Monocular Geometric Foundation Model for Zero-shot Metric Depth and Surface Normal Estimation
Abstract
Metric3D v2 是一个几何基础模型,用于从一幅图像中进行零样本深度和表面法线估计,这对度量 3D 恢复至关重要。虽然深度和法线在几何上是相关的,并且高度互补,但它们存在不同的挑战。最先进的(SoTA)单目深度方法通过学习仿射不变深度来实现零样本泛化,同时,由于缺乏大规模标记数据,SoTA 法线估计方法的零样本性能有限。为了解决这些问题,我们提出了度量深度估计和表面法线估计的解决方案。
对于度量深度估计,我们指出,零样本单视图模型的关键在于解决各种相机模型和大规模数据训练的度量模糊性。我们提出了一个规范的相机空间转换模块,它明确地解决了模糊性问题,可以毫不费力地插入到现有的单目模型中。
对于表面法向估计,我们提出了一个联合深度 - 法向优化模块,从度量深度中提取多样化的数据知识,使法向估计器能够超越法向标签进行学习。配备了这些模块,我们的深度 - 法向模型可以使用超过 1600 万张图像进行稳定训练来自数千个带有不同类型注释的相机模型,导致零样本泛化到具有看不见的相机设置的野外图像。
我们的方法目前在度量深度,仿射不变深度以及表面法线预测的各种零样本和非零样本基准上排名第一。值得注意的是,我们在包括 NYUv2 和 KITTI 在内的各种深度基准上超过了超新的 MarigoldDepth 和 DepthAnything。我们的方法能够在随机收集的互联网图像上准确恢复度量 3D 结构,为合理的单图像计量铺平了道路。
潜在的好处延伸到下游任务,只需插入我们的模型即可显著改善。例如,我们的模型缓解了单眼 SLAM 的尺度漂移问题,从而实现高质量的度量尺度密集映射。这些应用突出了 Metric3D v2 模型作为几何基础模型的多功能性。
Introduction
单目度量深度和表面法线估计是从单个图像中预测绝对距离和表面方向的任务。作为重要的 3D 表示,深度和法线在几何上是相关的并且高度互补。虽然度量深度在捕获大规模数据方面表现出色,与度量深度相比,表面法线提供了对局部几何的上级保留,并且没有度量模糊性。这些独特的属性呈现深度和各种计算机视觉应用中不可或缺的表面法线,包括 3D 重建,神经渲染(NeRF),自动驾驶和机器人。目前,社区仍然缺乏一个强大的,可概括的几何基础模型能够从单个图像生成高质量的度量深度和表面法线。
度量深度估计和表面法线估计面临着不同的挑战。现有的深度估计方法分为学习度量深度,相对深度和仿射不变深度。尽管度量深度方法在各种基准测试中取得了令人印象深刻的准确性,他们必须使用相同的相机本质对数据集进行训练和测试。因此,度量深度方法的训练数据集通常很小,因为很难使用一个相同的相机收集覆盖不同场景的大型数据集。其结果是,所有这些模型在零样本测试中的泛化能力都很差,更不用说测试图像的相机参数也可能变化。
一个折衷的方法是学习相对深度,它只表示一个点离另一个点更远或更近。相对深度的应用非常有限。学习仿射不变深度在上述两类方法之间找到了一个折衷,即深度达到未知的尺度和位移。对于大规模数据,它们在训练过程中解耦了度量信息,并实现了令人印象深刻的鲁棒性和泛化能力,例如 MiDaS,DPT,LeReS,HDN。问题是未知的偏移会导致 3D 重建失真,非度量深度无法满足各种下游应用。
同时,这些模型不能生成表面法线。尽管将深度提升到 3D 点云可以做到这一点,但它对预测深度的准确性和精细细节提出了很高的要求。否则,各种伪影将保留在这种转换的法线中。例如,图 2 显示了来自 Marigold 深度的噪声法线,它在产生高分辨率精细深度方面表现出色。而不是直接转换,最先进的(SoTA)表面法线估计方法倾向于训练高质量法线注释的估计器。
与传感器捕获的地面实况(GT)不同,这些注释是从精心和密集重建的场景中导出的,其对捕获设备和场景都具有极其严格的要求。数据源主要包括合成创建或 3D 室内重建。真实的和多样化的室外场景是非常罕见的。受此标签缺陷的限制,SoTA 表面法线方法通常与强大的零样本泛化相斗争。这项工作致力于通过开发零样本,单视图,度量深度的多任务基础模型来解决这些挑战,和表面法线估计。
我们针对零样本度量深度和表面法线估计的挑战提出了有针对性的解决方案。对于度量尺度恢复,我们首先分析了单目深度估计中的度量模糊问题,并研究了深度方面的不同相机参数,包括像素大小,焦距和传感器大小。我们观察到焦距是精确度量恢复的关键因素。通过设计,仿射不变深度方法在训练过程中没有考虑焦距信息。如 3.1 节所示,仅从图像外观来看,不同的焦距可能会导致度量模糊,因此它们在训练中解耦了深度尺度。为了解决焦距变化的问题,CamConv 对网络中的相机模型进行编码,这迫使网络从图像外观中隐式地理解相机模型,然后将成像大小与真实世界的大小联系起来。
然而,训练数据包含有限的图像和摄像机类型,这对数据多样性和网络容量提出了挑战。我们在训练中提出了一种规范的摄像机变换方法,灵感来自人体重建方法的规范姿势空间。我们将所有的训练数据转换到一个规范的相机空间,在这个空间中,处理后的图像被粗略地认为是由同一个相机捕获的。
为了实现这种转换,我们提出了两种不同的方法。第一种方法试图调整图像外观以模拟规范相机,而另一种方法则转换 GT 标签以进行监督。相机模型不在网络中编码,使我们的方法易于适用于现有架构。在推理过程中,采用去规范变换来恢复度量信息。为了进一步提高深度精度,我们提出了一种随机建议归一化损失。它受到尺度移位不变损失的启发解耦深度尺度以强调单个图像的分布。然而,它们在整个图像上执行,这不可避免地挤压了细粒度的深度差异。我们建议从图像中随机裁剪几个补丁,并对其实施尺度平移不变损失。我们的损失强调了单个图像的局部几何形状和分布。
对于表面法线,最大的挑战是缺乏多样的(室外)注释。与基于重建的注释方法相比,直接从网络预测的深度产生法线标签更有效和可扩展。然而,这种伪法线标签的质量受到深度网络的准确性的限制。幸运的是,我们观察到,鲁棒的度量深度模型是可扩展的几何学习器,包含丰富的正态估计信息,通过学习的度量深度转换的伪正常标注的弱监督可以有效地防止由于 GT 缺失而导致的正态估计崩溃。
此外,这种监督可以指导正态估计器在大规模未标记数据上进行推广。基于这种观察,我们提出了一个联合深度 - 正态优化模块,以从不同的深度数据集中提取知识。在优化过程中,我们的正态估计器从三个来源学习:(1)Groundtruth 正常标签,尽管它们与深度注释相比要少得多(2)约束深度法线一致性的明确学习目标。通过特征融合从深度到正常的隐式和彻底的知识转移,这比显式对应物更能容忍不满意的初始预测。
为了实现这一点,我们使用深度递归块实现优化模块。虽然以前的研究人员使用类似的递归模块来优化深度,视差,自我运动或光流,但这是第一次在基于学习的方案中迭代优化法线和深度。受益于联合优化模块,我们的模型可以有效地从大规模深度数据集中学习正常知识,即使没有标签。
使用所提出的方法,我们可以稳定地将模型训练扩展到来自 16 个不同场景类型(室内和室外,真实的或合成数据),相机模型(数万个不同的相机)和注释类别(有或没有正常)的 1600 万张图像,从而实现零样本可移植性和显着提高的准确性。
我们提出了一种规范的相机变换方法来解决度量深度在不同相机设置下的模糊性,这种方法有助于使用大规模数据集训练零样本单目度量深度模型。
我们设计了一个随机的建议归一化损失,以有效地提高度量深度。
我们提出了一个联合深度 - 法线优化模块,用于在没有法线注释的大规模数据集上学习法线,从度量深度估计器中提取知识。
我们的模型在各种深度和表面法线基准中排名第一。它可以在野外执行高质量的 3D 度量结构恢复,并有利于几个下游任务,如 monoSLAM,3D 场景重建和计量。
Related Work 从单个图像进行 3D 重建。从单个图像重建不同对象在先前的研究中已经得到了广泛的研究。这些方法在生成包含各种实体(如汽车、飞机、桌子和人体)的高保真 3D 模型方面表现出了熟练程度。主要挑战在于优化对象细节的恢复,在有限的内存资源内设计有效的表示,并在更广泛的对象范围内实现泛化。
然而,这些方法通常取决于学习对象特定或实例特定的先验,通常来自 3D 监督,从而使它们不适合全面的场景重建。除了上述关于对象重建的努力之外,一些研究集中在从单个图像重建场景。Saxena 等人采用将整个场景分割成多个小平面的方法,其中 3D 结构基于这些平面的取向和定位来表示。最近,LeReS 提出采用鲁棒的单目深度估计模型来进行场景重构。尽管如此,他们的方法仅限于恢复一定规模的形状。Zhang 等人最近介绍了一种零样本几何 - 保留深度估计模型能够提供深度预测到一个未知的规模。与上述方法相比,我们的方法在恢复场景的度量 3D 结构方面表现出色。
监督单目深度估计。在建立了几个基准之后,基于神经网络的方法已经主导了这项任务。这些方法通常通过聚合来自图像的信息来回归连续深度。然而,由于深度分布随着不同的 RGB 值而显着变化,一些方法倾向于将深度离散化并将问题重新表述为分类任务以获得更好的性能。
用于 3D 度量恢复的深度模型的泛化面临两个挑战:适应各种场景并在各种相机设置下预测准确的度量信息。最近的方法通过创建大规模相对深度数据集(如 DIW 和 OASIS)来学习相对关系,有效地解决了第一个挑战,丢失几何结构信息。为了增强几何结构,像 MiDaS,LeReS 和 HDN 这样的方法采用仿射不变深度学习。这些方法利用大规模数据,不断提高性能和场景泛化。然而,它们本质上很难恢复指标信息。因此,在不同场景中实现强大的泛化和准确的指标数据仍然是一个需要解决的关键挑战。目前,ZoeDepth、ZeroDepth 和 UniDepth 应用不同的策略来应对这一挑战。
表面法线估计。与度量深度相比,表面法线没有度量模糊性,并且更好地保留了局部几何形状。这些属性吸引研究人员将法线应用于各种视觉任务,如定位,映射和 3D 场景重建。目前,基于学习的方法占主导地位的单目表面法线估计。由于训练所需的法线标签不能直接由传感器捕获,以前的作品使用核函数从密集的室内深度图中注释法线。这些注释在反射表面上变得不完整,并且在对象边界处变得不准确。为了从这种不完美的注释中学习,GeoNet 提出使用相互转换模块,提出了一种新的自适应表面法线约束,以促进联合深度法线学习,Bae 等人提出了一种基于不确定性的学习目标。
尽管如此,由于有限的数据集大小和场景的多样性,特别是对于户外场景,这些方法进一步提高其泛化能力是具有挑战性的。Omni-data 通过构建 1300 M 法线注释框架来填补这一空白。Normal-in-the-wild 提出了一种高效法线标记的管道。同时的工作 DSINE 也采用不同的数据集来训练可推广的表面法线估计器。然而,进一步扩大正常标签仍然是困难的。这强调了研究意义,在寻找一种有效的方法来提取先验从其他类型的注释。
几何形状的深度迭代细化。迭代细化支持多步从粗到细的预测,并有利于广泛的几何估计任务,例如光流估计、深度完成和立体匹配。经典的迭代优化使用高计算成本的算子直接优化高分辨率输出,限制了研究人员应用更多的迭代来获得更好的预测。为了解决这一限制,RAFT 提出使用 ConvGRU 模块优化中间低分辨率预测。对于单目深度估计,IEBins 采用类似的方法来优化深度箱分布。因此,IronDepth 在预先计算的局部表面上传播深度。关于表面法线细化,Lenssen 等人提出了一种深度迭代方法来优化点云的法线。
Zhao 等人设计一个求解器来联合优化深度和法线,但它需要多视图先验和每个样本后优化。如果没有多视图先验,这种不可学习的优化方法可能会由于初始预测不满意而失败。然而,所有单目方法都独立地对深度或法线进行了优化。相比之下,我们的联合优化模块将深度和法线彼此紧密耦合。
大规模数据训练。最近,各种自然语言问题和计算机视觉问题在大规模数据训练方面取得了令人印象深刻的进展。CLIP 是一种有前途的分类模型,在数十亿对图像 - 语言数据对上训练,Dinov2 收集了 1.42 亿张图像,为视觉变换器进行仅视觉的自监督学习。像 LDM 这样的生成模型也经历了十亿级的数据预训练。对于深度预测,大规模数据训练已经得到广泛应用。Ranft 等人在训练中混合了超过 200 万个数据,LeReS 收集了超过 30 万个数据,Eftekhar 等人还合并了数百万个数据以构建强大的深度预测模型。为了训练零样本表面法线估计器,Omni-data 执行密集重建以生成具有表面法线注释的 14 M 帧。
Method 考虑针孔相机模型,其内参数公式为:
$$ \begin{bmatrix} f/\delta & 0 & u_0 \ 0 & f/\delta & v_0 \ 0 & 0 & 1 \end{bmatrix} $$
其中 $f$ 是焦距(以微米为单位),$\delta$ 是像素大小(以微米为单位),并且 $(u_0, v_0)$ 是主中心。 $f = f / \delta$ 是像素表示的焦距。
针对不同相机焦距导致的度量歧义 (相同成像尺寸对应不同真实距离),提出两种变换方式,将异构数据映射至统一规范空间(焦距固定为 1000 像素):
法向量标注稀缺解决方案:联合深度 - 法向量优化模块,利用深度标注的规模优势,通过 循环精修块(ConvGRU) 实现深度与法向量的迭代协同优化,法向量学习来源包括:
少量真实法向量标注;
深度 - 法向量一致性约束 :通过深度反投影的 3D 点云计算伪法向量,约束预测法向量的几何合理性;
特征级知识蒸馏 :将深度编码器的强表征能力迁移至法向量分支。
深度损失 : $L = L_{silog} + L_{PWN} + L_{VNL} + L_{RPNL}$,随机提议归一化损失(RPNL):随机裁剪 32 个局部 patch 做中位数归一化,避免全图归一化挤压细粒度深度差异;
法向量损失 : $L_n + w_{d-n}L_{d-n}$ 有标注时用不确定性感知损失,无标注时用深度 - 法向量一致性损失。
编码器 :支持 ConvNeXt-Large(ImageNet22K 预训练)和 ViT 系列(DINOv2 预训练,含 Small/Large/Giant2);
解码器 :ConvNeXt 搭配 Hourglass 解码器,ViT 搭配 DPT 解码器,ViT 模型额外增加4-8 轮循环精修 ;
训练配置 :48 张 A100 GPU、batch size=192、初始学习率 0.0001(多项式衰减,power=0.9)、训练 80 万次迭代,数据集在 mini-batch 中均匀采样。
变换方式 训练阶段操作 推理阶段操作 核心作用 CSTM-label 按 $\omega_d=f^c/f$ 缩放真实深度标签,图像不变 按 $1/\omega_d$ 还原为原相机度量深度 直接消除深度标签的焦距歧义 CSTM-image 按 $\omega_r=f^c/f$ 缩放图像 / 光心,同步缩放深度标签 按 $1/\omega_r$ 将深度 resize 至原图尺寸 模拟规范相机成像效果,对齐输入分布
Ambiguity Issues in Metric Depth Estimation 图 5 示出了使用不同相机在不同距离处捕获的照片的实例。仅基于视觉检查,人们可能错误地推断最后两个图像源自可比较的位置并且由同一相机捕获。然而,由于焦距不同,这些图像确实是从不同的位置捕获的。因此,摄像机内参数的准确知识对于从单个图像进行度量估计变得至关重要;最近的方法,如 MiDaS 和 LeReS,通过将度量估计与直接监督解耦来减轻这种度量模糊性,而是优先学习仿射不变深度。
遵循相似性原则,显然:
$$ d_a = \hat S [\frac{\hat f}{\hat S}] = \hat S \cdot \alpha, (1) $$
其中,S 和 S'分别是真实的尺寸和成像尺寸。符号·表示变量以物理度量表示(例如,毫米)。为了从单个图像确定 da,必须访问焦距,对象的成像尺寸和真实世界的对象尺寸。从单个图像估计焦距具有挑战性并且固有地不适定。尽管已经探索了许多方法,实现令人满意的精度仍然是难以实现的。
因此,我们通过假设训练/测试图像的焦距已知来简化场景。相比之下,神经网络更容易理解图像的大小。为了获得真实世界的对象大小,神经网络需要理解语义场景布局和对象,神经网络擅长于此。我们定义 $\alpha = \hat f / \hat S$,表明 da 与α成正比。我们观察以下关于传感器尺寸、像素尺寸和焦距的情况。
O1:传感器尺寸和像素尺寸不影响度量深度估计。基于透视投影(图 6(A)),传感器尺寸只影响视场(FOV),与α无关,因此它不影响度量深度估计。($\delta_1 = 2\delta_2$),但焦距相同,在距离 da 处捕获同一物体。图 6(B)显示了它们捕获的图像。根据表,像素表示的焦距为 $f_1 = \frac 1 2 f_2$。由于第二个相机的像素尺寸较小,因此像素表示图像的分辨率为 $S'_1 = \frac 1 2 S'_2$,尽管两者具有相同的投影成像尺寸 S'。根据等式(1),我们有 $\frac{\hat f}{\delta_1 \cdot S'_1} = \frac{\hat f}{\delta_2 \cdot S'_2}$,这意味着α1 = α2 和 d1 = d2。这意味着相机传感器的变化不会影响度量深度的估计。
O2:焦距对于度量深度估计至关重要。图 5 示出了由未指定焦距引起的度量模糊性的挑战,这在图 7 中进一步讨论。($\hat f_1 = 2\hat f_2$)被定位在距离 $d_1 = 2d_2$ 处,成像尺寸对于两个相机保持一致。神经网络努力仅基于视觉线索来区分不同的监督标签。为了解决这个问题,我们提出了一个规范的相机变换方法,以减少监督要求和图像表示之间的冲突。
与深度不同,表面法线没有任何度量模糊问题。在图 8 中,我们用不同尺度的两个深度图来说明这个概念,表示为 D1 和 D2,分别具有不同的度量 d1 和 d2,其中 d1 < d2。在将深度向上投影到 3D 点云之后,玩偶处于不同的深度 d1 和 d2。然而,对应于某个像素 A' ∈ I 的表面法线 n1 和 n2 保持相同。
Canonical Camera Transformation 基本概念需要建立一个规范的相机空间( $(f^c_x, f^c_y), f^c_x = f^c_y = f^c$ )并将所有训练数据转置到该指定空间中。因此,所有数据可以广义地解释为由标准相机捕获。我们提出了两种变换方法,即变换输入图像( $I \in \mathbb{R}^{H \times W \times 3}$ )或变换地面真实(GT)标签( $D \in \mathbb{R}^{H \times W}$ )。
方法 1:转换深度标签(CSTM 标签)。图 5 的模糊性是针对深度的。因此,我们的初始方法通过转换地面实况深度标签来直接解决这个问题。具体来说,我们在训练期间使用比率 $\omega_d = \frac {f^c}{f}$ 重新缩放地面实况深度(D),表示为 $D_c = \omega_d D^*$。原始相机模型经历到 fc,u0,v0 的转换。在推理中,预测深度(Dc)存在于规范空间中,并且需要去规范变换来恢复度量信息,表示为 $D = \frac 1{\omega_d} D_c$。值得注意的是,输入 I 保持不变,表示为 $I_c = I$。
方法 2:对输入图像(CSTM 图像)进行变换。从另一个角度来看,模糊性是由于图像外观的相似性而产生的。因此,该方法旨在改变输入图像以模拟标准相机的成像效果。具体地,图像 I 使用比率 $\omega_r = \frac{f^c} f$ 进行缩放,表示为 $I_c = T(I, \omega_r)$,其中 T(·) 表示图像 I。作为缩放光学中心的结果,规范照相机模型变为 $f^c, \omega_r u_0, \omega_r v_0$。在推理中,去正则化变换涉及将预测值转换到其原始维度而不进行缩放,表示为 $D = T(D_c, \frac1{\omega_r})$。虽然在 MPSD 中采用了类似的变换来进行归一化深度预测,但我们的方法应用这些模块来直接预测度量深度。
图 9 显示了流水线。在采用任一变换后,为了训练目的,随机裁剪补丁。此裁剪操作仅调整视场(FOV)和光学中心,从而避免任何潜在的度量模糊问题。在标签变换方法中, $\omega_r = 1$ 且 $\omega_d = \frac{f^c} f$,而在图像变换方法中, $\omega_d = 1$ 和 $\omega_r = \frac{f^c} f$。在整个训练过程中,变换后的地面实况深度标签 Dc 被用作监督。重要的是,由于表面法线不易受到度量模糊性的影响,因此没有变换被应用于法线标签 Nc。
Jointly optimizing depth and normal 我们建议以端到端的方式联合优化度量深度和表面法线。这种优化主要旨在利用深度数据集中可用的大量注释知识来改善法线估计,特别是在深度数据集包含比正常数据集明显更多的注释的户外场景中。在我们的实验中,我们从社区中收集了 9488K 张带有深度注释的图像,分布在 14 个室外数据集中,而室外正常标记的图像不到 20K,如表 5 所示。
为了促进深度和法线之间的知识流,我们使用递归细化块实现了基于学习的优化,如图 10 所示。与以前的单目方法不同,我们的方法通过这些块迭代更新深度和法线。受 RAFT 的启发,我们迭代优化了中间低分辨率深度 Dc 和未归一化的法向 Nu,其中 N 表示低分辨率预测 $\hat D_c \in \mathbb{R}^{\frac H 4 \times \frac W 4}$,$\hat N_u \in \mathbb{R}^{\frac H 4 \times \frac W 4 \times 3}$,下标 c 表示深度 Dc 在正则空间中。
最优化模块表示在步骤 t 之后优化的低分辨率深度和法线,其中 $t = 0, 1, 2, ., T$ 表示步骤索引。最初,在步骤 t = 0,解码器给出最优化模块。除了更新深度和法线之外,最优化模块还更新隐藏特征图 Ht,其由解码器初始化。在每次迭代期间,学习到的递归块 F 输出更新 HIDc,HIDu,并更新隐藏特征 H:
$$ \Delta \hat D^{t+1}_c, \Delta \hat N^{t+1}_u, H^{t+1} = F(\hat D^t_u, \hat N^t_u, H_t, H_0), (2) $$
然后应用更新来更新预测:
$$ \hat D^{t+1}_c = \hat D^t_c + \Delta \hat D^{t+1}_c, \quad \hat N^{t+1}_u = \hat N^t_u + \Delta \hat N^{t+1}_u, (3) $$
更具体地,递归块 F 包括 ConvGRU 子块和两个投影头。首先,ConvGRU 子块将所有变量作为输入来更新隐藏特征 Ht。随后,两个分支投影头 Gd 和 Gn 分别估计更新 Ht 和 Ht。因此,等式 2 的更全面的表示可以写为:
$$ H^{t+1} = \text{ConvGRU}(\hat D^t, \hat N^t, \hat H^0, \hat H^t), \quad \Delta \hat D^{t+1} = Gd(H^{t+1}), \quad \Delta \hat N^{t+1} = Gn(H^{t+1}). (4) $$
在 T + 1 迭代步骤之后,我们获得了良好优化的低分辨率预测 $\hat D^{T+1}_c$ 和 $N^{T+1}_u$。然后对这些预测进行上采样和后处理,以生成最终的深度 Dc 和表面法线 N:
$$ D_c = H_d(\text{upsample}(\hat D^{T+1}_c)) \quad N = H_n(\text{upsample}(\hat N^{T+1}u)), (5) $$
其中 Hd 是保证深度非负的 ReLU 函数,Hn 表示归一化,以确保所有像素的 n = 1。在一般公式中,图 10 中的端到端网络可以重写为:
$$ D_c, N = N {d-n}(I_c, \theta), (6) $$
其中θ是网络的(Nd-n)参数。
Supervision 训练目标是:
$$ \min_\theta L(N_{d-n}(I_c, \theta), D^_c, N^ ), (7) $$
其中,$D^*_c$ 和 Ic 是规范空间 c 中的经变换的 GT 深度标签和图像,N 表示正常标签,L 是如下所示的监督损失。
随机建议归一化损失。为了提高深度估计的性能,我们提出了随机建议归一化损失(RPNL)。尺度平移不变损失广泛应用于仿射不变深度估计,它将深度尺度放大以强调单个图像分布。然而,这种基于整个图像的归一化不可避免地挤压了细粒度的深度差,特别是在靠近的区域。受此启发,我们建议从 GT $D^c$ 和预测深度 Dc 随机裁剪几个补丁($p_i (i=0, ..., M) \in \mathbb{R}^{h_i \times w_i}$)。然后我们对成对的补丁采用中值绝对偏差归一化。通过归一化局部统计数据,我们可以增强局部对比度。损失函数如下:
$$ L {RPNL} = \frac{1}{MN} \sum_{i} \sum_{j} | \frac{d^{pi,j} - \mu(d^* {pi,j})}{\sigma(d^{pi,j})} - \frac{d {pi,j} - \mu(d_{pi,j})}{\sigma(d_{pi,j})} | (8) $$
其中 $d^ \in D^*c$ 和 $d \in D_c$ 分别是 GT 值和预测深度。μ(·)和σ是深度的中值和标准差。M 是建议裁剪的数量,设置为 32。在训练期间,建议从图像中随机裁剪原始大小的 0.125 到 0.5。此外,还使用了其他几种损失,包括尺度不变对数损失 $L {silog}$,成对法向量回归损失 $L_{PWN}$,虚拟法向量损失 $L_{VNL}$。注:$L_{silog}$ 是 L1 损失的一个变体。总损失如下。
$$ L_d = L_{PWN} + L_{VNL} + L_{silog} + L_{RPNL}. (9) $$
法向量损失。为了监督正常预测,我们根据地面实况(GT)法线 N 的可用性采用两个不同的损失函数。如图 9 所示,当提供 GT 法线时,我们利用任意不确定性感知损失(Ln(·))来监督预测 N。或者,在没有 GT 法线的情况下,我们提出一致性损失 Ld-n(D,N)来对齐预测的深度和法线。
这种损失是基于使用最小二乘法从预测深度生成的伪法线映射与预测法线本身之间的相似性计算的。与以前的方法不同,这种损失作为一种自我监督机制,不需要深度或正常的 GT 标签。请注意,这里我们使用真实的世界中的深度 D 而不是规范空间中的深度 Dc 来计算深度 - 正常一致性。总损失如下。
$$ L = w_d L_d(D_c, D^_c) + w_n L_n(N, N^ ) + w_{d-n} L_{d-n}(N, D) (10) $$
式中 $w_d = 0.5, w_n = 1, w_{d-n} = 0.01$ 作为衡量损失项目的权重。
Experiments 数据集细节。我们精心组装了一个综合数据集,包含 16 个公开可用的 RGB-D 数据集,包括累计超过 1600 万个专门用于训练目的的数据点。该数据集包含各种室内和室外场景。值得注意的是,数据集中约有 1000 万帧使用法线注释,主要关注与室内场景相关的注释。值得注意的是,所有数据集都提供了相机内部参数。此外,除了训练数据集的测试分割之外,我们还获得了 7 个以前未观察到的数据集,以促进鲁棒性和泛化评估。表 5 中提供了所使用的训练和测试数据的详细描述。
实现细节。在我们的实验中,我们采用不同的网络架构,旨在为社区提供多样化的选择,包括 convnets 和 transformers。对于 convnets,我们采用具有 ConvNext-large 骨干的 UNet 架构。ImageNet-22 K 预训练权重用于初始化。对于 transformers,我们应用 DINO v2-reg 视觉 Transformer(ViT)作为骨干,DPT 作为解码器。
我们使用 AdamW,批量大小为 192,所有层的初始学习率为 0.0001,多项式衰减方法的幂为 0.9。我们在 48 个 A100 GPU 上训练我们的模型,迭代次数为 80 万次。根据 DiverseDepth,我们在一个 minibatch 中平衡所有数据集,以确保每个数据集占几乎相等的比例。在训练期间,图像由标准相机变换模块处理,以 50% 的机会水平翻转,然后随机裁剪为 512 × 960 像素(用于 convnets)和 616 × 1064 像素(用于 vision transformers)。在消融实验中,训练设置是不同的,因为我们从每个数据集中采样 5000 张图像进行训练。我们在 8 个 GPU 上进行了 15 万次迭代训练。补充材料中提供了网络架构、训练设置和效率分析的详细信息。KITTI 和 NYU 的微调实验在 8 个 GPU 上进行,进一步进行了 20 K 步。
单目深度和法线估计的评估细节。a)为了证明我们的度量深度估计方法的鲁棒性,我们对 7 个零样本基准进行了评估,包括 NYUv2,KITTI,ScanNet,NuScenes,iBIMS-1 和 DIODE。根据先前的研究,我们使用诸如绝对相对误差(AbsRel)、阈值下的准确度(AbsRel)、阈值下的准确度(AbsRel)和阈值下的准确度(AbsRel)等指标。($\delta_i < 1.25^i, i = 1, 2, 3$)、均方根误差(RMS)、对数空间中的均方根误差(RMS log)和 log 10 误差(log 10)。我们报告了在 KITTI 和 NYU 基准上进行零样本和微调测试的结果。B)对于法向量估计任务和消融,使用几个误差指标来评估性能。具体来说,我们计算平均值(mean),中位数(median)和均方根(rooted mean square)。(RMS 法向)的角度误差以及在阈值{11.25°,22.5°,30.0°}下的准确度与先前研究中建立的方法一致。
我们使用 Scannet 数据集进行域内评估,而 NYU 和 iBIMS-1 数据集则保留用于零样本泛化测试。c)此外,我们还遵循当前的仿射不变深度基准(表 4)评估 5 个零样本数据集(即 NYUv2、DIODE、ETH 3D、ScanNet)的泛化能力,和 KITTI。我们主要与大规模数据训练的模型进行比较。请注意,在此基准测试中,我们遵循现有的方法在评估之前应用尺度偏移对齐。
我们报告的结果与不同的正则变换方法(CSTM 标签和 CSTM 图像)在 ConvNextLarge 模型上(表 1 和表 2 中的 Conv-L)。由于 CSTM 标签稍微好一点,因此报告了使用此方法从多尺寸 ViT 模型(ViT-S 用于 Small,ViT-L 用于 Large,ViT-g 用于 giant 2)获得的更多结果。请注意,除了微调实验外,所有用于 zeroshot 测试的模型都使用相同的检查点。
| 表 1 -NYUv2 和 KITTI 度量深度基准的定量比较。过拟合基准的方法用灰色标记,而鲁棒深度估计方法用蓝色标记。'ZS'表示零样本测试,'FT'表示该方法在基准上进一步微调。在所有零样本测试(ZS)结果中,我们的方法表现最好,甚至优于过拟合方法。进一步的微调(FT)帮助我们的方法超越所有已知的方法,根据所有指标的平均排名进行排名。最好的结果以粗体显示,第二好的结果以下划线显示。 |
| 表 2 -NYUv2、ibims-1 和 ScanNet 法线基准上表面法线的定量比较。'ZS'表示零样本测试,'FT'在目标数据集上执行后期微调。仅在 NYU 上训练的方法用灰色突出显示。最好的结果用粗体显示,第二个最好的结果用下划线表示。我们的方法在所有基准中排名第一。 |
重建和 SLAM 的评估细节。a)为了评估我们的度量 3D 重建质量,我们从 NYUv2 中随机抽取 9 个不可见的场景,并使用 colmap 获得多帧重建的相机姿势。倒角 l1 距离和 F 分数用于评估重建精度。B)在密集 SLAM 实验中,遵循 Li 等人,我们在 KITTI 里程计基准上进行测试,并评估平均平移 RMS(%,trel)和旋转 RMS(%/100 m,rrel)误差。
度量深度基准的评估。为了评估预测度量深度的准确性,首先,我们比较了 NYUv2,KITTI 上最先进的(SoTA)度量深度预测方法。我们使用相同的模型进行所有评估。结果报告在表 1 中。首先,与现有的过拟合方法相比,这些方法在基准上训练了数百个时期,我们的零样本测试(表中的'ZS')在没有任何微调或度量调整的情况下,已经在某些度量上实现了相当甚至更好的性能。然后与鲁棒的单目深度估计方法(如 Zerodepth 和 ZoeDepth)相比,我们的零次测试也比他们好。进一步的后期微调('表中的 FT')将我们的方法提升到第一位。
此外,我们还收集了 5 个未知的数据集,以进行更多的度量精度评估。这些数据集包含广泛的室内和室外场景,包括房间,建筑物和驾驶场景。相机模型也多种多样。我们主要与 SoTA 度量深度估计方法进行比较,并分别采用它们的 NYUv2 和 KITTI 模型进行室内和室外场景评估。从表 3 中,我们观察到,尽管 NuScenes 与 KITTI 相似,但现有方法面临着明显的性能下降。相比之下,我们的模型更具鲁棒性。
| 表 3 -在 5 个看不见的基准上与 SoTA 度量深度方法的定量比较。对于 SoTA 方法,我们分别使用其 NYUv2 和 KITTI 模型进行室内和室外场景评估,而我们使用相同的模型进行所有零样本测试。 |
在不同场景下的泛化。仿射不变深度基准解耦了尺度效应,旨在评估模型对不同场景的泛化能力。最近的影响作品,如 MiDaS,LeReS,DPT,Marigold 和 DepthAnything 在他们身上取得了令人满意的性能。继他们之后,我们在 5 个数据集上进行测试,并手动对齐刻度并向地面移动 - 评估前的真值深度。结果见表 4。虽然我们的方法强制网络恢复更具挑战性的度量,但我们的方法在所有数据集上都优于它们。
| 表 4 -与 SoTA 仿射不变深度方法在 5 个零样本传输基准上的比较。我们的模型显著优于以前的方法,并设置了新的最先进的技术。在基准设置之后,所有方法都手动对齐了尺度和移位。 |
表面法向基准的评估。我们在 ScanNet,NYU 和 iBims-1 表面法向基准上评估了我们的方法。结果报告在表 2 中。首先,我们在 NYU 数据集上组织了一个零样本测试基准,参见表中以'ZS'表示的方法。我们与在 ScanNet 或 Taskonomy 上训练的现有方法进行了比较,并在它们上取得了令人满意的性能,如 Polymax 和 Bae 等人。我们的方法在大多数指标上优于它们。与已经过拟合 NYU 数据域数百个时期的方法相比(用蓝色标记),我们的零次测试在所有指标上都优于它们。('FT'标记)进一步提高性能。同样,我们也在 iBims-1 和 Scannet 基准测试中实现了 SoTA 性能。对于 iBims-1 数据集,我们遵循 IronDepth 来生成 GT 正常注释。
Zero-shot Generalization 曲面法线和深度的定性比较。我们在图 11 中可视化了我们的预测。与另一种广泛使用的广义度量深度方法 ZoeDepth 的比较表明,我们的方法生成的深度图具有细粒度结构(第 1 行中的对象,第 4 行中的吊灯,第 8 行中的光束)的上级细节,以及更好的前景/背景区分(第 11 行,第 12 行)。在表面法线预测方面,与 Bae 等人相比,我们的法线映射显示出明显更精细的细节,并且可以处理他们的方法失败的某些情况(第 7、8、9)。我们的方法不仅可以很好地推广到不同的场景,而且还可以直接应用于看不见的相机模型,如第 12 行所示的鱼眼相机。在图 12 中显示了各种各样的图像,包括漫画风格的(第 2 行)和 CG(计算机图形)生成的对象(第 5 行)。
Applications Based on Our Method 3D 场景重建。为了展示我们的方法恢复真实世界度量 3D 的能力,我们首先对 9 个看不见的 NYUv2 场景进行定量比较。我们预测每帧度量深度,并将其与提供的相机姿势融合,结果详见表 6。我们将我们的方法与几种方法进行比较:该视频一致性深度预测方法(RCVD),无监督视频深度估计(SC-DepthV2),3D 场景形状恢复(LeReS),仿射不变深度估计(DPT)和多视图立体重建(DPSNet,SimpleRecon)。除了多视图方法和我们的方法,所有其他方法都需要将尺度与每个帧的 GT 深度对齐。虽然我们的方法不是专门为视频或多视图重建设计的,它展示了有前途的帧一致性和更准确的 3D 场景重建在这些零 - 图 13 中的定性比较表明,我们的重建显示出相当少的噪声和更少的离群值。
| 表 6 -LeReS、DPT、RCVD、SC-DepthV2 和两种基于学习的 MVS 方法的 3D 场景重建的定量比较(DPSNet,SimpleRecon)在 9 个看不见的 NYUv2 场景上。除了 MVS 方法和我们的方法,其他方法必须将每个帧的比例与 GT 深度对齐。因此,我们重建的 3D 场景达到了最佳效果。 |
密集 SLAM 映射。单目 SLAM 是一个关键的机器人应用程序,它使用单个视频输入来创建轨迹和密集的 3D 地图。然而,由于有限的光度和几何约束,现有的方法在大场景中与尺度漂移作斗争,并且无法恢复准确的度量信息。我们的鲁棒度量深度估计用作 SLAM 系统的强深度先验。
为了证明这一点,我们将我们的度量深度输入到最先进的 SLAM 系统 Droid-SLAM 中,并在 KITTI 上评估轨迹,而无需任何调整。结果如表 7 所示。通过访问精确的每帧度量深度,Droid-SLAM 在平移漂移(trel)方面有了显著的减少。此外,我们的深度数据使 DroidSLAM 能够实现更密集和更精确的 3D 映射,如图 3 所示,并在补充材料中详细说明。
| 表 7 -与 KITTI 上的 SoTA SLAM 方法的比较。我们将预测的度量深度输入到 DroidSLAM('Droid + Ours'),其在轨迹准确度上优于其他方法。 |
我们还对 ETH 3D SLAM 基准进行了测试,结果见表 8。使用我们的度量深度预测,Droid-SLAM 显示出更好的性能,尽管与 KITTI 相比,ETH 3D 在较小的室内场景中的增益不太明显。
| 表 8 -ETH 3D 基准上 VO 误差的比较。Droid SLAM 系统输入我们的深度('Droid + Ours')和 GT 深度('Droid + GT')。报告平均轨迹误差。 |
野外测量。为了证明我们恢复的公制 3D 形状的稳健性和准确性,我们下载了由各种相机拍摄的 Flickr 照片,并从其元数据中提取了粗略的相机内在参数。我们利用我们的 CSTM 图像模型来重建公制形状并测量结构的尺寸(在图 14 中标记为红色),实际尺寸显示为蓝色。结果表明,我们测量的尺寸与地面真实值非常接近。
野外单目重建。为了进一步可视化我们恢复的度量深度的重建质量,我们从互联网上随机收集图像并恢复其度量 3D 和法线。由于没有提供焦距,根据重构的形状和法线映射选择合适的焦距,重构的点云用其对应的法线着色(不同的视图在图 15 中由红色和橙子阵列标记)。
Ablation Study 消融的典范变换。我们研究我们提出的输入图像的典范变换的影响(CSTM 输入)和地面实况标签(CSTM 输出)。结果如表 9 所示。我们在 90,000 张图像的混合数据集上训练了模型,并在六个数据集上进行了测试。(我们的 w/o CSTM)删除了 CSTM 模块,执行与我们的方法相同的监督。没有 CSTM,该模型难以在混合度量数据集上收敛,并且无法在零样本数据集上实现度量预测。数据训练方法通常求助于学习仿射不变深度以回避度量挑战。
| 表 9 -我们的 CSTM 的有效性。CamConvs 直接编码网络中的各种相机模型,而我们执行简单而有效的变换来解决度量模糊性。没有 CSTM,模型实现了可转移的度量预测能力。 |
相比之下,我们的两种 CSTM 方法都使模型能够获得度量预测能力并实现相当的性能。表 1 证实了这种相当的性能。因此,在训练期间调整监督和输入图像的外观有效地解决了度量模糊问题。此外,我们将我们的方法与 CamConvs 进行了比较,虽然 CamConvs 使用相同的训练时间表、模型和数据,但它依赖于网络从图像外观隐式地学习各种相机模型,将图像大小与真实世界的尺寸联系起来。我们认为这种方法会使数据多样性和网络容量紧张,从而导致性能降低。
典型空间上的消融。我们研究了典型相机的影响,特别是典型焦距。模型在小样本数据集上进行训练,并在训练集和验证集上进行评估。我们计算了三种不同焦距的平均绝对相对(AbsRel)误差:250,500,1000,1500 和 2500。我们的实验表明,焦距为 1000 时的性能略好于其他焦距;更多细节可在补充材料中找到。
随机建议归一化损失的有效性。为了证明我们的随机建议归一化损失(RPNL)的有效性,我们在一个采样的小数据集上进行了实验,结果如表 10 所示。我们在 DDAD,Lyft,DrivingStereo(DS),NuScenes(NS),KITTI 和 NYUv2 上进行了测试。'基线'包括除 RPNL 之外的所有损失,我们将其与'基线 + RPNL'和'基线 + SSIL'进行了比较。我们的 RPNL 显着提高了性能,而标度平移不变损失,标准化整个图像,提供了轻微的改进。
| 表 10 -随机建议归一化损失的有效性。基线由'LPWN + LVNL + Lsilog'监督。SSIL 是在中提出的标度移位不变损失。 |
联合优化的有效性。我们使用 ViT-small 模型在 4 步迭代中采样的小数据集评估联合优化对深度和法向估计的影响。评估是在纽约大学室内数据集和 DIODE 室外数据集上进行的,这两个数据集都包含了法向标签,以方便评估。在表 11 中,我们首先训练相同架构的网络'没有深度'或'没有正常'预测。与我们的联合优化方法相比,两种单模态模型的性能略差。为了进一步证明联合优化的好处以及在正常估计之前合并大规模室外数据,我们仅使用 Taskonomy 数据集(即'W.o.混合数据集')训练模型,该数据集在 DIODE(室外)上显示出较差的结果。
| 表 11 -联合优化的有效性。联合优化优于独立估计。对于室外法线估计,该模块从大规模深度数据中引入几何线索。建议的递归块和深度法线一致性约束对于优化至关重要 |
我们还验证了递归块的有效性和一致性损失。删除其中任何一个('W.o. consistency' / 'W.o. recurrent block')都可能导致正常估计的性能急剧下降,特别是对于 DIODE(Outdoor)这样的户外场景。此外,我们在图 16 中展示了一些可视化比较。与我们的完整方法('Ours normal')相比,在没有一致性损失('W.o. consistency')的情况下一起训练表面法线和深度会导致预测法线明显较差。此外,如果模型单独学习法线('W.o. depth'),性能也会下降。联合优化模块的效率分析在补充材料中给出。
选择中间法线表示。在优化过程中,未归一化的法向量被用作中间表示。在这里,我们探索了三个额外的表示:(1)在 so3 中定义的表示参考方向上的 3D 旋转的向量。我们通过 lietorch 实现了这个向量。(2)方位角和极角。(3)2D 齐次向量所研究的表示都是可加的,并且都可以满射地转换为曲面法线。在这个实验中,我们只改变表示,并比较性能。令人惊讶的是,根据表 12,朴素的未归一化的常态表现最好。我们假设这种最简单的表示降低了学习难度。
最佳优化步骤为了确定各种 ViT 模型的最佳优化步骤数,我们改变不同的步骤来优化深度和法线。表 13 说明了增加迭代步骤数并不能始终如一地改善结果。此外,理想的步骤数可能会因模型大小而异,较大的模型通常会受益于更广泛的优化。
| 表 13 -为不同的 ViT 模型选择最佳联合优化步长。我们发现最佳步长随模型大小而变化。所有模型都按照表 11 中的设置进行训练。 |
Conclusion 本文介绍了一系列用于零样本单目深度和表面法线估计的几何基础模型,并针对深度和表面法线估计中存在的问题提出了解决方案。为了解决由焦距变化引起的深度模糊问题,提出了一种新的正则相机空间变换方法。此外,为了克服室外法线数据标签的不足,我们引入了利用来自大规模深度注释的知识的联合深度法线优化框架。
我们的方法能够整合超过 10,000 台相机捕获的数百万个数据样本,以训练统一的度量深度和表面法线模型。为了增强模型的鲁棒性,我们策划了一个包含超过 1600 万个样本的数据集进行训练。零样本评估证明了我们方法的有效性和鲁棒性。对于下游应用,我们的模型能够从单个视图重建度量 3D,实现随机收集的互联网图像的度量和大规模场景的密集映射。凭借其精确性,通用性和多功能性,Metric3D v2 模型可作为单目感知的几何基础模型。
Metric3D v2 的规范相机空间变换模块(CSTM)如何解决不同相机的度量深度歧义?
不同相机的焦距差异会导致'相同成像尺寸对应不同真实距离'的度量歧义(如焦距 26mm、深度 2m 与焦距 52mm、深度 4m 的成像一致)。CSTM 通过构建统一的规范相机空间 (焦距固定为 1000 像素),将异构数据映射至该空间:对于 CSTM-label,按 $\omega_d=f^c/f$ 缩放真实深度标签,消除不同焦距的深度数值歧义;对于 CSTM-image,按 $\omega_r=f^c/f$ 缩放输入图像和光心,模拟规范相机的成像效果,对齐输入分布。推理阶段通过反变换还原为原相机的真实物理深度,实现了跨相机的度量深度统一,无 CSTM 的模型零样本 AbsRel 会从 0.083 暴增至 0.584。
Metric3D v2 相比当前 SOTA 方法(如 DepthAnything、Marigold),在零样本度量深度任务上的核心优势体现在泛化性 和度量精度 的双重突破:
度量精度 :零样本场景下,NYUv2 深度 δ₁达 0.980(DepthAnything 零样本无度量能力,微调后 δ₁为 0.984 但需场景适配),KITTI 深度 AbsRel 低至 0.051(Marigold 无度量输出,仅能输出相对深度);
跨场景鲁棒性 :在 DIODE、NuScenes 等未见过的数据集上,AbsRel 稳定在 0.15-0.22 区间,而传统方法(如 ZoeDepth)在跨场景时 AbsRel 会升至 0.4-0.5;
多任务能力 :可同时输出高精度法向量,30° 精度超 0.88,而 DepthAnything、Marigold 仅支持深度估计,从深度转换的法向量存在大量噪声。
Metric3D v2 中规范相机空间变换模块(CSTM)核心目标是消除不同相机内参(尤其是焦距)导致的度量深度歧义 ,将异构输入统一至规范相机空间 (实验中固定规范焦距 $f^c=1000$ 像素),实现跨相机的度量深度学习。其具体实现分为CSTM-label (深度标签变换)和CSTM-image (输入图像变换)两种方式,CSTM 的实现基于针孔相机模型 ,需先明确相机内参的核心参数:
物理焦距 $\hat{f}$ :相机镜头的实际焦距(单位:μm,如 iPhone14 Pro 为 24mm);
像素尺寸 $\delta$ :传感器单个像素的物理尺寸(单位:μm,如 iPhone14 Pro 为 2.44μm);
像素级焦距 f :由物理焦距和像素尺寸计算得 $f=\hat{f}/\delta$(单位:像素,为视觉算法常用焦距);
规范焦距 $f^c$ :实验中固定为1000 像素 (消融实验验证此值为最优,焦距过大 / 过小会导致 AbsRel 误差上升);
主点坐标 $(u_0, v_0)$ :默认取图像中心,若有标定值则用标定结果。
CSTM-label(深度标签变换),直接对深度标签 进行缩放,输入图像保持不变,是 Metric3D v2 中性能更优的方案。
训练阶段实现,计算缩放比例:根据原相机像素级焦距 f 和规范焦距 $f^c$,计算深度标签的缩放因子 $\omega_d = f^c/f$;标签变换:将真实深度标签 $D^$ 按比例缩放至规范空间,得到规范空间标签 $D_c^ =\omega_d \cdot D^*$;相机内参适配:将原相机内参的焦距替换为规范焦距 $f^c$,主点坐标 $(u_0, v_0)$ 保持不变,即规范空间内参为 $[f^c, u_0, v_0]$;数据增强:对变换后的图像随机裁剪(尺寸 512×960/616×1064,根据编码器类型调整),仅调整视场角不引入新的度量歧义。
推理阶段实现(反规范变换),模型输出规范空间深度 $D_c$;按缩放因子的倒数还原为原相机的真实物理深度:$D = D_c / \omega_d$;最终深度 D 的单位为米,直接对应摄像头到目标的绝对物理距离。
核心是将不同焦距下的深度标签映射至同一规范尺度,消除'相同成像尺寸对应不同真实距离'的歧义。例如,原焦距 $f=500$ 像素时,$\omega_d=1000/500=2$,深度标签 $D^=2m$ 会被缩放为 $D_c^ =4$(规范空间单位);推理时再还原为 $D=4/2=2m$。
CSTM-image(输入图像变换),对输入图像 进行缩放,模拟规范相机的成像效果,深度标签仅做尺寸对齐不做数值缩放。
训练阶段实现,计算缩放比例:图像缩放因子 $\omega_r=f^c/f$(与 CSTM-label 的 $\omega_d$ 公式一致);图像变换:将输入图像 I 按 $\omega_r$ 进行 resize(如原尺寸 4032×3024,$\omega_r=0.5$ 则变为 2016×1512),同时调整主点坐标为 $(\omega_r u_0, \omega_r v_0)$,规范空间内参为 $[f^c, \omega_r u_0, \omega_r v_0]$;标签适配:将真实深度标签 $D^$ 按 $\omega_r$ 进行 resize(仅调整空间分辨率,不改变深度数值),得到规范空间标签 $D_c^ =T(D^*, \omega_r)$(T 为 resize 操作);数据增强:同 CSTM-label,随机裁剪无度量歧义。
推理阶段实现(反规范变换),模型输出规范空间深度 $D_c$(尺寸为 resize 后的大小);将 $D_c$ 按 $1/\omega_r$ resize 至原图像尺寸,得到最终深度 D(无数值缩放,仅恢复空间分辨率)。
CSTM-image 通过图像 resize 对齐成像视角,CSTM-label 通过标签缩放对齐深度数值,前者更适合对图像分辨率敏感的编码器(如 ViT),后者更适合卷积类编码器。
焦距的优先级 :实验验证 像素级焦距 f 是核心参数,传感器尺寸 / 像素尺寸不影响度量深度(因 $\alpha=\hat{f}/(\delta \cdot S')$ 中 $\delta$ 与 $S'$ 会抵消),因此 CSTM 仅需对齐焦距;
规范焦距的选择 :消融实验表明 $f^c=1000$ 像素时平均 AbsRel 最低(19.82%),若 $f^c=500$ 或 1500,AbsRel 会升至 21.19%/22.07%;
与 CamConvs 的区别 :CamConvs 将相机内参编码为 4 通道特征输入网络,依赖网络隐式学习相机模型;CSTM 通过显式变换将异构数据统一至规范空间,无需编码内参,数据兼容性更强(支持上万种相机);
代码层面的实现
在配置文件中定义规范焦距 canonical_focal=1000;
训练时通过 transforms.Resize 或 depth_scale 实现图像 / 标签变换;
推理时通过 inverse_depth_scale 或 transforms.Resize 完成反变换,输出物理深度。
尽管 v2 在功能上大幅扩展,但两者共享相同的核心设计理念,这也是 Metric3D 系列的标志性特征:
解决'度量歧义'是实现真实尺度输出的核心,两者均将'不同相机焦距导致的度量歧义'作为核心痛点,通过规范相机空间变换(CSTM) 统一异构数据:核心逻辑:将所有相机的输入(图像 / 深度标签)映射至'规范相机空间'(固定焦距 $f^c=1000$ 像素),消除'相同成像尺寸对应不同真实距离'的歧义;实践价值:无 CSTM 时,模型在混合相机数据上无法收敛(零样本 AbsRel 从 0.083 暴增至 0.584),CSTM 是跨相机训练的'桥梁'。
大规模跨场景 / 跨相机数据是零样本泛化的基础,两者均突破'单一数据集训练'的局限,依赖海量异构数据:仅当数据覆盖'足够多的相机模型(上万种)和场景类型(16+)',才能实现真正的零样本泛化(如鱼眼相机、运动模糊图像的适配)。
拒绝'仿射不变妥协',坚持输出真实物理尺度,区别于 MiDaS、LeReS 等'输出未知尺度 / 偏移'的仿射不变深度方法,v1 和 v2 均以'输出真实物理距离'为核心目标:关键差异:仿射不变方法需人工对齐尺度才能使用,而 Metric3D 系列无需任何后处理,直接输出米级深度(如 v1/v2 在 SLAM 中均能直接缓解尺度漂移,无需额外校准)。
局部几何细节的保护是深度精度的关键,两者均针对'全图归一化挤压局部深度差异'的问题设计损失:v1 提出 RPNL(随机裁剪 32 个局部 patch 做归一化);v2 保留 RPNL,并在法向量优化中加入'局部表面一致性约束';局部区域(如家具边缘、近景物体)的深度误差降低 15%~20%。
Metric3D v1 是'单任务度量深度基础模型'的验证,v2 则是'多任务几何基础模型'的升级,两者共同构建了'数据规模 + 统一空间 + 几何关联'的设计范式。其核心启示在于:对于 3D 视觉任务,'解决异构数据的统一表征'是泛化的前提,'利用任务间关联降低标注依赖'是性能的关键,'输出真实物理尺度'是落地的核心 。
对比维度 Metric3D v1 Metric3D v2 核心目标 单任务:零样本度量深度估计 (仅输出真实物理尺度深度) 多任务:零样本度量深度 + 表面法向量联合估计 (同时输出深度与法向量,解决法向量标注稀缺问题) 模型架构 编码器:ConvNeXt(Tiny/Large,ImageNet22K 预训练)解码器:Hourglass(无循环精修) 编码器:ConvNeXt + ViT(DINOv2 预训练,含 Small/Large/Giant2)解码器:Hourglass + DPT(新增 ConvGRU 循环精修块,迭代优化深度与法向量) 关键创新模块 1. 规范相机空间变换(CSTM,两种方式)2. 随机提议归一化损失(RPNL) 1. 保留 CSTM/RPNL2. 新增联合深度 - 法向量优化模块 (利用深度标注蒸馏法向量知识,支持无标注法向量学习)3. 新增不确定性感知损失 (适配法向量标注质量差异) 数据集规模与类型 训练数据:11 个数据集,超 800 万张图像(仅深度标注,覆盖上万种相机)测试数据:7 个零样本基准 训练数据:16 个数据集,超 1600 万张图像(含 1000 万张法向量标注,新增户外深度 / 法向量数据)测试数据:16 个基准(新增 5 个法向量零样本基准) 性能表现 深度基准 SOTA(如 NYUv2 零样本 δ₁=0.975,KITTI 零样本 AbsRel=0.052)无法输出法向量 1. 深度性能超越 v1(NYUv2 零样本 δ₁=0.980,KITTI 零样本 AbsRel=0.039)2. 法向量基准 SOTA(NYUv2 零样本 30° 精度 = 0.881,ScanNet 法向量中位误差 = 5.0°) 下游应用边界 支持 3D 场景重建、单目 SLAM(缓解尺度漂移) 扩展至:1. 野外场景计量(结合法向量提升尺寸测量精度)2. Neural Rendering(法向量辅助 NeRF 训练)3. 自动驾驶 360° 环视重建(多相机法向量一致性约束)
核心架构设计 项目采用了编码器 - 解码器的经典深度学习架构:Backbones(编码器):ConvNeXt 系列(用于 Metric3Dv1)、Vision Transformer 系列(用于 Metric3Dv2);Decode Heads(解码器):HourGlassDecoder(用于 ConvNeXt 模型),RAFTDepthNormalDPTDecoder(用于 ViT 模型)。这种设计使得项目可以根据不同需求选择不同的骨干网络和解码器组合。
项目采用分层配置系统:base 目录下定义基础配置,具体模型配置继承并覆盖基础配置,支持灵活组合不同组件(backbone、decode_head 等)
数据处理流程,图像预处理:通过 label scale canonical transformation 将输入图像调整到规范空间;特征提取:使用骨干网络提取多尺度特征,深度解码:通过解码器从特征图中预测深度,后处理:对预测结果进行上采样和尺度调整。
与传统相对深度估计不同,Metric3D 直接输出具有真实物理单位(米)的绝对深度值,这是其核心优势之一。通过 camera model encoding 和 label scale canonical transformation,项目能够处理不同相机参数和尺寸的输入图像,提高了模型的泛化能力。
解码器通常包括多个阶段:特征融合阶段(如 DecoderFeature);深度概率分布预测阶段;期望深度计算阶段;上采样和细化阶段。模型不仅输出深度图,还输出对应的置信度图,这对于后续应用中的质量评估非常有用。
运用了工厂模式,通过 get_func 动态加载不同类型的模块(backbone、decode_head 等),实现了灵活的组件替换。
BaseDepthModel 组合了具体的模型管道(如 DensePredModel),而具体管道又组合了编码器和解码器,形成了清晰的层次结构。是组合模式的体现
深度回归策略,采用分类方法进行深度回归:将连续深度空间离散化为多个 bins;使用 softmax 预测每个像素属于各个深度 bin 的概率;计算期望深度值作为最终输出。这种方法比直接回归更加稳定。
多尺度特征融合,在解码过程中充分利用来自编码器的多尺度特征,通过跳跃连接等方式融合不同层级的信息。相机内参建模,通过构建相机模型(包含焦距、主点位置等信息)作为额外输入,使模型能够适应不同相机参数的输入。
训练阶段可调参数 损失函数参数,VNLoss(Virtual Normal Loss)
sample_ratio(默认 0.15):控制采样比例,影响计算效率和精度。调优:增加该值会提高精度但降低速度,减少则相反。过高可能导致过拟合,过低可能欠拟合
delta_cos(默认 0.867):控制虚拟法向量的角度阈值。调优:增大该值会使模型对角度差异更敏感,影响法向量约束的严格程度,进而影响深度估计的几何一致性
loss_weight(默认 1.0):损失权重,调优:根据与其他损失函数的平衡调整。权重过大可能导致梯度爆炸,过小则失去约束作用
loss_gamma(默认 0.9):序列损失衰减因子,控制迭代过程中的损失权重分配。较大值更关注后期迭代结果,较小值均衡对待所有迭代
stereo_sup(默认 0.001):立体监督损失权重,根据是否有立体数据调整,权重高增强立体一致性,但可能引入噪声。
初始学习率:编码器(5e-7)、解码器(1e-5),根据训练稳定性调整,学习率过高导致训练不稳定,过低收敛慢
RandomResize 的 ratio_range(默认 (0.85, 1.15)):随机缩放范围。根据目标应用场景调整。范围大提升鲁棒性但可能降低精度
PhotoMetricDistortion:光度畸变概率(默认 0.1),根据光照变化剧烈程度调整,提高光照不变性,但过度增强可能损害细节
推理参数
crop_size:裁剪尺寸(如 (616, 1064)),根据显存和输入图像比例调整,大尺寸提高精度但消耗更多资源
depth_normalize:深度归一化范围(如 (0.1, 200)),根据实际场景深度范围设定,范围不匹配会导致预测截断或精度下降
focal_length(默认 1000.0):焦距参数,根据实际相机参数调整,直接影响 3D 点云重建精度
图像尺寸:推理时的输入尺寸,平衡精度和速度需求,大尺寸提高精度但降低推理速度;归一化参数:均值 [123.675, 116.28, 103.53] 和标准差 [58.395, 57.12, 57.375],一般保持默认,除非有特殊需求,不匹配会导致特征提取偏差
Metric3D 支持两种数据格式:图像文件夹模式:直接指定包含图像的文件夹路径;JSON 注释文件模式:通过 JSON 文件指定每张图像的相关参数
cam_in: 相机内参 [fx, fy, cx, cy];rgb: RGB 图像路径;depth: 真实深度图路径(可选,仅用于评估);depth_scale: 深度图缩放因子。
Metric3D 提供了多种预训练模型配置文件,位于 mono/configs 目录下:ConvNeXt 模型:HourglassDecoder/convtiny.0.3_150.py, HourglassDecoder/convlarge.0.3_150.py;ViT 模型:HourglassDecoder/vit.raft5.small.py, HourglassDecoder/vit.raft5.large.py
推理完成后,会在 show_dirs 目录下生成结果,包含:可视化图像:合并显示原始图像、预测深度图和真实深度图(如果有);点云文件:PLY 格式的 3D 点云文件;日志文件:包含评估指标的日志
项目内置了多种可视化工具:深度图着色:使用 colormap 将灰度深度图转换为彩色图像,点云可视化:生成 PLY 格式的 3D 点云文件,可用 MeshLab 等软件查看,表面法线可视化:将表面法线转换为 RGB 颜色显示
相机內参矩阵 IntrinsicMatrix 核心参数焦距-f 像素尺寸 (dx,dy) 主点坐标 (u8,v8) 参数物理意义 f/dx:x 轴像素焦距 f/dy:y 轴像素焦距 1/dx:x 方向像素密度标定方法 MATLAB 工具包 Opencv 标定
相机内外参描述了相机从三维世界坐标到二维图像坐标的几何映射关系。相机内参 描述相机本身的光学特性,与相机在世界坐标系中的位置无关。
fx(水平焦距):表示相机在水平方向的焦距,单位为像素;计算公式:fx = f * mx,其中 f 是物理焦距(mm),mx 是水平像素密度(pixel/mm)。典型值:手机相机 800-2000 像素,专业相机 1000-5000 像素,控制水平方向的缩放,决定物体在图像中的宽度大小
fy(垂直焦距):表示相机在垂直方向的焦距,单位为像素;计算公式:fy = f * my,其中 my 是垂直像素密度(pixel/mm);理想情况下 fx ≈ fy,但实际可能存在微小差异;作用:控制垂直方向的缩放,决定物体在图像中的高度大小
主点参数,cx(主点 X 坐标):光轴与图像平面的交点的 X 坐标,单位为像素;理想值:cx = image_width / 2;实际值可能偏移,反映镜头装配误差;作用 :定义图像的光学中心,影响透视投影的中心位置。cy(主点 Y 坐标) :光轴与图像平面的交点的 Y 坐标,单位为像素;理想值:cy = image_height / 2;偏移量通常在几个像素以内,与 cx 一起确定光学中心,影响图像的对称性
畸变系数:
径向畸变系数(由镜头曲率引起):k1(一阶径向畸变):主要畸变系数,影响最大,k1 > 0:桶形畸变(图像中心向外凸),k1 < 0:枕形畸变(图像中心向内凹),典型值:-0.5 到 +0.5;k2(二阶径向畸变):高阶校正项,补偿 k1 无法修正的畸变,数值通常比 k1 小一个数量级,典型值:-0.1 到 +0.1;k3(三阶径向畸变):极高阶项,仅在严重畸变时使用,多数情况下接近 0,典型值:-0.01 到 +0.01
切向畸变系数 (由镜头装配不平行引起):p1(切向畸变系数 1):校正由于镜头与传感器不平行导致的畸变,影响图像的倾斜和不对称,典型值:-0.01 到 +0.01。p2(切向畸变系数 2):与 p1 配合校正切向畸变,通常数值较小,典型值:-0.01 到 +0.01
内参矩阵
fx, fy:分别控制 x 和 y 方向的缩放
cx, cy:定义投影中心的偏移
对角线形式表示 x、y 方向独立缩放
右上角为 0 表示像素是矩形的(无倾斜)
相机外参描述相机相对于世界坐标系的位置和姿态。
旋转矩阵 R 是 3×3 正交矩阵,描述相机坐标系相对于世界坐标系的旋转关系。
正交矩阵:R^T * R = I(转置等于逆矩阵);行列式:det® = 1;每行和每列都是单位向量。
平移向量 t 是 3×1 向量,描述相机原点在世界坐标系中的位置。
tx:相机沿世界坐标系 X 轴的位移(米或毫米);ty:相机沿世界坐标系 Y 轴的位移;tz:相机沿世界坐标系 Z 轴的位移。
外参通常表示为齐次变换矩阵:
[ R|t] = [ r11 r12 r13 tx] [ r21 r22 r23 ty] [ r31 r32 r33 tz] [ 0 0 0 1 ] (4 x4 齐次形式)
t = [ tx] [ ty] [ tz]
R = [ r11 r12 r13] [ r21 r22 r23] [ r31 r32 r33]
K = [ fx 0 cx] [ 0 fy cy] [ 0 0 1 ]
{ "files" : [ { "cam_in" : [ 707.0493 , 707.0493 , 604.0814 , 180.5066 ] , "rgb" : "data/kitti_demo/rgb/0000000050.png" , "depth" : "data/kitti_demo/depth/0000000050.png" , "depth_scale" : 256.0 } , ...] }
数据准备 训练数据需同时包含图像数据 和相机内参 (焦距 $\hat{f}$、像素尺寸 $\delta$、主点 $(u_0, v_0)$),内参是 CSTM 模块的核心输入。从源码配置(如 data/_data_base_.py)可知,训练数据需满足以下格式:
RGB 图像 :标准 JPG/PNG 格式,分辨率无固定限制(后续通过 CSTM 统一尺度);
深度标签 :单通道 16/32 位浮点图,单位为米 ,来源分 3 类:LiDAR 投影(自动驾驶数据集如 Argoverse2、KITTI):将点云投影至图像平面生成 GT 深度;立体匹配(如 Cityscapes、UASOL):用 RAFT-Stereo 生成伪 GT 深度;SfM 重建(Mapillary PSD):通过多视图重建生成深度(因噪声大,v1/v2 均不施加 $L_{silog}$ 损失);
法向量标签 (v2 新增):3 通道浮点图(x/y/z 分量,需归一化),来源为稠密 3D 重建(如 ScanNet、Matterport3D),仅室内场景有足量标注,户外依赖深度生成伪法向量;
相机内参 :存储为 JSON/XML 格式,包含 $\hat{f}$(物理焦距)、$\delta$(像素尺寸)、图像分辨率,源码中通过 canonical_space 配置项调用。
标注工具 :LiDAR 投影用 Open3D/PCL,立体匹配用 RAFT-Stereo,法向量标注用 ScanNet/Matterport3D 的官方重建工具;
数据处理的核心是通过 CSTM 消除跨相机度量歧义 ,同时辅以几何 /photometric 增强提升泛化性,源码中对应 transforms 模块:
CSTM 是 Metric3D 的'基石',源码实现两种方式:
数据增强策略:水平翻转 :50% 概率翻转图像,同步翻转深度 / 法向量标签(避免左右几何错乱);随机裁剪 :裁剪尺寸适配编码器(ConvNet 为 512×960,ViT 为 616×1064),仅调整视场角,不引入新的度量歧义;像素归一化 :对 RGB 图像做均值 / 方差归一化(ConvNeXt 用 ImageNet22K 均值,ViT 用 DINOv2 默认归一化)。v1/v2 均不使用光度失真增强 (如亮度 / 对比度调整),避免破坏几何特征的度量关联性。
变换方式 处理逻辑(训练阶段) 源码关键参数 作用 CSTM-label 1. 计算缩放比 $\omega_d=f^c/f$($f^c=1000$ 像素为规范焦距);2. 深度标签 $D^$ 缩放为 $D_c^ =\omega_d \cdot D^*$;3. 图像保持不变 canonical_focal=1000直接对齐深度标签的度量尺度,消除焦距歧义 CSTM-image 1. 计算缩放比 $\omega_r=f^c/f$;2. 图像 resize 为 $I_c=T(I,\omega_r)$,主点同步缩放为 $(\omega_r u_0, \omega_r v_0)$;3. 深度标签仅 resize(无数值缩放) img_size=(512,960)(ConvNet)img_size=(616,1064)(ViT)模拟规范相机的成像效果,对齐输入图像分布
前向传递 前向传递全流程(以 v2 ViT-L 为例,源码 RAFTDepthNormalDPTDecoder5.py)
输入层 :接收 RGB 图像 I 和相机内参 f,执行CSTM-image 变换 得到规范空间图像 $I_c$;
编码器 :ViT-L 提取多尺度特征 $H_0$(DINOv2 预训练权重保留通用几何特征);
初始预测层 :DPT 解码器将 $H_0$ 解码为低分辨率初始深度 $\hat{D}_c^0$ 和未归一化法向量 $\hat{N}_u^0$;
循环精修层(v2 核心创新):
输入:$\hat{D}_c^t$、$\hat{N}_u^t$、隐藏特征 $H^t$;
操作:3 个 ConvGRU 子块逐层细化特征(从 1/14→1/7→1/4 尺度),投影头输出深度 / 法向量增量 $\Delta\hat{D}_c^{t+1}$、$\Delta\hat{N}_u^{t+1}$;
迭代:$t=4$ 步后得到优化的 $\hat{D}_c^4$、$\hat{N}_u^4$,上采样至原图尺寸;
反 CSTM 变换:
深度:将 $\hat{D}_c^4$ 按 $1/\omega_r$ resize,输出真实物理深度 D(单位米);
法向量:对 $\hat{N}_u^4$ 做 L2 归一化,输出单位法向量 N(无数值变换,因法向量无度量歧义);
输出层 :同时输出 D 和 N,支持单任务 / 多任务推理。
损失函数的设计严格匹配'度量深度准确 + 法向量通用'的目标,v1 聚焦深度,v2 新增法向量协同损失,源码对应 mono/losses 目录。
源码中 losses 配置的权重为 $w_d=0.5$(深度损失总权重)、$w_n=1$(法向量损失权重)、$w_{d-n}=0.01$(一致性损失权重),核心逻辑是优先保证法向量的泛化性,再强化深度 - 法向量协同 。
核心指标及计算方式
可视化的核心是验证深度的度量准确性和法向量的几何合理性 ,源码 tools/visualization 提供配套工具,关键方法如下:
深度图可视化:色彩映射:近景红色、远景蓝色,标注关键区域的真实深度(如桌面 0.7m、墙面 2m),观察边缘是否清晰、近景细节是否保留;对比方式:叠加 GT 深度的误差热力图(红色为高误差区),定位模型的薄弱区域(如反光表面)。
法向量可视化:分量映射:x→红、y→绿、z→蓝,观察平面区域的法向量是否一致(如墙面 z 分量接近 1),避免 Marigold 等方法的噪声伪影。
3D 点云可视化(Meshlab/Open3D):输入:深度图 + 相机内参,生成点云并上色(RGB / 法向量);观察重点:点云的尺度是否符合真实物理尺寸(如椅子高度 0.4m)、是否存在离群点(反映深度噪声)。
SLAM 轨迹可视化:对比 GT 轨迹与预测轨迹的重合度,测量大场景下的尺度漂移(如 KITTI Seq00 的轨迹偏差 < 2%)。
Metric3D 的输出需简单后处理即可适配下游任务,核心是反 CSTM 变换的精度保障 ,下游集成逻辑如下:后处理步骤
深度后处理 :反 CSTM 变换后,对深度图做可选的中值滤波(3×3 核),消除孤立噪声;
法向量后处理 :对预测的法向量做 L2 归一化(确保单位向量),移除置信度 < 0.5 的低质量像素;
内参校验 :对野生图像(如 Flickr 照片),从 Exif 元数据提取内参,无元数据时用相机标定工具补全。
下游任务 集成逻辑 核心价值 3D 场景重建 输入 Metric3D 深度 + COLMAP 相机位姿,生成稠密点云 无需逐帧尺度对齐,重建误差比 LeReS 降低 40% 单目 SLAM 将 Metric3D 深度作为 Droid-SLAM 的初始深度先验 缓解尺度漂移,平移误差从 33.9% 降至 1.44% 野外计量 点云生成后,用 Meshlab 测量目标尺寸(如无人机翼展) 实测尺寸与 GT 误差 < 0.3m,优于 ZoeDepth 自动驾驶 360° 重建 融合 6 个车载相机的 Metric3D 深度,生成全景点云 多相机深度无尺度不一致,适配自动驾驶环境建模
任务 指标 计算逻辑 优劣判定 度量深度 AbsRel(绝对相对误差) AbsRel = $\frac{1}{N}\sum\frac{D-D^}{D^ }$ 越小越好,反映整体深度偏差 δ1/δ2/δ3(阈值精度) $\delta_i=\text{ratio of } \max(\frac{D}{D^},\frac{D^ }{D})<1.25^i$ 越大越好,δ1>0.98 为 SOTA 水平 RMS(均方根误差) RMS = $\sqrt{\frac{1}{N}\sum(D-D^*)^2}$ 越小越好,反映深度的数值偏差 表面法向量 30° 精度 法向量与 GT 的夹角 < 30° 的像素占比 越大越好,v2 可达 0.881(NYUv2 零样本) 中位角度误差 法向量夹角的中位数 越小越好,v2 可达 7.0°(NYUv2 零样本) 3D 重建 Chamfer L1 距离 预测点云与 GT 点云的平均最近邻距离 越小越好,v2 最低达 0.036(NYUv2) F-score 距离阈值内的匹配点占比 越大越好,v2 可达 0.814(NYUv2) SLAM 适配 平移漂移 $t_{rel}$ 轨迹的平均相对平移误差 越小越好,Droid-SLAM+Ours 从 33.9% 降至 1.44%
损失类型 公式(核心) 目标关联 侧重点 $L_{silog}$(尺度不变对数损失) $L_{silog}=\frac{1}{N}\sum(\log D-\log D^)^2 - \frac{1}{N^2}(\sum(\log D-\log D^ ))^2$ 解决深度的尺度歧义,适配多相机数据 全局深度尺度一致性 $L_{PWN}$(成对法向量损失) 约束局部邻域内法向量的一致性 提升深度的几何合理性(v1)/ 法向量平滑性(v2) 局部几何结构 $L_{VNL}$(虚拟法向量损失) 从深度生成虚拟法向量并约束 深度→法向量的几何关联 深度 - 法向量一致性(v1 基础) $L_{RPNL}$(随机提议归一化损失) 对 32 个局部 patch 做中位数归一化,约束 patch 内深度分布 弥补全图归一化的局部深度差异挤压 近景 / 边缘的深度细节 $L_n$(不确定性感知损失,v2 新增) 对法向量 GT 施加加权损失,权重为预测不确定性 适配法向量标注的噪声 法向量标注的鲁棒性 $L_{d-n}$(深度 - 法向量一致性损失,v2 新增) 约束预测法向量与深度生成的伪法向量的相似度 利用深度标注弥补法向量标注不足 无标注场景的法向量泛化
模块 核心作用 源码关键参数 参数影响 规范焦距 $f^c$ 定义统一度量空间 canonical_focal=1000$f^c=1000$ 时 AbsRel 最低(19.82%),过大 / 过小会导致误差升高 ViT 预训练权重 提升跨场景泛化 pretrained=dino_v2_regDINOv2 预训练比 ImageNet 提升 NYUv2 δ1 3% 以上 ConvGRU 迭代步数 优化深度 - 法向量一致性 iters=4(ViT-S)/8(ViT-G)步数 = 4 时精度 / 速度平衡,步数 = 8 时法向量误差降低 0.5°
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
随机西班牙地址生成器 随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
Gemini 图片去水印 基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online