【读点论文】Metric3D v2: A Versatile Monocular Geometric Foundation Model for Zero-shot MD and SNE坐标系变换

【读点论文】Metric3D v2: A Versatile Monocular Geometric Foundation Model for Zero-shot MD and SNE坐标系变换

Metric3D v2: A Versatile Monocular Geometric Foundation Model for Zero-shot Metric Depth and Surface Normal Estimation

Abstract

  • Metric3D v2是一个几何基础模型,用于从一幅图像中进行零样本深度和表面法线估计,这对度量3D恢复至关重要。虽然深度和法线在几何上是相关的,并且高度互补,但它们存在不同的挑战。最先进的(SoTA)单目深度方法通过学习仿射不变深度来实现零样本泛化,同时,由于缺乏大规模标记数据,SoTA法线估计方法的零样本性能有限。为了解决这些问题,我们提出了度量深度估计和表面法线估计的解决方案。对于度量深度估计,我们指出,零样本单视图模型的关键在于解决各种相机模型和大规模数据训练的度量模糊性。我们提出了一个规范的相机空间转换模块,它明确地解决了模糊性问题,可以毫不费力地插入到现有的单目模型中
  • 对于表面法向估计,我们提出了一个联合深度-法向优化模块,从度量深度中提取多样化的数据知识,使法向估计器能够超越法向标签进行学习。配备了这些模块,我们的深度-法向模型可以使用超过1600万张图像进行稳定训练来自数千个带有不同类型注释的相机模型,导致零样本泛化到具有看不见的相机设置的野外图像。我们的方法目前在度量深度,仿射不变深度以及表面法线预测的各种零样本和非零样本基准上排名第一,图1所示。值得注意的是,我们在包括NYUv 2和KITTI在内的各种深度基准上超过了超新的MarigoldDepth和DepthAnything。我们的方法能够在随机收集的互联网图像上准确恢复度量3D结构,为合理的单图像计量铺平了道路。
  • 潜在的好处延伸到下游任务,只需插入我们的模型即可显著改善。例如,我们的模型缓解了单眼SLAM的尺度漂移问题(图3),从而实现高质量的度量尺度密集映射。这些应用突出了Metric3D v2模型作为几何基础模型的多功能性。我们的项目页面位于 Metric3D-v2
  • Metric3D v2是一款面向单目图像的零样本度量深度与表面法向量联合估计的几何基础模型,其核心突破在于针对度量深度的相机内参歧义和表面法向量的标注稀缺两大痛点,提出了规范相机空间变换模块(CSTM)*和*联合深度 - 法向量优化模块。模型基于16 个数据集的超 1600 万张图像**(覆盖上万种相机模型)完成训练,不仅在16 + 深度与法向量基准上斩获 SOTA(零样本场景下 NYUv2 深度 δ₁达 0.980、KITTI 深度 AbsRel 低至 0.039,法向量 30° 精度超 0.88),还可直接赋能3D 场景重建单目 SLAM(大幅缓解尺度漂移)野外场景计量等下游任务,实现了从单张野生图像到真实物理尺度 3D 结构的精准还原。

