摘要
单目深度估计是一项基本的计算机视觉任务。从单幅图像中恢复3D深度在几何上是不适定的,需要对场景的理解,因此深度学习的兴起带来了突破也就不足为奇了。单目深度估计器的显著进步反映了模型容量的增长,从相对适度的卷积神经网络到大型Transformer架构。尽管如此,单目深度估计器在处理具有不熟悉内容和布局的图像时往往会遇到困难,因为它们对视觉世界的认知受到训练期间所见数据的限制,并且在对新领域进行零样本泛化时面临挑战。这促使我们去探索最近的生成式扩散模型中捕获的广泛先验知识是否能够实现更好、更具泛化性的深度估计。我们引入了Marigold,这是一种基于仿射不变单目深度估计的方法,源自Stable Diffusion并保留了其丰富的先验知识。该估计器可以在单个GPU上使用仅合成训练数据在几天内进行微调。它在广泛的数据集上提供了最先进的性能,在特定情况下性能提升超过20%。项目页面:https://marigoldmonodepth.github.io。
1. 引言
单目深度估计旨在将一幅摄影图像转换为深度图,即为每个像素回归一个距离值。每当需要3D场景结构且没有直接的距离或立体测量可用时,就会出现该任务。显然,将3D世界投影到2D图像的逆过程是一个几何不适定问题,只能借助先验知识来解决,例如典型的物体形状和大小、可能的场景布局、遮挡模式等。换句话说,单目深度隐含地需要对场景的理解,深度学习的出现带来性能飞跃并非偶然。如今,深度估计被视为神经图像到图像的转换,并使用成对、对齐的RGB图像和深度图的集合以监督(或半监督)的方式进行学习。这种类型的早期方法仅限于由其训练数据定义的狭窄领域,通常是室内[47]或驾驶[18]场景。最近,人们一直在寻求训练通用的深度估计器,这些估计器既可以现成地用于广泛的场景,也可以通过少量数据微调以适应特定的应用场景。这些模型通常遵循MiDAS[35]首次采用的策略来实现通用性,即使用从许多不同的RGB - D数据集(分别为领域)中采样的数据训练一个高容量模型。最新的发展包括从卷积编解码器网络[35]转向越来越大且强大的视觉Transformer[36],以及在越来越多的数据上进行训练并使用额外的代理任务[13]来积累更多关于视觉世界的知识,从而生成更好的深度图。重要的是,深度的视觉线索不仅取决于场景内容,还取决于(通常未知的)相机内参[58]。对于一般的野外深度估计,通常更倾向于估计仿射不变深度(即,深度值最多相差一个全局偏移和缩放),这也可以在没有已知大小的物体作为“比例尺”的情况下确定。
我们工作背后的直觉如下:现代图像扩散模型已经在互联网规模的图像集合上进行了训练,专门用于在广泛的领域中生成高质量图像[3, 38, 41]。如果单目深度估计的基石确实是对视觉世界的全面、百科全书式的表示,那么应该可以从预训练的图像扩散模型中导出一个广泛适用的深度估计器。在本文中,我们着手探索这种选择并开发Marigold,这是一种基于Stable Diffusion[38]的潜在扩散模型(LDM),以及一种微调协议,以使模型适应深度估计。解锁预训练扩散模型潜力的关键是保持其潜在空间不变。我们发现可以通过仅修改和微调去噪U - Net来有效地做到这一点。将Stable Diffusion转换为Marigold仅需要合成RGB - D数据(在我们的案例中,是Hypersim[37]和Virtual KITTI[7]数据集)以及在单个消费级图形卡上几天的GPU时间。借助自然图像的潜在扩散先验,Marigold表现出出色的零样本泛化能力:在从未见过真实深度图的情况下,它在几个真实数据集上达到了最先进的性能。总之,我们的贡献如下:
- 一种简单且资源高效的微调协议,用于将预训练的LDM图像生成器转换为图像条件深度估计器;
- Marigold,一种最先进的、多功能的单目深度估计模块,在各种自然图像上提供出色的性能。
2. 相关工作
2.1. 单目深度估计
在技术层面上,单目深度估计是一个密集的、结构化的回归任务。Eigen等人的开创性工作[14]引入了一个多尺度网络,并表明结果可以转换为使用单个传感器记录的数据集的度量深度。后续的改进来自各个方面,包括序数回归[15]、平面引导图[24]、神经条件随机场[59]、视觉Transformer[1, 27, 54]、分段平面先验[34]、一阶变分约束[28]和变分自编码器[32]。一些作者将深度估计视为一个组合回归 - 分类任务,使用各种分箱策略(如AdaBins[4]或BinsFormer[26])来离散化深度范围。最近一个值得注意的趋势是训练生成模型,特别是扩散模型[20, 49]用于单目深度估计[12, 22, 43, 44]。最近,一些作品[19, 58]重新审视了绝对深度估计,通过明确输入相机内参作为额外输入。
“野外”深度估计是指在广泛的(可能不熟悉的)设置中成功的方法,这是一项特别具有挑战性的任务。它通过构建大型多样的深度数据集和设计算法来处理这种多样性来解决。DIW[8]可能是最早引入不受控制的数据集并预测其相对(序数)深度的工作。OASIS[9]引入了相对深度和法线以更好地在场景间泛化。然而,相对深度预测(深度排序)对于许多下游任务的用途有限,这导致一些作者考虑仿射不变深度。在这种设置下,深度估计最多相差一个未知的(全局)偏移和缩放。它在序数和度量情况之间提供了一种可行的折衷方案:一方面,它可以处理由不熟悉的物体组成的一般场景;另一方面,不同物体或场景部分之间的深度差异相对于彼此仍然具有几何意义。MegaDepth[25]和DiverseDepth[56]利用大型互联网照片集训练可以适应未见过的数据的模型,而MiDaS[35]通过在多个数据集的混合上进行训练来实现通用性。从卷积神经网络到视觉Transformer的步骤进一步提高了性能,如DPT[36]和Omnidata[13]所证明的。LeReS[57]提出了一个两阶段框架,首先预测仿射不变深度,然后通过估计偏移和焦距将其升级为度量深度。HDN[60]引入了多尺度深度归一化以进一步提高预测细节和平滑度。虽然这使得深度估计器能够处理使用不同已知相机捕获的图像,但它不包括真正的野外设置,其中测试图像的相机内参是未知的。我们的方法解决仿射不变深度估计问题,但不专注于编译广泛的、带注释的训练数据集。相反,我们利用图像LDM中的更广泛的图像先验知识并应用微调。
2.2. 扩散模型
去噪扩散概率模型(DDPMs)[20]已成为一类强大的生成模型。它们学习反转一个扩散过程,该过程通过高斯噪声逐渐降低图像质量,以便通过将反向过程应用于随机噪声来从数据分布中抽取样本。这个想法被扩展到DDIMs[49],它为扩散过程提供了一个非马尔可夫捷径。条件扩散模型是DDPMs[20, 49]的扩展,它摄入额外信息,然后输出以此为条件,类似于cGAN[29]和cVAE[48]。条件可以采取各种形式,包括文本[41]、其他图像[40]或语义图[61]。
在基于文本的图像生成领域,Rombach等人[38]在大规模图像和文本数据集LAION - 5B[46]上训练了一个扩散模型,并展示了以前无法达到的高质量图像合成。他们方法的基石是潜在扩散模型(LDM),其中去噪过程在一个高效的潜在空间中运行,大大降低了学习映射的复杂性。这样的模型将互联网规模的图像集提炼为模型权重,从而开发出丰富的场景理解先验知识,我们将其用于单目深度估计。
2.3. 用于单目深度估计的扩散模型
一些方法尝试使用DDPMs进行度量深度估计。DDP方法[22]提出了一种架构,用于对图像进行编码但解码深度图,并在KITTI数据集上获得了最先进的结果。DiffusionDepth[12]在潜在空间中进行扩散,条件是使用SwinTransformer提取的图像特征。DepthGen[44]将多任务扩散模型扩展到度量深度预测,包括处理有噪声的真实值。其后续版本DDVM[43]强调在合成和真实数据上进行预训练以增强深度估计。最后,VPD[64]使用预训练的Stable Diffusion模型作为图像特征提取器,并带有额外的文本输入。
我们的方法超越了这些方法,这些方法虽然表现良好,但仅在其特定的训练领域内有效。我们探索预训练LDM在不同的真实世界设置中进行单图像深度估计的潜力。
2.4. 基础模型
视觉基础模型(VFMs)是在互联网规模数据上训练的大型神经网络。极端的缩放导致高级视觉理解的出现,使得模型可以直接使用[52],或者通过最小的努力微调以适应广泛的下游任务[6]。提示调整方法[2, 55, 63]可以通过设计合适的提示有效地使VFMs适应专用场景。特征适应方法[5, 16, 33, 62, 64, 65]可以进一步使VFMs转向不同的任务。例如,VPD[64]展示了从预训练的文本到图像模型中提取特征用于(特定领域的)深度估计的潜力。同时,I - LoRA[11]展示了预训练图像生成器的多模态能力。直接调整允许更灵活的适应,不仅适用于像DreamBooth[39]这样的少样本定制场景,也适用于对象检测,如3DiffTection[53]。
这里提出的Marigold深度估计器可以被解释为这种直接调整的一个实例,其中StableDiffusion充当基础模型。仅使用74k合成深度样本,我们就在真实图像数据集上获得了最先进的深度估计,并且在野外具有令人信服的性能(见图1)。
3. 方法
3.1. 生成式公式
我们将单目深度估计表述为条件去噪扩散生成任务,并训练Marigold对深度 d ∈ R W × H d\in\mathbb{R}^{W\times H} d∈RW×H的条件分布 D ( d ∣ x ) D(d|x) D(d∣x)进行建模,其中条件 x ∈ R W × H × 3 x\in\mathbb{R}^{W\times H\times3} x∈RW×H×3是一幅RGB图像。
在正向过程中,从条件分布中的 d 0 : = d d_0 := d d0:=d开始,在级别 t ∈ { 1 , … , T } t\in\{1,\ldots,T\} t∈{1,…,T}逐渐添加高斯噪声以获得噪声样本 d t d_t dt,如 d t = α ‾ t d 0 + 1 − α ‾ t ϵ d_t=\sqrt{\overline{\alpha}_t}d_0+\sqrt{1-\overline{\alpha}_t}\epsilon dt=αtd0+1−αtϵ,其中 ϵ ∼ N ( 0 , I ) \epsilon\sim N(0,I) ϵ∼N(0,I), α ‾ t : = ∏ s = 1 t 1 − β s \overline{\alpha}_t:=\prod_{s = 1}^{t}1-\beta_s αt:=∏s=1t1−βs,并且 { β 1 , … , β T } \{\beta_1,\ldots,\beta_T\} {β1,…,βT}是具有T步的过程的方差调度。在反向过程中,用学习到的参数 θ \theta θ参数化的条件去噪模型 ϵ θ ( ⋅ ) \epsilon_{\theta}(\cdot) ϵθ(⋅)逐渐从 d t d_t dt中去除噪声以获得 d t − 1 d_{t - 1} dt−1。
在训练时,通过从训练集中获取数据对 ( x , d ) (x,d) (x,d),在随机时间步 t t t用采样噪声 ϵ \epsilon ϵ对 d d d进行噪声处理,计算噪声估计 ϵ ^ = ϵ θ ( d t , x , t ) \hat{\epsilon}=\epsilon_{\theta}(d_t,x,t) ϵ^=ϵθ(dt,x,t),并最小化去噪扩散目标函数之一来更新参数 θ \theta θ。规范标准噪声目标 L \mathcal{L} L如下给出[20]: L = E d 0 , ϵ ∼ N ( 0 , I ) , t ∼ U ( T ) ∥ ϵ − ϵ ^ ∥ 2 2 \mathcal{L}=\mathbb{E}_{d_0,\epsilon\sim N(0,I),t\sim U(T)}\|\epsilon-\hat{\epsilon}\|_2^2 L=Ed0,ϵ∼N(0,I),t∼U(T)∥ϵ−ϵ^∥22。在推理时,从正态分布变量 d T d_T dT开始重建 d : = d 0 d := d_0 d:=d0,通过迭代应用学习到的去噪器 ϵ θ ( d t , x , t ) \epsilon_{\theta}(d_t,x,t) ϵθ(dt,x,t)。
与直接在数据上工作的扩散模型不同,潜在扩散模型在低维潜在空间中执行扩散步骤,提供计算效率并适用于高分辨率图像生成[38]。潜在空间在独立于去噪器训练的变分自编码器(VAE)的瓶颈处构建,以实现潜在空间压缩并与数据空间进行感知对齐。为了将我们的公式转换到潜在空间,对于给定的深度图 d d d,相应的潜在码由编码器 E E E给出: z ( d ) = E ( d ) z^{(d)} = E(d) z(d)=E(d)。给定深度潜在码,可以用解码器 D D D恢复深度图 d ^ = D ( z ( d ) ) \hat{d}=D(z^{(d)}) d^=D(z(d))。条件图像 x x x也自然地转换到潜在空间为 z ( x ) = E ( x ) z^{(x)} = E(x) z(x)=E(x)。去噪器此后在潜在空间中进行训练: ϵ θ ( z t ( d ) , z ( x ) , t ) \epsilon_{\theta}(z_t^{(d)},z^{(x)},t) ϵθ(zt(d),z(x),t)。调整后的推理过程涉及一个额外的步骤 - 解码器 D D D从估计的干净潜在码 z 0 ( d ) z_0^{(d)} z0(d)重建数据 d ^ \hat{d} d^: d ^ = D ( z 0 ( d ) ) \hat{d}=D(z_0^{(d)}) d^=D(z0(d))。
3.2. 网络架构
我们的主要目标之一是训练效率,因为扩散模型通常训练起来极其资源密集。因此,我们基于预训练的文本到图像LDM(Stable Diffusion v2[38])构建我们的模型,该模型已经从LAION - 5B[46]中学到了非常好的图像先验知识。通过对模型组件进行最小的更改,我们将其转换为图像条件深度估计器。图2包含了所提出的微调过程的概述。
深度编码器和解码器。我们采用冻结的VAE将图像及其相应的深度图编码到潜在空间,以训练我们的条件去噪器。鉴于为3通道(RGB)输入设计的编码器接收单通道深度图,我们将深度图复制三次以模拟RGB图像。此时,深度数据的数据范围在实现仿射不变性方面起着重要作用。我们在3.3节中讨论我们的归一化方法。我们验证了在不对VAE或潜在空间结构进行任何修改的情况下,可以从编码的潜在码中以可忽略的误差重建深度图,即 d ≈ D ( E ( d ) ) d\approx D(E(d)) d≈D(E(d))。在推理时,深度潜在码在扩散结束时解码一次,并取三个通道的平均值作为预测的深度图。
调整后的去噪U - Net。为了实现潜在去噪器 ϵ θ ( z t ( d ) , z ( x ) , t ) \epsilon_{\theta}(z_t^{(d)},z^{(x)},t) ϵθ(zt(d),z(x),t)对输入图像 x x x的条件化,我们将图像和深度潜在码沿特征维度拼接成单个输入 z t = c a t ( z t ( d ) , z ( x ) ) z_t = cat(z_t^{(d)},z^{(x)}) zt=cat(zt(d),z(x))。潜在去噪器的输入通道数因此翻倍以适应扩展的输入 z t z_t zt。为了防止第一层激活幅度的膨胀并尽可能忠实地保持预训练结构,我们复制输入层的权重张量并将其值除以二。
3.3. 微调协议
仿射不变深度归一化。对于真实深度图 d d d,我们实施线性归一化,使得深度主要落在值范围 [ − 1 , 1 ] [-1,1] [−1,1]内,以匹配VAE的设计输入值范围。这种归一化有两个目的。首先,这是使用原始Stable Diffusion VAE的惯例。其次,它强制执行独立于数据统计的规范仿射不变深度表示 - 任何场景都必须由具有极端深度值的近平面和远平面界定。归一化通过计算仿射变换来实现,如 d ~ = ( d − d 2 d 98 − d 2 − 0.5 ) × 2 \tilde{d}=(\frac{d - d_2}{d_{98}-d_2}-0.5)\times2 d~=(d98−d2d−d2−0.5)×2,其中 d 2 d_2 d2和 d 98 d_{98} d98对应于单个深度图的2%和98%百分位数。这种归一化允许Marigold专注于纯仿射不变深度估计。
在合成数据上训练。真实深度数据集由于捕获设备的物理限制和传感器的物理特性而存在缺失深度值的问题。具体来说,相机之间的差异和反射表面使LiDAR激光束偏转是真实值噪声和缺失像素的不可避免的来源[21, 51]。与先前使用多样化真实数据集来实现泛化的工作[13, 35]不同,我们仅使用合成深度数据集进行训练。与深度归一化的原理一样,这个决定有两个客观原因。首先,合成深度本质上是密集和完整的,这意味着每个像素都有有效的真实深度值,允许我们将此类数据输入到不能处理具有无效像素的数据的VAE中。其次,合成深度是最干净的深度形式,这由渲染管道保证。如果我们关于从文本到图像LDM微调可推广深度估计的可能性的假设是正确的,那么合成深度提供了最干净的示例集,并在短微调协议期间减少了梯度更新中的噪声。因此,剩下的问题是合成数据和真实数据之间的足够多样性或域差距,这有时会限制泛化能力。正如我们的实验所示,我们对合成数据集的选择导致了令人印象深刻的零样本迁移。
退火多分辨率噪声。先前的作品已经探索了对原始DDPM公式的偏离,例如非高斯噪声[30]或非马尔可夫调度捷径[49]。我们提出的设置和上述微调协议允许在微调阶段对噪声调度进行更改。我们确定了多分辨率噪声[23]和退火调度的组合,以更快地收敛并显著提高性能超过标准DDPM公式。多分辨率噪声由叠加几个不同尺度的随机高斯噪声图像组成,所有图像都上采样到U - Net输入分辨率。所提出的退火调度在 t = T t = T t=T时的多分辨率噪声和 t = 0 t = 0 t=0时的标准高斯噪声之间进行插值。
3.4. 推理
潜在扩散去噪。整体推理流程如图3所示。我们将输入图像编码到潜在空间,用标准高斯噪声初始化深度潜在码,并使用与微调时相同的调度逐步去噪。我们通过经验发现,用标准高斯噪声初始化比用多分辨率噪声初始化能得到更好的结果,尽管模型是在多分辨率噪声上进行训练的。我们遵循DDIM的方法[49],使用重新间隔的步骤进行非马尔可夫采样以加速推理。最终的深度图使用VAE解码器从潜在码中解码,并通过平均通道进行后处理。
测试时集成。推理流程的随机性导致根据 z T ( d ) z_T^{(d)} zT(d)中的初始化噪声而产生不同的预测。利用这一点,我们提出以下测试时集成方案,能够组合对同一输入的多次推理过程。对于每个输入样本,我们可以运行推理N次。为了聚合这些仿射不变深度预测 { d ^ 1 , … , d ^ N } \{\hat{d}_1,\ldots,\hat{d}_N\} {d^1,…,d^N},我们以迭代方式联合估计相对于某个规范尺度和范围的相应尺度 s ^ i \hat{s}_i s^i和偏移 t ^ i \hat{t}_i t^i。所提出的目标最小化每对缩放和偏移预测 ( d ^ i ′ , d ^ j ′ ) (\hat{d}_i',\hat{d}_j') (d^i′,d^j′)之间的距离,其中 d ^ ′ = d ^ × s ^ + t ^ \hat{d}' = \hat{d}\times\hat{s}+\hat{t} d^′=d^×s^+t^。在每个优化步骤中,我们通过取像素级中位数计算合并深度图 m m m: m ( x , y ) = m e d i a n ( d ^ 1 ′ ( x , y ) , … , d ^ N ′ ( x , y ) ) m(x,y) = median(\hat{d}_1'(x,y),\ldots,\hat{d}_N'(x,y)) m(x,y)=median(d^1′(x,y),…,d^N′(x,y))。添加一个额外的正则化项 R = ∣ m i n ( m ) ∣ + ∣ 1 − m a x ( m ) ∣ R = |min(m)| + |1 - max(m)| R=∣min(m)∣+∣1−max(m)∣,以防止收敛到平凡解并强制 m m m的单位尺度。因此,目标函数可以写成如下形式:
[
\min_{\substack{s_1,\ldots,s_N \ t_1,\ldots,t_N}}\left(\sqrt{\frac{1}{b}\sum_{i = 1}^{N - 1}\sum_{j = i + 1}{N}|\hat{d}_i’-\hat{d}_j’|_22}+\lambda\mathcal{R}\right)
]
其中二项式系数 b = ( N 2 ) b = \binom{N}{2} b=(2N)表示从N个图像中选择图像对的可能组合数。在空间对齐的迭代优化之后,合并深度 m m m被视为我们的集成预测。请注意,此集成步骤不需要真实值来对齐独立预测。该方案通过相应地选择N,可以在计算效率和预测质量之间实现灵活的权衡。
4. 实验
4.1. 实现
我们使用PyTorch实现Marigold,并使用Stable Diffusion v2[38]作为我们的骨干网络,遵循原始预训练设置并使用v - 目标[42]。我们禁用文本条件,并执行3.2节中概述的步骤。在训练期间,我们应用DDPM噪声调度[20],扩散步骤为1000。在推理时,我们应用DDIM调度[49],仅采样50步。对于最终预测,我们聚合来自10次不同起始噪声的推理运行的结果。训练我们的方法需要18K次迭代,批量大小为32。为了适应一个GPU,我们累积梯度16步。我们使用Adam优化器,学习率为 3 × 1 0 − 5 3\times10^{-5} 3×10−5。此外,我们对训练数据应用随机水平翻转增强。在单个Nvidia RTX 4090 GPU卡上训练我们的方法收敛大约需要2.5天。
4.2. 评估
训练数据集。我们在两个涵盖室内和室外场景的合成数据集上训练Marigold。Hypersim[37]是一个具有461个室内场景的逼真合成数据集。我们使用官方分割,其中包含来自365个场景的约54K个样本用于训练。不完整的样本被过滤掉。RGB图像和深度图被调整大小为480×640。此外,我们将相对于焦点的原始距离转换为相对于焦平面的常规深度值。第二个数据集,Virtual KITTI[7]是一个合成街景数据集,具有5个不同条件(如天气或相机视角)下的场景。其中四个场景总共包含约20K个样本用于训练。我们将图像裁剪为KITTI基准分辨率[17],并将远平面设置为80米。
评估数据集。我们在训练期间未见过的5个真实数据集上评估Marigold。NYUv2[31]和ScanNet[10]都是使用RGB - D Kinect传感器捕获的室内场景数据集。对于NYUv2,我们使用指定的测试分割,总共包含654幅图像。对于ScanNet数据集,我们从312个官方验证场景中随机采样800幅图像用于测试。KITTI[17]是一个街景数据集,具有由LiDAR传感器捕获的稀疏度量深度。我们使用由652幅图像组成的Eigen测试分割[14]。ETH3D[45]和DIODE[50]是两个高分辨率数据集,都具有从LiDAR传感器测量导出的深度图。对于ETH3D,我们纳入所有454个具有可用真实深度图的样本。对于DIODE,我们使用整个验证分割,其中包括325个室内样本和446个室外样本。
评估协议。遵循仿射不变深度评估协议[35],我们首先使用最小二乘拟合将估计的合并预测 m m m与真实深度 d d d对齐。这一步为我们提供了与真实深度具有相同单位的绝对对齐深度图 a = m × s + t a = m\times s + t a=m×s+t。接下来,我们应用两个广泛认可的指标[35, 36, 57, 58]来评估深度估计的质量。第一个是绝对平均相对误差(AbsRel),计算为: 1 M ∑ i = 1 M ∣ a i − d i ∣ / d i \frac{1}{M}\sum_{i = 1}^{M}|a_i - d_i|/d_i M1∑i=1M∣ai−di∣/di,其中 M M M是像素总数。第二个指标, δ 1 \delta1 δ1准确率,测量满足 m a x ( a i / d i , d i / a i ) < 1.25 max(a_i/d_i,d_i/a_i)<1.25 max(ai/di,di/ai)<1.25的像素比例。
与其他方法的比较。我们将Marigold与六个基线方法进行比较,每个方法都声称具有零样本泛化能力。DiverseDepth[56]、LeReS[57]和HDN[60]估计仿射不变深度图,而MiDaS[35]、DPT[36]和Omnidata[13]生成仿射不变视差。如表1所示,Marigold在大多数情况下优于先前的方法,并获得最高的总体排名。尽管仅在合成深度数据集上进行训练,但该模型可以很好地泛化到广泛的真实场景。这种基于扩散的图像生成模型向深度估计的成功适应证实了我们最初的假设,即对视觉世界的全面表示是单目深度估计的基石。这也表明我们的微调协议成功地使Stable Diffusion适应了此任务,而没有忘记这些视觉先验知识。为了进行视觉评估,我们在图4中给出了定性比较。此外,在图5中,我们提供了重建表面法线的3D可视化。Marigold不仅正确捕获了场景布局,例如图5中第一个示例中墙壁和家具之间的空间关系,而且还捕获了细粒度细节,如图4中的箭头所示。此外,平坦表面(尤其是墙壁)的重建明显更好(见图4)。此外,我们的方法有效地建模了常见形状及其布局,再次符合我们对生成先验的期望。
4.3. 消融研究
选择两个零样本验证集进行消融研究 - NYUv2[31]的官方训练分割,由785个样本组成,以及从KITTI Eigen[14]训练分割中随机选择的800个图像子集。有关额外的消融和讨论,请参阅补充部分。
训练噪声。我们研究训练阶段三种类型噪声的影响。如表2所示,使用多分辨率噪声训练显著提高了深度预测准确性,相比于使用标准高斯噪声。此外,多分辨率噪声的逐渐退火带来了进一步的改进。我们还注意到,使用多分辨率噪声训练在推理时对于不同的初始噪声会导致更一致的预测,并且退火进一步增强了这种一致性。
训练数据域。为了更好地理解用于我们微调协议的合成数据集的影响,我们对逼真的街景Virtual KITTI[7]和更多样化、更高质量的室内数据集Hypersim[37]进行消融实验。结果如表3所示。当在单个合成数据集上进行微调时,预训练的LDM已经可以在一定程度上适应单目深度估计,而更多样化和逼真的数据在室内和室外场景中都能带来更好的性能。有趣的是,添加来自不同域的额外训练数据不仅提高了在新域上的性能,而且在原始域上也带来了改进。
测试时集成。我们通过聚合不同数量的预测来测试所提出的测试时集成方案的有效性。如图6所示,Marigold的单个预测已经产生了相当好的结果。集成10个预测在NYUv2上使绝对相对误差降低了约8%,集成20个预测带来了约9.5%的改进。已经观察到一种系统效应,即随着预测数量的增加,性能不断提高,而超过10个预测时边际改进逐渐减小。
去噪步骤数量。我们评估由DDIM调度[49]驱动的重新间隔推理去噪步骤的效果。结果如图7所示。尽管使用1000个DDPM步骤进行训练,但在推理时选择50个步骤足以产生准确的结果。正如预期的那样,当使用更多的去噪步骤时,我们获得更好的结果。我们观察到,给定更多去噪步骤时边际回报的拐点取决于数据集,但总是在10步以下。这意味着可以进一步将去噪步骤减少到10步甚至更少,以在保持可比性能的同时提高效率。有趣的是,这个阈值小于基于扩散的图像生成器通常所需的阈值[38, 49],即50步。
5. 结论
我们提出了Marigold,一种用于Stable Diffusion的微调协议以及一种用于最先进的仿射不变深度估计的模型。我们的结果证实了对视觉场景的详细先验理解对于深度估计的重要性,我们从预训练的文本到图像扩散模型中获取了这种先验知识。未来克服当前限制的研究方向包括提高推理效率、确保尽管模型具有生成性质但相似输入产生一致输出,以及更好地处理远处场景部分。