Metric3D v2: 零样本度量深度与表面法线联合估计
概述
Metric3D v2 是一个面向单目图像的几何基础模型,用于从一幅图像中进行零样本度量深度和表面法线估计。该模型针对度量深度的相机内参歧义和表面法向量的标注稀缺两大痛点,提出了规范相机空间转换模块(CSTM)和联合深度 - 法向优化模块。基于超过 1600 万张图像训练,覆盖上万种相机模型,在多种基准上取得 SOTA 性能。
核心挑战
度量深度歧义
不同相机的焦距差异会导致'相同成像尺寸对应不同真实距离'的度量歧义。例如,焦距 26mm、深度 2m 与焦距 52mm、深度 4m 的成像一致。现有仿射不变深度方法(如 MiDaS、LeReS)解耦了度量信息,无法输出真实物理尺度。
法向量标注稀缺
高质量法向量标注依赖密集 3D 重建,仅室内场景有充足数据,户外标注不足 2 万张,而深度标注超 948.8 万张。现有方法在跨场景零样本测试中,法向量角度误差显著升高。
方法论
规范相机空间变换 (CSTM)
为解决焦距变化引起的度量模糊,提出 CSTM 将异构数据映射至统一规范空间(实验中固定规范焦距 fc = 1000 像素)。
- CSTM-label:直接对深度标签进行缩放。计算缩放因子 ωd = fc / f,将真实深度标签 D* 按比例缩放至规范空间 Dc* = ωd · D*。推理时按倒数还原为原相机的真实物理深度。
- CSTM-image:对输入图像进行缩放,模拟规范相机的成像效果。图像 I 按 ωr = fc / f 进行 resize,同时调整主点坐标。深度标签仅做尺寸对齐不做数值缩放。
实验表明,CSTM-label 性能更优,无 CSTM 时模型难以收敛,零样本 AbsRel 会从 0.083 暴增至 0.584。
联合深度 - 法向优化模块
利用深度标注的规模优势,通过循环精修块(ConvGRU)实现深度与法向量的迭代协同优化。法向量学习来源包括:
- 少量真实法向量标注;
- 深度 - 法向量一致性约束:通过深度反投影的 3D 点云计算伪法向量;
- 特征级知识蒸馏:将深度编码器的强表征能力迁移至法向量分支。
损失函数设计
- 深度损失:Ld = L_PWN + L_VNL + L_silog + L_RPNL。其中随机提议归一化损失(RPNL)随机裁剪 32 个局部 patch 做中位数归一化,避免全图归一化挤压细粒度深度差异。
- 法向量损失:有标注时用不确定性感知损失 Ln(·),无标注时用深度 - 法向量一致性损失 Ld-n(D, N)。
- 总损失:L = wdLd + wnLn + wd-n*Ld-n,权重分别为 0.5, 1, 0.01。
模型架构与训练配置
- 编码器:支持 ConvNeXt-Large(ImageNet22K 预训练)和 ViT 系列(DINOv2 预训练)。
- 解码器:ConvNeXt 搭配 Hourglass 解码器,ViT 搭配 DPT 解码器,ViT 模型额外增加 4-8 轮循环精修。
- 训练配置:48 张 A100 GPU、batch size=192、初始学习率 0.0001、训练 80 万次迭代。
实验结果
深度与法线基准
在 NYUv2、KITTI 等基准上,Metric3D v2 在零样本场景下表现优异:
- NYUv2 深度 δ₁达 0.980。
- KITTI 深度 AbsRel 低至 0.039。
- 法向量 30° 精度超 0.88。
下游应用
- 3D 场景重建:无需逐帧尺度对齐,重建误差比 LeReS 降低 40%。
- 单目 SLAM:作为 Droid-SLAM 的深度先验,平移漂移从 33.9% 降至 1.44%。