INTRODUCTION

  • 单目度量深度和表面法线估计是从单个图像中预测绝对距离和表面方向的任务。作为重要的3D表示,深度和法线在几何上是相关的并且高度互补。虽然度量深度在捕获大规模数据方面表现出色,与度量深度相比,表面法线提供了对局部几何的上级保留,并且没有度量模糊性。这些独特的属性呈现深度和各种计算机视觉应用中不可或缺的表面法线,包括3D重建,神经渲染(NeRF),自动驾驶和机器人。目前,社区仍然缺乏一个强大的,可概括的几何基础模型能够从单个图像生成高质量的度量深度和表面法线
    • 图1 -与SoTA方法在16个深度和正常基准上的比较。我们的Metric 3D V2与来自不同作品的SoTA方法的雷达图,(1)公制深度基准,请参见’(度量深度基准“。(2)仿射不变深度基准,参见”(仿射不变深度基准。(3)表面法线基准,参见“(Normal)”。零-样本测试用"“表示。这里δ1百分比精度用于深度基准,30百分比精度用于正常。两个较高的值都表示性能更好。我们在广泛的深度和正常基准上建立新的SoTA。
  • 度量深度估计和表面法线估计面临着不同的挑战。现有的深度估计方法分为学习度量深度,相对深度和仿射不变深度。尽管度量深度方法在各种基准测试中取得了令人印象深刻的准确性,他们必须使用相同的相机本质对数据集进行训练和测试。因此,度量深度方法的训练数据集通常很小,因为很难使用一个相同的相机收集覆盖不同场景的大型数据集。其结果是,所有这些模型在零样本测试中的泛化能力都很差,更不用说测试图像的相机参数也可能变化。
  • 一个折衷的方法是学习相对深度,它只表示一个点离另一个点更远或更近。相对深度的应用非常有限。学习仿射不变深度在上述两类方法之间找到了一个折衷,即深度达到未知的尺度和位移。对于大规模数据,它们在训练过程中解耦了度量信息,并实现了令人印象深刻的鲁棒性和泛化能力,例如MiDaS ,DPT ,LeReS ,HDN 。问题是未知的偏移会导致3D重建失真,非度量深度无法满足各种下游应用。
  • 同时,这些模型不能生成表面法线。尽管将深度提升到3D点云可以做到这一点,但它对预测深度的准确性和精细细节提出了很高的要求。否则,各种伪影将保留在这种转换的法线中。例如,图2显示了来自Marigold 深度的噪声法线,它在产生高分辨率精细深度方面表现出色。而不是直接转换,最先进的(SoTA)表面法线估计方法倾向于训练高质量法线注释的估计器。
    • 图2 -不同web图像上的表面法线(N)和单眼深度(D)比较。我们的方法直接估计度量深度和表面法线,在各种场景中显示出强大的泛化能力,包括室内,室外,能见度差,运动模糊和鱼眼图像。可视化结果来自我们的ViT-大主干估计器。Marigold是一种强大而强大的基于扩散的单眼深度估计方法,但从深度恢复的表面法线显示出各种伪影。
  • 与传感器捕获的地面实况(GT)不同,这些注释是从精心和密集重建的场景中导出的,其对捕获设备和场景都具有极其严格的要求。数据源主要包括合成创建或3D室内重建。真实的和多样化的室外场景是非常罕见的。(参考我们在表5中的数据统计)。受此标签缺陷的限制,SoTA表面法线方法通常与强大的零样本泛化相斗争。这项工作致力于通过开发零样本,单视图,度量深度的多任务基础模型来解决这些挑战,和表面法线估计。
    • 表5 -用于实验的训练和测试数据集。
  • 我们针对零样本度量深度和表面法线估计的挑战提出了有针对性的解决方案。对于度量尺度恢复,我们首先分析了单目深度估计中的度量模糊问题,并研究了深度方面的不同相机参数,包括像素大小,焦距和传感器大小。我们观察到焦距是精确度量恢复的关键因素。通过设计,仿射不变深度方法在训练过程中没有考虑焦距信息。如3.1节所示,仅从图像外观来看,不同的焦距可能会导致度量模糊,因此它们在训练中解耦了深度尺度。为了解决焦距变化的问题,CamConv 对网络中的相机模型进行编码,这迫使网络从图像外观中隐式地理解相机模型,然后将成像大小与真实世界的大小联系起来。
  • 然而,训练数据包含有限的图像和摄像机类型,这对数据多样性和网络容量提出了挑战。我们在训练中提出了一种规范的摄像机变换方法,灵感来自人体重建方法的规范姿势空间。我们将所有的训练数据转换到一个规范的相机空间,在这个空间中,处理后的图像被粗略地认为是由同一个相机捕获的。
  • 为了实现这种转换,我们提出了两种不同的方法。第一种方法试图调整图像外观以模拟规范相机,而另一种方法则转换 GT 标签以进行监督。相机模型不在网络中编码,使我们的方法易于适用于现有架构。在推理过程中,采用去规范变换来恢复度量信息。为了进一步提高深度精度,我们提出了一种随机建议归一化损失。它受到尺度移位不变损失的启发解耦深度尺度以强调单个图像的分布。然而,它们在整个图像上执行,这不可避免地挤压了细粒度的深度差异。我们建议从图像中随机裁剪几个补丁,并对其实施尺度平移不变损失。我们的损失强调了单个图像的局部几何形状和分布
  • 对于表面法线,最大的挑战是缺乏多样的(室外)注释。与基于重建的注释方法相比,直接从网络预测的深度产生法线标签更有效和可扩展。然而,这种伪法线标签的质量受到深度网络的准确性的限制。幸运的是,我们观察到,鲁棒的度量深度模型是可扩展的几何学习器,包含丰富的正态估计信息,通过学习的度量深度转换的伪正态标注的弱监督可以有效地防止由于GT缺失而导致的正态估计崩溃。
  • 此外,这种监督可以指导正态估计器在大规模未标记数据上进行推广。基于这种观察,我们提出了一个联合深度-正态优化模块,以从不同的深度数据集中提取知识。在优化过程中,我们的正态估计器从三个来源学习:(1)Groundtruth正常标签,尽管它们与深度注释相比要少得多(2)约束深度法线一致性的明确学习目标。通过特征融合从深度到正常的隐式和彻底的知识转移,这比显式对应物更能容忍不满意的初始预测。
  • 为了实现这一点,我们使用深度递归块实现优化模块。虽然以前的研究人员使用类似的递归模块来优化深度,视差,自我运动或光流,但这是第一次在基于学习的方案中迭代优化法线和深度。受益于联合优化模块,我们的模型可以有效地从大规模深度数据集中学习正常知识,即使没有标签
  • 使用所提出的方法,我们可以稳定地将模型训练扩展到来自16个不同场景类型(室内和室外,真实的或合成数据),相机模型(数万个不同的相机)和注释类别(有或没有正常)的1600万张图像,从而实现零样本可移植性和显着提高的准确性。
  • 图4展示了带有深度标注的大规模数据如何直接促进度量深度和表面法线学习。我们的模型给出的度量深度和法线直接拓宽了下游任务的应用。我们在超过16个深度和法线基准上实现了最先进的性能,参见图1。我们的模型可以从随机收集的互联网图像中准确地重建度量3D,例如(图3),我们恢复真实世界的度量以改善单目SLAM 并促进大规模3D重建。我们的主要贡献可以总结为:
    • 我们提出了一种规范的相机变换方法来解决度量深度在不同相机设置下的模糊性,这种方法有助于使用大规模数据集训练零样本单目度量深度模型。
    • 我们设计了一个随机的建议归一化损失,以有效地提高度量深度。
    • 我们提出了一个联合深度-法线优化模块,用于在没有法线注释的大规模数据集上学习法线,从度量深度估计器中提取知识。
    • 我们的模型在各种深度和表面法线基准中排名第一。它可以在野外执行高质量的3D度量结构恢复,并有利于几个下游任务,如monoSLAM,3D场景重建和计量。
    • 图3-顶部(复杂场景的计量):我们用两部电话(iPhone14 pro和三星Galaxy S23)来捕捉场景并测量几个物体的大小,包括一个在整个训练集中从未出现过的无人机。通过照片的元数据,我们执行3D度量重建,然后测量物体大小(用红色标记),接近 GT 与ZoeDepth 相比,我们测量的尺寸更接近 GT 值。底部(密集SLAM映射):现有的SoTA单SLAM方法通常面临尺度漂移问题(见红色箭头)在大规模的场景中,无法实现度量尺度,而天真地输入我们的度量深度,Droid-SLAM 可以恢复更准确的轨迹并执行度量密集映射(见红色测量)。请注意,所有测试数据对我们的模型都是不可见的。
    • 图4 -总体方法。我们的方法采用单个图像同时预测度量深度和表面法线。我们直接将大规模数据训练应用于度量深度估计,而不是仿射不变深度,从而使用单个模型为各种应用实现端到端零样本度量深度估计。对于法线,我们仅支持从深度标签学习,从而减轻了密集重建以生成大规模法线标签的需求。
  • 单目度量深度表面法向量是 3D 视觉的核心表征,但存在两大技术瓶颈:
    • 深度估计瓶颈:度量深度方法:需固定相机内参训练,数据集规模受限(通常 < 百万张),零样本泛化性极差;仿射不变深度方法(如 MiDaS、LeReS):可零样本泛化,但输出深度存在未知尺度 / 偏移,无法满足真实物理测量需求;
    • 法向量估计瓶颈:标注稀缺:高质量法向量标注依赖密集 3D 重建,仅室内场景有充足数据,户外标注不足 2 万张,而深度标注超948.8 万张(14 个户外数据集);泛化性弱:现有方法(如 Polymax、Omnidata)在跨场景零样本测试中,法向量角度误差显著升高。Metric3D v2 的目标是构建零样本、多任务、可输出真实物理尺度的几何基础模型。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  • 从单个图像进行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

  • 考虑针孔相机模型,其内参数公式为: [ [ f ^ / δ , 0 , u 0 ] , [ 0 , f ^ / δ , v 0 ] , [ 0 , 0 , 1 ] ] [[\hat f/δ,0,u 0],[0,\hat f/δ,v0],[0,0,1]] [[f^​/δ,0,u0],[0,f^​/δ,v0],[0,0,1]],其中 f ^ \hat f f^​是焦距(以微米为单位),δ是像素大小(以微米为单位),并且(u 0,v0)是主中心。 f = f ^ / δ f = \hat f/δ f=f^​/δ 是像素表示的焦距。
  • 针对不同相机焦距导致的度量歧义(相同成像尺寸对应不同真实距离),提出两种变换方式,将异构数据映射至统一规范空间(焦距固定为 1000 像素):
  • 法向量标注稀缺解决方案:联合深度 - 法向量优化模块,利用深度标注的规模优势,通过 循环精修块(ConvGRU) 实现深度与法向量的迭代协同优化,法向量学习来源包括:
    • 少量真实法向量标注;
    • 深度 - 法向量一致性约束:通过深度反投影的 3D 点云计算伪法向量,约束预测法向量的几何合理性;
    • 特征级知识蒸馏:将深度编码器的强表征能力迁移至法向量分支。
  • 损失函数设计
    • 深度损失: 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−n​Ld−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 中均匀采样。
  • 模型可适配鱼眼镜头、运动模糊、低光照等极端图像,在野生 Flickr 图像上的尺寸测量误差 < 0.3m,显著优于 ZoeDepth 等主流方法。
变换方式训练阶段操作推理阶段操作核心作用
CSTM-label ω d = f c / f \omega_d=f^c/f ωd=fc/f缩放真实深度标签,图像不变 1 / ω d 1/\omega_d 1/ωd还原为原相机度量深度直接消除深度标签的焦距歧义
CSTM-image ω r = f c / f \omega_r=f^c/f ωr=fc/f缩放图像 / 光心,同步缩放深度标签 1 / ω r 1/\omega_r 1/ωr将深度 resize 至原图尺寸模拟规范相机成像效果,对齐输入分布

Ambiguity Issues in Metric Depth Estimation

  • 图5示出了使用不同相机在不同距离处捕获的照片的实例。仅基于视觉检查,人们可能错误地推断最后两个图像源自可比较的位置并且由同一相机捕获。然而,由于焦距不同,这些图像确实是从不同的位置捕获的。因此,摄像机内参数的准确知识对于从单个图像进行度量估计变得至关重要;最近的方法,如MiDaS 和LeReS ,通过将度量估计与直接监督解耦来减轻这种度量模糊性,而是优先学习仿射不变深度。图6(A)描绘了针孔透视投影,其中位于距离da处的物体A被投影到A′。遵循相似性原则,显然:
    • d a = S ^ [ f ^ S ^ ] = S ^ ⋅ α , ( 1 ) d_a =\hat S[\frac{\hat f}{\hat S}]=\hat S · α, (1) da​=S^[S^f^​​]=S^⋅α,(1)
    • 其中,S和S ′分别是真实的尺寸和成像尺寸。符号·表示变量以物理度量表示(例如,毫米)。为了从单个图像确定da,必须访问焦距,对象的成像尺寸和真实世界的对象尺寸。从单个图像估计焦距具有挑战性并且固有地不适定。尽管已经探索了许多方法,实现令人满意的精度仍然是难以实现的。
    • 图5 -用不同相机在不同距离拍摄的椅子照片。前两张照片是在相同距离但用不同相机拍摄的,而最后一张是在更近的距离用与第一张相同的相机拍摄的。
  • 因此,我们通过假设训练/测试图像的焦距已知来简化场景。相比之下,神经网络更容易理解图像的大小。为了获得真实世界的对象大小,神经网络需要理解语义场景布局和对象,神经网络擅长于此。我们定义 α = 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​=21​f2​ 。由于第二个相机的像素尺寸较小,因此像素表示图像的分辨率为 S 1 ′ = 1 2 S 2 ′ S '_1 =\frac 1 2 S'_2 S1′​=21​S2′​ ,尽管两者具有相同的投影成像尺寸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​ 处,成像尺寸对于两个相机保持一致。神经网络努力仅基于视觉线索来区分不同的监督标签。为了解决这个问题,我们提出了一个规范的相机变换方法,以减少监督要求和图像表示之间的冲突。
  • 与深度不同,表面法线没有任何度量模糊问题。在图8中,我们用不同尺度的两个深度图来说明这个概念,表示为D1和D2,分别具有不同的度量d1和d2,其中d1 < d2。在将深度向上投影到3D点云之后,玩偶处于不同的深度d1和d2。然而,对应于某个像素A′ ∈ I的表面法线n1和n2保持相同。
    • 图6 -针孔照相机模型。(A)位于距离da处的物体A投影到图像平面上。(B)使用两个照相机捕获汽车的图像。左侧的像素尺寸较大,虽然投影的图像尺寸相同,但像素表示的图像(分辨率)不同。
    • 图7 -两个焦距不同的相机在不同距离的示意图。当 f 1 = 2 f 2 f_1 = 2f_2 f1​=2f2​ 和 d 1 = 2 d 2 d_1 = 2d_2 d1​=2d2​ 时,A被投影到两个具有相同成像尺寸的图像平面(即A ′ 1 = A ′ 2)。
    • 图8 -法线的度量不可知属性。使用不同的预测度量d1和d2,图像上的像素A '将分别反向投影到3D点A1和A2。A1处的表面法线n1和A2处的表面法线n2保持不变。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Canonical Camera Transformation

  • 基本概念需要建立一个规范的相机空间( ( 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​=ωd​D∗ 。原始相机模型经历到f c,u0,v0的转换。在推理中,预测深度(Dc)存在于规范空间中,并且需要去规范变换来恢复度量信息,表示为 D = 1 ω d D c D =\frac 1{ω_d} D_c D=ωd​1​Dc​ 。值得注意的是,输入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,ωr​u0​,ωr​v0​ 。在推理中,去正则化变换涉及将预测值转换到其原始维度而不进行缩放,表示为 D = T ( D c , 1 ω r ) D = T(D_c,\frac1{ω_r}) D=T(Dc​,ωr​1​)。虽然在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,如果可以话。
在这里插入图片描述

Jointly optimizing depth and normal

  • 我们建议以端到端的方式联合优化度量深度和表面法线。这种优化主要旨在利用深度数据集中可用的大量注释知识来改善法线估计,特别是在深度数据集包含比正常数据集明显更多的注释的户外场景中。在我们的实验中,我们从社区中收集了9488K张带有深度注释的图像,分布在14个室外数据集中,而室外正常标记的图像不到20K,如表5所示。
  • 为了促进深度和法线之间的知识流,我们使用递归细化块实现了基于学习的优化,如图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^c0​N^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)
  • 更具体地,递归块F包括ConvGRU子块和两个投影头。首先,ConvGRU子块将所有变量作为输入来更新隐藏特征Ht。随后,两个分支投影头Gd和Gn分别估计更新Ht和Ht。因此,等式2的更全面的表示可以写为:
    • 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)
    • 其中Hd是保证深度非负的ReLU函数,Hn表示归一化,以确保所有像素的n = 1。在一般公式中,图10中的端到端网络可以重写为:
    • 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) θmin​L(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)法线N的可用性采用两个不同的损失函数。如图9所示,当提供GT法线时,我们利用任意不确定性感知损失(Ln(·))来监督预测N。或者,在没有GT法线的情况下,我们提出一致性损失Ld-n(D,N)来对齐预测的深度和法线。
  • 这种损失是基于使用最小二乘法从预测深度生成的伪法线映射与预测法线本身之间的相似性计算的。与以前的方法不同,这种损失作为一种自我监督机制,不需要深度或正常的 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=wd​Ld​(Dc​,Dc∗​)+wn​Ln​(N,N∗)+wd−n​Ld−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 作为衡量损失项目的权重。

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个零样本基准进行了评估,包括NYUv 2,KITTI ,ScanNet ,NuScenes ,iBIMS-1 和DIODE 根据先前的研究,我们使用诸如绝对相对误差(AbsRel)、阈值下的准确度(AbsRel)、阈值下的准确度(AbsRel)和阈值下的准确度(AbsRel)等指标。( δ i < 1.2 5 i , i = 1 , 2 , 3 δ_i <1.25 ^i,i = 1,2,3 δi​<1.25i,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个零样本数据集(即NYUv 2、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 -NYUv 2和KITTI度量深度基准的定量比较。过拟合基准的方法用灰色标记,而鲁棒深度估计方法用蓝色标记。“ZS”表示零样本测试,“FT”表示该方法在基准上进一步微调。在所有零样本测试(ZS)结果中,我们的方法表现最好,甚至优于过拟合方法。进一步的微调(FT)帮助我们的方法超越所有已知的方法,根据所有指标的平均排名进行排名。最好的结果以粗体显示,第二好的结果以下划线显示。
    • 表2 -NYUv 2、ibims-1和ScanNet法线基准上表面法线的定量比较。“ZS”表示零样本测试,“FT”在目标数据集上执行后期微调。仅在NYU上训练的方法用灰色突出显示。最好的结果用粗体显示,第二个最好的结果用下划线表示。我们的方法在所有基准中排名第一。
  • 重建和SLAM的评估细节。a)为了评估我们的度量3D重建质量,我们从NYUv 2中随机抽取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方法,我们分别使用其NYUv 2和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行)
    • 图11 -iBims、DIODE、NYU、Eth 3d、Nuscenes和自行收集的无人机数据集的度量深度和表面法线的定性比较。(‘Ours Depth’ / ‘Ours Normal’),groundtruth标签(“GT深度”/“GT法线”)以及其他度量深度(“ZoeDepth”)和表面法线方法(“Bae等人”和“OmniData”)的结果。
    • 图12 -度量深度和表面法线的定性比较。我们展示了我们预测的可视化结果(‘Ours Depth’ / ‘Ours Normal’)以及其他度量深度(‘ZoeDepth’ )和表面法线方法(‘Bae et al’ 和’OmniData’ )的结果。
在这里插入图片描述
在这里插入图片描述

Applications Based on Our Method

  • 我们将CSTM图像模型应用于各种任务。
  • 3D场景重建。为了展示我们的方法恢复真实世界度量3D的能力,我们首先对9个看不见的NYUv 2场景进行定量比较。我们预测每帧度量深度,并将其与提供的相机姿势融合,结果详见表6。我们将我们的方法与几种方法进行比较:该视频一致性深度预测方法(RCVD ),无监督视频深度估计(SC-DepthV 2 ),3D场景形状恢复(LeReS ),仿射不变深度估计(DPT )和多视图立体重建(DPSNet ,SimpleRecon )。除了多视图方法和我们的方法,所有其他方法都需要将尺度与每个帧的 GT 深度对齐。虽然我们的方法不是专门为视频或多视图重建设计的,它展示了有前途的帧一致性和更准确的3D场景重建在这些零-图13中的定性比较表明,我们的重建显示出相当少的噪声和更少的离群值。
    • 图13 -多视角零镜头场景的重建。我们对几个NYUv 2场景进行了采样,用于3D重建比较。由于我们的方法可以预测准确的度量深度,因此所有帧的预测都直接融合用于重建。相比之下,LeReS 的深度达到未知的尺度和偏移,导致明显的失真。对于MVS方法,DPSNet 在低纹理背景上失败,而SimpleRecon 在没有足够观测的情况下扭曲区域。
  • 密集SLAM映射。单目SLAM是一个关键的机器人应用程序,它使用单个视频输入来创建轨迹和密集的3D地图。然而,由于有限的光度和几何约束,现有的方法在大场景中与尺度漂移作斗争,并且无法恢复准确的度量信息。我们的鲁棒度量深度估计用作SLAM系统的强深度先验。
    • 表6 -LeReS 、DPT 、RCVD 、SC-DepthV 2 和两种基于学习的MVS方法的3D场景重建的定量比较(DPSNet ,SimpleRecon )在9个看不见的NYUv 2场景上。除了MVS方法和我们的方法,其他方法必须将每个帧的比例与 GT 深度对齐。因此,我们重建的3D场景达到了最佳效果。
  • 为了证明这一点,我们将我们的度量深度输入到最先进的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中标记为红色),实际尺寸显示为蓝色。结果表明,我们测量的尺寸与地面真实值非常接近。
    • 图14 -野外场景的度量衡。我们收集了几张Flickr照片,这些照片是由不同的相机拍摄的。通过照片的元数据,我们重建了3D度量形状并测量了结构的尺寸。红色和蓝色标记分别是我们的尺寸和地面真实尺寸。
  • 野外单目重建。为了进一步可视化我们恢复的度量深度的重建质量,我们从互联网上随机收集图像并恢复其度量3D和法线。由于没有提供焦距,根据重构的形状和法线映射选择合适的焦距,重构的点云用其对应的法线着色(不同的视图在图15中由红色和橙子阵列标记)。
    • 图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”),性能也会下降。联合优化模块的效率分析在补充材料中给出。
    • 图16-联合深度-法线优化的效果。我们比较了几个室外示例中通过不同策略学习的法线映射。只学习法线"没有深度"会导致平坦的表面,因为大多数法线标签位于平面上。此外,深度和法线之间的"不一致性"会使预测变得粗糙。
  • 选择中间法线表示。在优化过程中,未归一化的法向量被用作中间表示。在这里,我们探索了三个额外的表示:(1)在so3中定义的表示参考方向上的3D旋转的向量。我们通过lietorch 实现了这个向量。(2)方位角和极角。(3)2D齐次向量所研究的表示都是可加的,并且都可以满射地转换为曲面法线。在这个实验中,我们只改变表示,并比较性能。令人惊讶的是,根据表12,朴素的未归一化的常态表现最好。我们假设这种最简单的表示降低了学习难度。
    • 表12 -中间法线表示的更多选择。
  • 最佳优化步骤为了确定各种ViT模型的最佳优化步骤数,我们改变不同的步骤来优化深度和法线。表13说明了增加迭代步骤数并不能始终如一地改善结果。此外,理想的步骤数可能会因模型大小而异,较大的模型通常会受益于更广泛的优化。
    • 表13 -为不同的ViT模型选择最佳联合优化步长。我们发现最佳步长随模型大小而变化。所有模型都按照表11中的设置进行训练。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

