图1 -与SoTA方法在16个深度和正常基准上的比较。我们的Metric 3D V2与来自不同作品的SoTA方法的雷达图,(1)公制深度基准,请参见’(度量深度基准“。(2)仿射不变深度基准,参见”(仿射不变深度基准。(3)表面法线基准,参见“(Normal)”。零-样本测试用"“表示。这里δ1百分比精度用于深度基准,30百分比精度用于正常。两个较高的值都表示性能更好。我们在广泛的深度和正常基准上建立新的SoTA。
深度损失: L = L s i l o g + L P W N + L V N L + L R P N L L=L_{silog}+L_{PWN}+L_{VNL}+L_{RPNL} L=Lsilog+LPWN+LVNL+LRPNL,随机提议归一化损失(RPNL):随机裁剪 32 个局部 patch 做中位数归一化,避免全图归一化挤压细粒度深度差异;法向量损失: L n + w d − n L d − n L_n+w_{d-n}L_{d-n} Ln+wd−nLd−n有标注时用不确定性感知损失,无标注时用深度 - 法向量一致性损失。
模型架构与训练配置
编码器:支持 ConvNeXt-Large(ImageNet22K 预训练)和 ViT 系列(DINOv2 预训练,含 Small/Large/Giant2);
因此,我们通过假设训练/测试图像的焦距已知来简化场景。相比之下,神经网络更容易理解图像的大小。为了获得真实世界的对象大小,神经网络需要理解语义场景布局和对象,神经网络擅长于此。我们定义 α = f ^ / S ^ α = \hat f/\hat S α=f^/S^,表明da与α成正比。我们观察以下关于传感器尺寸、像素尺寸和焦距的情况。
O1:传感器尺寸和像素尺寸不影响度量深度估计。基于透视投影(图6(A)),传感器尺寸只影响视场(FOV),与α无关,因此它不影响度量深度估计。( δ 1 = 2 δ 2 δ_1 = 2δ_2 δ1=2δ2),但焦距相同,在距离da处捕获同一物体。图6(B)显示了它们捕获的图像。根据表,像素表示的焦距为 f 1 = 1 2 f 2 f_1 =\frac 1 2 f_2 f1=21f2 。由于第二个相机的像素尺寸较小,因此像素表示图像的分辨率为 S 1 ′ = 1 2 S 2 ′ S '_1 =\frac 1 2 S'_2 S1′=21S2′ ,尽管两者具有相同的投影成像尺寸S '。根据等式(1),我们有 f ^ δ 1 ⋅ S 1 ′ = f ^ δ 2 ⋅ S 2 ′ \frac{\hat f}{δ_1·S'_1} =\frac{\hat f }{δ_2·S '_2} δ1⋅S1′f^=δ2⋅S2′f^ ,这意味着α1 = α2和d1 = d2。这意味着相机传感器的变化不会影响度量深度的估计。
O2:焦距对于度量深度估计至关重要。图5示出了由未指定焦距引起的度量模糊性的挑战,这在图7中进一步讨论。( f ^ 1 = 2 f ^ 2 \hat f_1 = 2\hat f_2 f^1=2f^2 )被定位在距离 d 1 = 2 d 2 d_1 = 2d_2 d1=2d2 处,成像尺寸对于两个相机保持一致。神经网络努力仅基于视觉线索来区分不同的监督标签。为了解决这个问题,我们提出了一个规范的相机变换方法,以减少监督要求和图像表示之间的冲突。
基本概念需要建立一个规范的相机空间( ( f x c , f y c ) , f x c = f y c = f c (f^ c_ x,f^ c_ y),f ^c_x = f^ c_y = f^ c (fxc,fyc),fxc=fyc=fc,其中在实验设置中)并将所有训练数据转置到该指定空间中。因此,所有数据可以广义地解释为由标准相机捕获。我们提出了两种变换方法,即变换输入图像( I ∈ R H × W × 3 I ∈ \R^{H ×W×3} I∈RH×W×3 )或变换地面真实(GT)标签( D ∈ R H × W D ∈ \R^{H ×W} D∈RH×W)。
方法1:转换深度标签(CSTM标签)。图5的模糊性是针对深度的。因此,我们的初始方法通过转换地面实况深度标签来直接解决这个问题。具体来说,我们在训练期间使用比率 ω d = f c f ω_d =\frac {f ^c}f ωd=ffc 重新缩放地面实况深度(D),表示为 D c = ω d D ∗ D_c = ω_dD^* Dc=ωdD∗ 。原始相机模型经历到f c,u0,v0的转换。在推理中,预测深度(Dc)存在于规范空间中,并且需要去规范变换来恢复度量信息,表示为 D = 1 ω d D c D =\frac 1{ω_d} D_c D=ωd1Dc 。值得注意的是,输入I保持不变,表示为 I c = I I_c = I Ic=I。
方法2:对输入图像(CSTM图像)进行变换。从另一个角度来看,模糊性是由于图像外观的相似性而产生的。因此,该方法旨在改变输入图像以模拟标准相机的成像效果。具体地,图像I使用比率 ω r = f c f ω_r =\frac{f^c} f ωr=ffc 进行缩放,表示为 I c = T ( I , ω r ) I_c = T(I,ω_r) Ic=T(I,ωr) ,其中T(·)表示图像I。作为缩放光学中心的结果,规范照相机模型变为 f c , ω r u 0 , ω r v 0 f^c,ω_ru_0,ω_rv_0 fc,ωru0,ωrv0 。在推理中,去正则化变换涉及将预测值转换到其原始维度而不进行缩放,表示为 D = T ( D c , 1 ω r ) D = T(D_c,\frac1{ω_r}) D=T(Dc,ωr1)。虽然在MPSD 中采用了类似的变换来进行归一化深度预测,但我们的方法应用这些模块来直接预测度量深度。
图9显示了流水线。在采用任一变换后,为了训练目的,随机裁剪补丁。此裁剪操作仅调整视场(FOV)和光学中心,从而避免任何潜在的度量模糊问题。在标签变换方法中, ω r = 1 ω_r = 1 ωr=1 且 ω d = f c f ω_d =\frac{f^c} f ωd=ffc,而在图像变换方法中, ω d = 1 ω_d = 1 ωd=1 和 ω r = f c f ω_r =\frac{f^ c}f ωr=ffc。在整个训练过程中,变换后的地面实况深度标签D c被用作监督。重要的是,由于表面法线不易受到度量模糊性的影响,因此没有变换被应用于法线标签N c。
图9 -流水线。给定一个输入图像I,我们首先使用CSTM将其变换到规范空间。将变换后的图像Ic输入到标准深度法线估计模型中,以生成规范空间中的预测度量深度Dc和度量不可知表面法线N。在训练过程中,Dc由同样变换到规范空间中的GT深度 D c ∗ D^*_c Dc∗ 监督。在推理过程中,在产生规范空间中的度量深度Dc之后,我们执行去规范变换以将其转换回原始输入I的空间。使用相机内在特性来执行规范空间变换和去规范变换。经由恢复的度量深度D以及GT法线 N ∗ N^* N∗,通过深度法线一致性来监督预测法线N,如果可以话。
为了促进深度和法线之间的知识流,我们使用递归细化块实现了基于学习的优化,如图10所示。与以前的单目方法不同,我们的方法通过这些块迭代更新深度和法线。受 RAFT 的启发,我们迭代优化了中间低分辨率深度D c和未归一化的法向N Nu,其中N表示低分辨率预测 D ^ c ∈ R H 4 × W 4 , N ^ u ∈ R H 4 × W 4 × 3 \hat D_c ∈ \R^{\frac H 4 ×\frac W 4},\hat N_u ∈ \R^{\frac H 4 ×\frac W 4 × 3} D^c∈R4H×4W,N^u∈R4H×4W×3 ,下标c表示深度D c在正则空间中。
图10 -联合深度和法线优化。在规范空间中,我们部署由ConvGRU子块(C-RGU)和投影头组成的递归块在优化期间,中间低分辨率深度和法线 D ^ c 0 N ^ u 0 \hat D^0_c\hat N^0_u D^c0N^u0 最初由解码器给出,然后由预测的更新0迭代地细化。在T + 1次迭代之后,对优化的中间预测 D ^ ( T + 1 ) N ^ u ( T + 1 ) \hat D^{(T +1)}\hat N^{(T +1)}_u D^(T+1)N^u(T+1) 进行上采样和后处理,以获得规范空间中的最终深度Dc和最终法线N。
如图10所示,最优化模块表示在步骤t之后优化的低分辨率深度和法线,其中 t = 0,1,2,.,T 表示步骤索引。最初,在步骤t = 0,解码器给出最优化模块。除了更新深度和法线之外,最优化模块还更新隐藏特征图Ht,其由解码器初始化。在每次迭代期间,学习到的递归块F输出更新HIDc,HIDu,并更新隐藏特征H:
∆ D ˆ t + 1 c , ∆ N ˆ t + 1 u , H t + 1 = F ( ˆ D t u , ˆ N t u , H t , H 0 ) , ( 2 ) ∆Dˆ t+1 c , ∆Nˆ t+1 u , Ht+1 = F( ˆDt u , ˆNt u , Ht , H0 ), (2) ∆Dˆt+1c,∆Nˆt+1u,Ht+1=F(ˆDtu,ˆNtu,Ht,H0),(2)
然后应用更新来更新预测:
D ^ c t + 1 = D ^ c t + ∆ D ^ c t + 1 , N ^ u t + 1 = N ^ u t + ∆ N ^ u t + 1 , ( 3 ) \hat D^{t+1}_c = \hat D^t_c + ∆\hat D^{t+1}_c , \\ \hat N^{t+1}_u = \hat N^t_u + ∆\hat N^{t+1}_u , (3) D^ct+1=D^ct+∆D^ct+1,N^ut+1=N^ut+∆N^ut+1,(3)
H t + 1 = C o n v G R U ( D ^ t , N ^ t , H ^ 0 , H ^ t ) , ∆ D ^ t + 1 = G d ( H t + 1 ) , ∆ N ^ t + 1 = G n ( H t + 1 ) . ( 4 ) H^{t+1} = ConvGRU(\hat D^t ,\hat N^t , \hat H^0 ,\hat H^t ), \\ ∆\hat D^{t+1} = Gd(H^{t+1}), ∆\hat N^{t+1} = Gn(H^{t+1}).(4) Ht+1=ConvGRU(D^t,N^t,H^0,H^t),∆D^t+1=Gd(Ht+1),∆N^t+1=Gn(Ht+1).(4)
关于精化模块F的详细结构,我们建议读者参考补充材料。
在T + 1迭代步骤之后,我们获得了良好优化的低分辨率预测 D ^ c T + 1 和 N u T + 1 \hat D^{T +1}_ c和N^{T +1}_u D^cT+1和NuT+1 。然后对这些预测进行上采样和后处理,以生成最终的深度Dc和表面法线N:
D c = H d ( u p s a m p l e ( D ^ c T + 1 ) ) N = H n ( u p s a m p l e ( N ^ u T + 1 ) ) , ( 5 ) D_c = H_d(upsample(\hat D^{T +1}_c )) \\ N = H_n(upsample(\hat N^{T +1}_u )), (5) Dc=Hd(upsample(D^cT+1))N=Hn(upsample(N^uT+1)),(5)
D c , N = N d − n ( I c , θ ) , ( 6 ) D_c, N = N_{d−n}(I_c, θ) ,(6) Dc,N=Nd−n(Ic,θ),(6)
其中θ是网络的(Nd−n)参数。
Supervision
训练目标是:
min θ L ( N d − n ( I c , θ ) , D c ∗ , N ∗ ) , ( 7 ) \min_θ L(N_{d−n}(I_c, θ), D^∗_c , N^∗ ), (7) θminL(Nd−n(Ic,θ),Dc∗,N∗),(7)
其中, D c ∗ D^*_c Dc∗ 和Ic是规范空间c中的经变换的 GT 深度标签和图像,N表示正常标签,L是如下所示的监督损失。
随机建议归一化损失。为了提高深度估计的性能,我们提出了随机建议归一化损失(RPNL)。尺度平移不变损失广泛应用于仿射不变深度估计,它将深度尺度放大以强调单个图像分布。然而,这种基于整个图像的归一化不可避免地挤压了细粒度的深度差,特别是在靠近的区域。受此启发,我们建议从 GT D c ∗ D^*_c Dc∗ 和预测深度Dc随机裁剪几个补丁( p i ( i = 0 , . . . , M ) ∈ R h i × w i p_{i(i= 0,...,M)}∈ \R^{h_i×w_i} pi(i=0,...,M)∈Rhi×wi )。然后我们对成对的补丁采用中值绝对偏差归一化。通过归一化局部统计数据,我们可以增强局部对比度。损失函数如下:
L R P N L = 1 M N M X p i N X j ∣ d ∗ p i , j − µ ( d ∗ p i , j ) 1 N P N j d ∗ p i , j − µ ( d ∗ p i , j ) − d p i , j − µ ( d p i , j ) 1 N P N j ∣ d p i , j − µ ( d p i , j ) ∣ ∣ ( 8 ) LRPNL = 1 MN M X pi N X j | d ∗ pi,j − µ(d ∗ pi,j ) 1 N PN j d ∗ pi,j − µ(d ∗ pi,j )− dpi,j − µ(dpi,j ) 1 N PN j |dpi,j − µ(dpi,j )| | (8) LRPNL=1MNMXpiNXj∣d∗pi,j−µ(d∗pi,j)1NPNjd∗pi,j−µ(d∗pi,j)−dpi,j−µ(dpi,j)1NPNj∣dpi,j−µ(dpi,j)∣∣(8)
其中 d ∗ ∈ D c ∗ d^* ∈ D^*_c d∗∈Dc∗ 和 d ∈ D c d ∈ D_c d∈Dc 分别是 GT 值和预测深度。μ(·)和是深度的中值。M是建议裁剪的数量,设置为32。在训练期间,建议从图像中随机裁剪原始大小的0.125到0.5。此外,还使用了其他几种损失,包括尺度不变对数损失 Lsilog,成对正态回归损失 LPWN,虚拟正态损失 LVNL。注:Lsilog是L1损失的一个变体。总损失如下。
L d = L P W N + L V N L + L s i l o g + L R P N L . ( 9 ) L_d = L_{PWN} + L_{VNL} + L_{silog} + L_{RPNL}. (9) Ld=LPWN+LVNL+Lsilog+LRPNL.(9)
这种损失是基于使用最小二乘法从预测深度生成的伪法线映射与预测法线本身之间的相似性计算的。与以前的方法不同,这种损失作为一种自我监督机制,不需要深度或正常的 GT 标签。请注意,这里我们使用真实的世界中的深度D而不是规范空间中的深度 D c D_c 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 ) L = w_dL_d(D_c, D^∗_c ) + w_nL_n(N, N^∗ ) + w_{d−n}L_{d−n}(N, D) (10) L=wdLd(Dc,Dc∗)+wnLn(N,N∗)+wd−nLd−n(N,D)(10)
式中 w d = 0.5 , w n = 1 , w d − n = 0.01 w_d = 0.5,w_n = 1,w_{d-n} = 0.01 wd=0.5,wn=1,wd−n=0.01 作为衡量损失项目的权重。
不同相机的焦距差异会导致 “相同成像尺寸对应不同真实距离” 的度量歧义(如焦距 26mm、深度 2m 与焦距 52mm、深度 4m 的成像一致)。CSTM 通过构建统一的规范相机空间(焦距固定为 1000 像素),将异构数据映射至该空间:对于 CSTM-label,按 ω d = f c / f \omega_d=f^c/f ωd=fc/f缩放真实深度标签,消除不同焦距的深度数值歧义;对于 CSTM-image,按 ω r = f c / f \omega_r=f^c/f ωr=fc/f缩放输入图像和光心,模拟规范相机的成像效果,对齐输入分布。推理阶段通过反变换还原为原相机的真实物理深度,实现了跨相机的度量深度统一,无 CSTM 的模型零样本 AbsRel 会从 0.083 暴增至 0.584。
Metric3D v2 相比当前 SOTA 方法(如 DepthAnything、Marigold),在零样本度量深度任务上的核心优势体现在泛化性和度量精度的双重突破:
Metric3D v2 中规范相机空间变换模块(CSTM)核心目标是消除不同相机内参(尤其是焦距)导致的度量深度歧义,将异构输入统一至规范相机空间(实验中固定规范焦距 f c = 1000 f^c=1000 fc=1000像素),实现跨相机的度量深度学习。其具体实现分为CSTM-label(深度标签变换)和CSTM-image(输入图像变换)两种方式,CSTM 的实现基于针孔相机模型,需先明确相机内参的核心参数:
物理焦距 f ^ \hat{f} f^:相机镜头的实际焦距(单位:μm,如 iPhone14 Pro 为 24mm);
像素尺寸 δ \delta δ:传感器单个像素的物理尺寸(单位:μm,如 iPhone14 Pro 为 2.44μm);
像素级焦距f:由物理焦距和像素尺寸计算得 f = f ^ / δ f=\hat{f}/\delta f=f^/δ(单位:像素,为视觉算法常用焦距);
规范焦距 f c f^c fc:实验中固定为1000 像素(消融实验验证此值为最优,焦距过大 / 过小会导致 AbsRel 误差上升);
主点坐标 ( u 0 , v 0 ) (u_0,v_0) (u0,v0):默认取图像中心,若有标定值则用标定结果。
训练阶段实现,计算缩放比例:根据原相机像素级焦距f和规范焦距 f c f^c fc,计算深度标签的缩放因子 ω d = f c / f \omega_d = f^c/f ωd=fc/f;标签变换:将真实深度标签 D ∗ D^* D∗按比例缩放至规范空间,得到规范空间标签 D c ∗ = ω d ⋅ D ∗ D_c^*=\omega_d \cdot D^* Dc∗=ωd⋅D∗;相机内参适配:将原相机内参的焦距替换为规范焦距 f c f^c fc,主点坐标 ( u 0 , v 0 ) (u_0,v_0) (u0,v0)保持不变,即规范空间内参为 [ f c , u 0 , v 0 ] [f^c, u_0, v_0] [fc,u0,v0];数据增强:对变换后的图像随机裁剪(尺寸 512×960/616×1064,根据编码器类型调整),仅调整视场角不引入新的度量歧义。
推理阶段实现(反规范变换),模型输出规范空间深度 D c D_c Dc;按缩放因子的倒数还原为原相机的真实物理深度: D = D c / ω d D = D_c / \omega_d D=Dc/ωd;最终深度D的单位为米,直接对应摄像头到目标的绝对物理距离。
核心是将不同焦距下的深度标签映射至同一规范尺度,消除 “相同成像尺寸对应不同真实距离” 的歧义。例如,原焦距 f = 500 f=500 f=500像素时, ω d = 1000 / 500 = 2 \omega_d=1000/500=2 ωd=1000/500=2,深度标签 D ∗ = 2 m D^*=2m D∗=2m会被缩放为 D c ∗ = 4 D_c^*=4 Dc∗=4(规范空间单位);推理时再还原为 D = 4 / 2 = 2 m D=4/2=2m D=4/2=2m。
训练阶段实现,计算缩放比例:图像缩放因子 ω r = f c / f \omega_r=f^c/f ωr=fc/f(与 CSTM-label 的 ω d \omega_d ωd公式一致);图像变换:将输入图像I按 ω r \omega_r ωr进行 resize(如原尺寸 4032×3024, ω r = 0.5 \omega_r=0.5 ωr=0.5则变为 2016×1512),同时调整主点坐标为 ( ω r u 0 , ω r v 0 ) (\omega_r u_0, \omega_r v_0) (ωru0,ωrv0),规范空间内参为 [ f c , ω r u 0 , ω r v 0 ] [f^c, \omega_r u_0, \omega_r v_0] [fc,ωru0,ωrv0];标签适配:将真实深度标签 D ∗ D^* D∗按 ω r \omega_r ωr进行 resize(仅调整空间分辨率,不改变深度数值),得到规范空间标签 D c ∗ = T ( D ∗ , ω r ) D_c^*=T(D^*, \omega_r) Dc∗=T(D∗,ωr)(T为 resize 操作);数据增强:同 CSTM-label,随机裁剪无度量歧义。
推理阶段实现(反规范变换),模型输出规范空间深度 D c D_c Dc(尺寸为 resize 后的大小);将 D c D_c Dc按 1 / ω r 1/\omega_r 1/ωrresize 至原图像尺寸,得到最终深度D(无数值缩放,仅恢复空间分辨率)。
训练数据需同时包含图像数据和相机内参(焦距 f ^ \hat{f} f^、像素尺寸 δ \delta δ、主点 ( u 0 , v 0 ) (u_0,v_0) (u0,v0)),内参是 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 s i l o g L_{silog} Lsilog损失);
法向量标签(v2 新增):3 通道浮点图(x/y/z 分量,需归一化),来源为稠密 3D 重建(如 ScanNet、Matterport3D),仅室内场景有足量标注,户外依赖深度生成伪法向量;
相机内参:存储为 JSON/XML 格式,包含 f ^ \hat{f} f^(物理焦距)、 δ \delta δ(像素尺寸)、图像分辨率,源码中通过canonical_space配置项调用。
1. 计算缩放比 ω d = f c / f \omega_d=f^c/f ωd=fc/f( f c = 1000 f^c=1000 fc=1000像素为规范焦距);2. 深度标签 D ∗ D^* D∗缩放为 D c ∗ = ω d ⋅ D ∗ D_c^*=\omega_d \cdot D^* Dc∗=ωd⋅D∗;3. 图像保持不变
canonical_focal=1000
直接对齐深度标签的度量尺度,消除焦距歧义
CSTM-image
1. 计算缩放比 ω r = f c / f \omega_r=f^c/f ωr=fc/f;2. 图像 resize 为 I c = T ( I , ω r ) I_c=T(I,\omega_r) Ic=T(I,ωr),主点同步缩放为 ( ω r u 0 , ω r v 0 ) (\omega_r u_0, \omega_r v_0) (ωru0,ωrv0);3. 深度标签仅 resize(无数值缩放)
源码中losses配置的权重为 w d = 0.5 w_d=0.5 wd=0.5(深度损失总权重)、 w n = 1 w_n=1 wn=1(法向量损失权重)、 w d − n = 0.01 w_{d-n}=0.01 wd−n=0.01(一致性损失权重),核心逻辑是优先保证法向量的泛化性,再强化深度 - 法向量协同。
AbsRel = 1 N ∑ D − D ∗ D ∗ \text{AbsRel}=\frac{1}{N}\sum\frac{D-D^*}{D^*} AbsRel=N1∑D∗D−D∗
越小越好,反映整体深度偏差
δ1/δ2/δ3(阈值精度)
δ i = ratio of max ( D D ∗ , D ∗ D ) < 1.2 5 i \delta_i=\text{ratio of } \max(\frac{D}{D^*},\frac{D^*}{D})<1.25^i δi=ratio of max(D∗D,DD∗)<1.25i
越大越好,δ1>0.98 为 SOTA 水平
RMS(均方根误差)
RMS = 1 N ∑ ( D − D ∗ ) 2 \text{RMS}=\sqrt{\frac{1}{N}\sum(D-D^*)^2} RMS=N1∑(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 r e l t_{rel} trel
轨迹的平均相对平移误差
越小越好,Droid-SLAM+Ours 从 33.9% 降至 1.44%
损失类型
公式(核心)
目标关联
侧重点
L s i l o g L_{silog} Lsilog(尺度不变对数损失)
L s i l o g = 1 N ∑ ( log D − log D ∗ ) 2 − 1 N 2 ( ∑ ( log D − log D ∗ ) ) 2 L_{silog}=\frac{1}{N}\sum(\log D-\log D^*)^2 - \frac{1}{N^2}(\sum(\log D-\log D^*))^2 Lsilog=N1∑(logD−logD∗)2−N21(∑(logD−logD∗))2
解决深度的尺度歧义,适配多相机数据
全局深度尺度一致性
L P W N L_{PWN} LPWN(成对法向量损失)
约束局部邻域内法向量的一致性
提升深度的几何合理性(v1)/ 法向量平滑性(v2)
局部几何结构
L V N L L_{VNL} LVNL(虚拟法向量损失)
从深度生成虚拟法向量并约束
深度→法向量的几何关联
深度 - 法向量一致性(v1 基础)
L R P N L L_{RPNL} LRPNL(随机提议归一化损失)
对 32 个局部 patch 做中位数归一化,约束 patch 内深度分布
弥补全图归一化的局部深度差异挤压
近景 / 边缘的深度细节
L n L_n Ln(不确定性感知损失,v2 新增)
对法向量 GT 施加加权损失,权重为预测不确定性
适配法向量标注的噪声
法向量标注的鲁棒性
L d − n L_{d-n} Ld−n(深度 - 法向量一致性损失,v2 新增)
约束预测法向量与深度生成的伪法向量的相似度
利用深度标注弥补法向量标注不足
无标注场景的法向量泛化
模块
核心作用
源码关键参数
参数影响
规范焦距 f c f^c fc
定义统一度量空间
canonical_focal=1000
f c = 1000 f^c=1000 fc=1000时 AbsRel 最低(19.82%),过大 / 过小会导致误差升高