Marigold:Repurposing Diffusion-Based Image Generators for Monocular Depth Estimation

目录

一、概述

二、相关工作

1、单目深度估计

2、扩散模型

3、单目深度估计的扩散模型

4、基础模型

三、Method

四、实验


一、概述

        Marigold是一个扩散模型和通过微调手段的单目深度估计方法,可以利用预先训练好的Stable Diffusion中的视觉知识,来实现更好更通用的深度估计,实现仿射不变性。由于LDM的优势,Marigold也表现出出色的zero-shot泛化能力,未知真实深度图情况下,在几个真实数据集中获得SOTA性能。

        但是复杂场景的话Depth Anything V2更好。

二、相关工作

1、单目深度估计

        单目深度估计一般被认为是一种密集的结构化回归性任务。早期的方法局限于特定场景,室内或驾驶场景。为了保证更广泛的适用性,提出更为通用的深度估计模型,可以在特定场景中微调或者直接使用。这些通用模型一般采用MiDAS提出的策略,从RGB-D数据集中采样训练数据,获得更广泛的视觉知识。

        绝对深度估计,近期一些工作提出引入相机内参作为额外输入,来实现绝对深度估计。

        近期的CNN到Transformer的发展提高了性能,如DPT和Omnidata,LeReS提出两阶段框架,先预测仿射不变深度,在通过计算shift和focal上升到metric depth。HDN提出多尺度深度归一提高了预测细节和平滑性。

        Marigold方法提出解决仿射不变深度估计,但并不关注某一个训练集,而是通过LDM寻求一个广泛的图像先验,并根据不同场景进行微调。

2、扩散模型

        在text2image领域,有一篇万引论文High-Resolution Image Synthesis with Latent Diffusion Models提到从一个已有LDM上基于LAION-5B训练一个扩散模型,貌似是基于已有扩散模型做其他领域生成的鼻祖。

        所以Marigold也使用已有LDM来作单目深度估计。

3、单目深度估计的扩散模型

        在此之前,VPD已经提出额外引入文本输入来实现深度扩散。DepthGen提出利用扩散模型实现度量深度预测。

        相比于以往的单目深度估计的扩散模型,Marigold可以广泛的用于任何场景,并且可以在特定场景下进行微调。

4、基础模型

        这里提到Stable Diffusion作为基础模型,可以在74k个合成深度样本的训练下,学习到真实图像数据集的深度估计。

三、Method

        微调原理(下图):输入图像x和GT深度d,应用StableDiffusion v2的Encoder编码到潜在空间z(x),z(d),并将z(d)不断加噪,并拼接在z(x)上输入到StableDiffusion的Diffusion U-Net,之后输出预测噪音,并与初始加噪计算L2范数进行监督。

Overview of the Marigold fine-tuning protocol

 

        推理过程:直接将高斯噪声z_t^{(d)}concat到给定图像的潜在空间z(x)上并经过U-Net网络预测\hat{\varepsilon },并且在原高斯噪声z_t^{(d)}上不断去噪得到z_0^{(d)},利用stablediffusion v2的解码器来还原预测深度\hat{d}

        其中在微调过程中,U-Net权重可以变化,而encoder和decoder全程frozen,也就是说不需要微调编码过程,只需要优化中间的去噪过程。

        另外注意到输入图像是3维的,中间的特征都是RGB3条通道,而输出的深度图是1维的,所以论文将每一个深度分别来预测一个深度 \hat{d},最后取三条通道的平均值。

        另外在高斯噪声上做了一些改进,加噪过程是一个给定的多分辨率噪声以及一个退火时间表的组合,并不是一味地添加类似的噪声,而是由叠加几个不同尺度的随机高斯噪声图像组成的,这种组合效果相比ddpm效果收敛更快。

仿射不变性怎么体现的?

        在初始GT深度图d,做了一个线性归一化,使得深度主要落在[-1,1]之间,一方面VAE被规定为取值[-1,1],满足与深度图对齐,另一方面这个归一化本质是一个仿射变换,使得深度图受限于近平面和远平面,而不依赖于原始数据的统计性,也保证了深度值不受原场景比例和相机参数影响,可以让Marigold专注于深度结构,不受离散的特定深度值的影响。

         其中d_2,d_{98}是各个深度图2%和98%的值,这个工作实现通过仿射变化来对深度进行归一化。

为什么使用合成数据集?

        因为数据依赖于GT深度,而真实数据集下的GT深度是经过采集的,采集就会有误差,合成数据集可以保证深度密集且完整,不存在误差,比较干净。另外VAE不能输入无效像素的深度,因为在真实数据采集中不可避免存在无效的深度。所以通过这种方式可以有效且完整的利用合成数据集来实现去噪网络的微调。

四、实验

        不同单目深度估计方法生成深度图的对比。

        通过深度图来warp图像实现重建工作,可以看到Marigold生成的表面法线较为平滑,结构更加详细。 

参考项目地址:Marigold: Repurposing Diffusion-Based Image Generators for Monocular Depth Estimation

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值