CONCLUSION

  • 本文介绍了一系列用于零样本单目深度和表面法线估计的几何基础模型,并针对深度和表面法线估计中存在的问题提出了解决方案。为了解决由焦距变化引起的深度模糊问题,提出了一种新的正则相机空间变换方法。此外,为了克服室外法线数据标签的不足,我们引入了利用来自大规模深度注释的知识的联合深度法线优化框架。
  • 我们的方法能够整合超过10,000台相机捕获的数百万个数据样本,以训练统一的度量深度和表面法线模型。为了增强模型的鲁棒性,我们策划了一个包含超过1600万个样本的数据集进行训练。零样本评估证明了我们方法的有效性和鲁棒性。对于下游应用,我们的模型能够从单个视图重建度量3D,实现随机收集的互联网图像的度量和大规模场景的密集映射。凭借其精确性,通用性和多功能性,Metric3D v2模型可作为单目感知的几何基础模型。
  • Metric3D v2 的规范相机空间变换模块(CSTM)如何解决不同相机的度量深度歧义?
    • 不同相机的焦距差异会导致 “相同成像尺寸对应不同真实距离” 的度量歧义(如焦距 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),在零样本度量深度任务上的核心优势体现在泛化性度量精度的双重突破:
    • 度量精度:零样本场景下,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 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​):默认取图像中心,若有标定值则用标定结果。
  • CSTM-label(深度标签变换),直接对深度标签进行缩放,输入图像保持不变,是 Metric3D v2 中性能更优的方案。
    • 训练阶段实现,计算缩放比例:根据原相机像素级焦距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。
  • CSTM-image(输入图像变换),对输入图像进行缩放,模拟规范相机的成像效果,深度标签仅做尺寸对齐不做数值缩放。
    • 训练阶段实现,计算缩放比例:图像缩放因子 ω 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) (ωr​u0​,ωr​v0​),规范空间内参为 [ f c , ω r u 0 , ω r v 0 ] [f^c, \omega_r u_0, \omega_r v_0] [fc,ωr​u0​,ωr​v0​];标签适配:将真实深度标签 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/ωr​resize 至原图像尺寸,得到最终深度D(无数值缩放,仅恢复空间分辨率)。
    • CSTM-image 通过图像 resize 对齐成像视角,CSTM-label 通过标签缩放对齐深度数值,前者更适合对图像分辨率敏感的编码器(如 ViT),后者更适合卷积类编码器。
  • 焦距的优先级:实验验证 像素级焦距f 是核心参数,传感器尺寸 / 像素尺寸不影响度量深度(因 α = f ^ / ( δ ⋅ S ′ ) \alpha=\hat{f}/(\delta \cdot S') α=f^​/(δ⋅S′)中 δ \delta δ与 S ′ S' S′会抵消),因此 CSTM 仅需对齐焦距;
  • 规范焦距的选择:消融实验表明 f c = 1000 f^c=1000 fc=1000像素时平均 AbsRel 最低(19.82%),若 f c = 500 f^c=500 fc=500或 1500,AbsRel 会升至 21.19%/22.07%;
  • 与 CamConvs 的区别:CamConvs 将相机内参编码为 4 通道特征输入网络,依赖网络隐式学习相机模型;CSTM 通过显式变换将异构数据统一至规范空间,无需编码内参,数据兼容性更强(支持上万种相机);
  • 代码层面的实现
    • 在配置文件中定义规范焦距canonical_focal=1000
    • 训练时通过transforms.Resizedepth_scale实现图像 / 标签变换;
    • 推理时通过inverse_depth_scaletransforms.Resize完成反变换,输出物理深度。
  • 尽管 v2 在功能上大幅扩展,但两者共享相同的核心设计理念,这也是 Metric3D 系列的标志性特征:
    • 解决 “度量歧义” 是实现真实尺度输出的核心,两者均将 “不同相机焦距导致的度量歧义” 作为核心痛点,通过规范相机空间变换(CSTM) 统一异构数据:核心逻辑:将所有相机的输入(图像 / 深度标签)映射至 “规范相机空间”(固定焦距 f c = 1000 f^c=1000 fc=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 v1Metric3D 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):损失权重,调优:根据与其他损失函数的平衡调整。权重过大可能导致梯度爆炸,过小则失去约束作用
  • GRUSequenceLoss,
    • 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轴的位移。
    • 外参通常表示为齐次变换矩阵:
  • 需要标定的场景
    • 三维重建:立体视觉、SLAM、SfM 等需要精确的空间测量
    • 机器人视觉:视觉导航、物体抓取、路径规划需要准确的深度信息
    • 增强现实 (AR):虚拟物体与现实场景的精确对齐
    • 工业检测:尺寸测量、缺陷检测等需要毫米级精度
    • 自动驾驶:障碍物距离测算、车道线检测
[R|t] = [r11 r12 r13 tx] [r21 r22 r23 ty] [r31 r32 r33 tz] [0 0 0 1] (4x4 齐次形式) 
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},...]}
数据准备
  • 训练数据需同时包含图像数据相机内参(焦距 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配置项调用。
  • 标注工具: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-label1. 计算缩放比 ω 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=ωdD;3. 图像保持不变canonical_focal=1000直接对齐深度标签的度量尺度,消除焦距歧义
CSTM-image1. 计算缩放比 ω 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(无数值缩放)img_size=(512,960)(ConvNet)img_size=(616,1064)(ViT)模拟规范相机的成像效果,对齐输入图像分布
前向传递
  • 前向传递全流程(以 v2 ViT-L 为例,源码RAFTDepthNormalDPTDecoder5.py
    • 输入层:接收 RGB 图像I和相机内参f,执行CSTM-image 变换得到规范空间图像 I c I_c Ic​;
    • 编码器:ViT-L 提取多尺度特征 H 0 H_0 H0​(DINOv2 预训练权重保留通用几何特征);
    • 初始预测层:DPT 解码器将 H 0 H_0 H0​解码为低分辨率初始深度 D ^ c 0 \hat{D}_c^0 D^c0​和未归一化法向量 N ^ u 0 \hat{N}_u^0 N^u0​;
    • 循环精修层(v2 核心创新):
      • 输入: D ^ c t \hat{D}_c^t D^ct​、 N ^ u t \hat{N}_u^t N^ut​、隐藏特征 H t H^t Ht;
      • 操作:3 个 ConvGRU 子块逐层细化特征(从 1/14→1/7→1/4 尺度),投影头输出深度 / 法向量增量 Δ D ^ c t + 1 \Delta\hat{D}_c^{t+1} ΔD^ct+1​、 Δ N ^ u t + 1 \Delta\hat{N}_u^{t+1} ΔN^ut+1​;
      • 迭代: t = 4 t=4 t=4步后得到优化的 D ^ c 4 \hat{D}_c^4 D^c4​、 N ^ u 4 \hat{N}_u^4 N^u4​,上采样至原图尺寸;
    • 反 CSTM 变换:
      • 深度:将 D ^ c 4 \hat{D}_c^4 D^c4​按 1 / ω r 1/\omega_r 1/ωr​resize,输出真实物理深度D(单位米);
      • 法向量:对 N ^ u 4 \hat{N}_u^4 N^u4​做 L2 归一化,输出单位法向量N(无数值变换,因法向量无度量歧义);
    • 输出层:同时输出D和N,支持单任务 / 多任务推理。
  • 损失函数的设计严格匹配 “度量深度准确 + 法向量通用” 的目标,v1 聚焦深度,v2 新增法向量协同损失,源码对应mono/losses目录。
    • 源码中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(一致性损失权重),核心逻辑是优先保证法向量的泛化性,再强化深度 - 法向量协同
  • 核心指标及计算方式
  • 可视化的核心是验证深度的度量准确性和法向量的几何合理性,源码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 = 1 N ∑ D − D ∗ D ∗ \text{AbsRel}=\frac{1}{N}\sum\frac{D-D^*}{D^*} AbsRel=N1DDD越小越好,反映整体深度偏差
δ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(DD,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(DD)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(logDlogD)2N21((logDlogD))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} Ldn(深度 - 法向量一致性损失,v2 新增)约束预测法向量与深度生成的伪法向量的相似度利用深度标注弥补法向量标注不足无标注场景的法向量泛化
模块核心作用源码关键参数参数影响
规范焦距 f c f^c fc定义统一度量空间canonical_focal=1000 f c = 1000 f^c=1000 fc=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°

Read more

区块链|WEB3:时间长河共识算法(Time River Consensus Algorithm)

区块链|WEB3:时间长河共识算法(Time River Consensus Algorithm)

区块链|WEB3:时间长河共识算法(Time River Consensus Algorithm)(原命名为时间证明公式算法(TCC)) 本共识算法以「时间长河」为核心设计理念,通过时间节点服务器按固定最小时间间隔打包区块,构建不可篡改的历史数据链,兼顾区块链的金融属性与信用属性,所有优化机制形成完整闭环,无核心逻辑漏洞,具体总结如下: 一、核心机制(闭环无漏洞) 1. 节点准入与初始化:候选时间节点需先完成全链质押,首个时间节点由所有质押节点投票选举产生,彻底杜绝系统指定带来的初始中心化问题,实现去中心化初始化。 2. 时间节点推导与防作弊:下一任时间节点通过共同随机数算法从上一区块推导(输入参数:上一区块哈希、时间戳、固定数据顺序),推导规则公开可验证;时间节点需对数据顺序签名,任一节点发现作弊(篡改签名、操控随机数等),该节点立即失去时间节点资格并扣除全部质押。质押的核心目的是防止节点为持续获取区块打包奖励作弊,作弊损失远大于收益,确保共同随机数推导百分百不可作弊。 3. 节点容错机制:每个时间节点均配置一组合规质押节点构成的左侧顺邻节点队列(队列长度可随全网节点规

By Ne0inhk
《机器人实践开发①:Foxglove 开发环境完整搭建指南(含常见坑位) 》

《机器人实践开发①:Foxglove 开发环境完整搭建指南(含常见坑位) 》

导语: 在机器人项目中,调试工具往往比算法本身更耗时间。Foxglove 作为新一代机器人可视化平台,提供了强大的话题订阅、视频显示、3D 展示和日志分析能力。本篇从零开始,手把手带你完成 Foxglove 的环境搭建,包含依赖安装、连接配置以及常见踩坑点。 《机器人实践开发》系列文章索引 《机器人实践开发①:Foxglove 开发环境完整搭建指南(含常见坑位)》 《机器人实践开发②:Foxglove 嵌入式移植 + CMake 集成》 《机器人实践开发③:Foxglove可视化机器人的眼睛-视频》 《机器人实践开发④:Foxglove可视化机器人的耳朵-声音》 《机器人实践开发⑤:Foxglove可视化机器人的3D显示》 《机器人实践开发⑥:Foxglove可视化机器人传感器数据》 《机器人实践开发⑦:Foxglove可视化机器人的日志显示》 《机器人实践开发⑧:Foxglove可视化机器人的地图显示》 《机器人实践开发⑨:Foxglove可视化机器人的MyBag 数据回放》 foxglove 官网 Foxglove 是一个专为机器人团队打造的平台,用于收

By Ne0inhk
Clawdbot(Moltbot) 飞书机器人配置,体验老板和助手沟通的感觉

Clawdbot(Moltbot) 飞书机器人配置,体验老板和助手沟通的感觉

一、背景说明 Clawdbot可以24小时待命(参考配置方式:Clawdbot(Moltbot) windows安装配置教程(含各种问题处理)),但是网页端使用起来比毕竟没那么方便,然而clawdbot支持多种渠道交互,这也正是这个AI助理的魅力所在,想想飞书发送一个消息,一个任务就完成了,这不就是老板指挥我做事的方式吗,来赶紧体验一波老板的感觉~ 二、飞书机器人创建 飞书开放平台构建机器人:https://open.feishu.cn/ 记录App ID 和 App Secret,一会要用: 三、自动安装插件 项目地址:https://github.com/m1heng/Clawdbot-feishu 这时候,就可以发挥clawdbot的能力了,直接让clawdbot给我安装: 我要安装飞书机器人,帮我按照这个命令安装:Clawdbot plugins install @m1heng-clawd/feishu 到这个过程有点慢,安装了好一会没反应,我开始问了: 又过了好一会没反应,

By Ne0inhk
埃斯顿机器人快速入门

埃斯顿机器人快速入门

本文章适合有一定基础的人学习如:abb,发那科,库卡等这些主流的机器人,一些通用的知识点就不在这里过多描述,只讲一下不同的地方以便快速入门接手项目。 有一定基础!!! 有一定基础!!! 有一定基础!!! 目录 * 1.仿真软件Editor * 1.1下载Editor2.6.05 * 1.2官方最新版下载 * 2.界面介绍 * 3.IO配置 * 4.程序变量与语法 * 5.程序下载 1.仿真软件Editor 1.1下载Editor2.6.05 这个软件是埃斯顿机器人的仿真软件,适合在没有机器人前期准备程序及配置的时候使用。入门学习也非常合适,毕竟也不是一直有都有机会拿实机去练习的。 仿真软件可以选择在官网下载,但是在官网下载有点问题一开始我都找不到,使用我这里先给一个截止到这一篇文章发布前最新版的连接。点🐔下载!!! 1.2官方最新版下载 进入埃斯顿官网点击资料下载见面,你会发现哎嘿!你要搜索相关的手册或者安装包的名称才能下载,输错了就找不到了! 可以跟着我输入关键字:Editor 2.

By Ne0inhk