DepthLab: From Partial to Complete 论文解读

ops/2025/1/6 7:16:26/

目录

一、概述

二、相关工作

1、深度补全

2、单目深度估计

3、已知部分深度的下游任务

三、DepthLab

1、总论

2、编码器和解码器

3、Estimation U-Net

4、Reference U-Net

四、训练操作

1、深度归一化

2、掩模策略

五、数据集

1、训练数据集

2、评估数据集

六、训练

1、定量分析

2、定性分析

 3、3DGS修复

4、Text-to-3D

5、DUSt3R重建 

6、传感器深度补全


一、概述

        该论文介绍了一个基于RGB图像的深度修复模型,但是这个模型可以用于各种场景下的下游任务,包括3D场景填充,文本到场景的生成,稀疏视图重建,LiDAR深度估计。DepthLab模型在填充缺失值中保持了对缺失区域(mask)的弹性,并且保持了与条件已知深度的尺度一致性。

        具体来说DepthLab引入了双分支的深度扩散框架,利用RGB图像作为条件输入,将已知深度和mask区域输入到深度估计U-Net中,并且训练中对已知深度进行随机尺度归一化,来缓解已知区域的非全局极值引起的正则化溢出。

        下图下游任务(三维高斯图像补全,激光雷达深度生成,使用DUSt3R进行稀疏视图重建,文本到场景生成

二、相关工作

1、深度补全

        深度补全是利用深度传感器得到的稀疏的深度信息,通过与RGB图像结合,生成更完整、更细致的深度图。但是现有方法都是在固定的数据集训练和评估的,限制了泛化能力。

2、单目深度估计

        单目深度估计由于缺乏交叉区域,所以一般通过判别方法和生成方法处理,判别方法通常预测深度为度量深度或者相对深度(depthpro,depthcrafter)。

        近年来使用扩散模型进行生成深度的方法,如DDP,DepthGen,Marigold,Geowizard,利用扩散模型生成高质量的深度图,但采样缓慢。

        Flow matching的提出,减轻了这些限制,提供更快的采样。

        该论文解决估计深度与已知数据的几何不一致问题。

3、已知部分深度的下游任务

        对于以往场景生成问题,从单个图像或文本输入,先估计图像深度,然后改变相机视点,计算warped深度,并warp到RGB图上。而我们的方法考虑warped深度已知,将现有过程表示为已知尺度下的深度图生成。

三、DepthLab

1、总论

        具体训练流程:首先对于GT深度采用随机mask创建masked depth,之后经过插值,得到interpolated depth,与GT depth都进行随机的尺度归一化,这两者与mask,输入到encoder中并进行加噪丢入估计U-Net来获得预测噪声。参考U-Net以RGB图像作为输入,并利用逐层特征融合让估计U-Net获得更细粒度的视觉引导,保证在大型/复杂的mask区域内实现高质量的深度预测。

        推理过程:首先对于一个深度图,不准确的深度区域mask掉,(比如DUSt3R的非重叠部分,传感器获得稀疏深度点外的部分),并且已知一张RGB图,最终得到一张预测完整的深度图。

         解释一个DUSt3R下游任务的问题:DUSt3R两张图重叠的部分深度估计是绝对的,非重叠部分估计的效果不好,所以他要用depthlab mask掉非重叠部分,并细化这个非重叠部分,这个过程自然将估计深度与现有的几何(绝对深度)对齐,并且消除已知和目标区域间的不一致性。这样一看moge那种单目的只能是相对深度。

        两个分支都使用Marigold作为基础模型,从SD2中细化而来,这种方式提高了训练效率,因为Marigold的模型已经训练出了RGB2depth。

2、编码器和解码器

        使用预训练(Stable Diffusion训练的)的VAE来实现映射到潜在空间(应该是Marigold的),三通道分别计算深度后取平均值,但是相比于Marigold估计相对深度,并用最大平方优化来获得度量深度,DepthLab直接通过已有绝对深度估计其他区域的度量深度。

3、Estimation U-Net

        Estimation U-Net的输入由三个部分组成噪声深度潜在空间z_t^{(d)},掩膜深度潜在空间z^{(d')},编码掩膜潜在空间m',并将他们concat在一起。这三个部分都是4通道,这是由VAE编码得到的,(h,w)相比于原始输入维度向下采样了8倍。

        为了准确保留mask信息,而不是传统inpainting的方式,直接对mask进行encode,保留稀疏且细粒度的信息。

4、Reference U-Net

        提到Infusion模型将单个参考图像输入到编码器中,并且将其于上述encoder的3个输出concat在一起,并降采样mask的输出(4channel->1channel),得到13通道,但是会丢失区域的深度信息难以生成清晰的深度边缘,尤其在修复大面积或使用复杂的参考图像中。

        而我们的方法,对reference使用另一个Reference U-Net,提取特征图。

        首先从Reference U-Net和Estimation U-Net中分别得到特征图f_1,f_2,并且将这些特征图沿着宽度连接,得到f \in \mathbb{R}^{c \times h \times 2w},之后对这个特征f,应用自注意力操作,并提取前半部分作为输出。另外由于这两个U-Net都是从Marigold上预训练的,具有相同的架构和初始权值,所以Estimation U-Net可以在同一特征空间,选择性地从Reference U-Net中学习相关特征。(存疑,查一下代码

四、训练操作

1、深度归一化

        由于目标是保持已知区域的深度信息,并预测未知的未绘制区域深度,避免几何不一致,这样最终输出为绝对深度。

        但推理过程中,未绘制区域深度未知,无法确定整个深度最小最大深度值,所以在训练中对GT depth和interpolated depth均进行随机尺度归一化。训练过程中我们已知mask部分深度,GT深度,那么就可以将他们归一化到[-1,1]范围内,但这一步只是深度归一化。

        随机怎么体现的呢?由于这个训练时将每一张图都归一化,但是这个只是局部最小值和最大值,我们不能知道推理数据集信息,也就不能保证全局最小值和最大值,所以会导致VAE解码情况上的溢出。所以规范化过程中引入了[0.2,1.0]的随机压缩因子\beta,保证防止溢出。

         另外由于进U-Net的时候,进行了归一化,所以在U-Net网络最后一层也要进行反归一化,恢复绝对深度尺度。

2、掩模策略

        为了最大限度扩大下游任务的覆盖面积采用了各种掩模策略,最初尝试用笔画、圆、正方形这些随机组合来进行掩模。之后对于传感器捕捉的稀疏深度数据,利用随机点掩模法,其中只有0.1-2%的点是已知的,最后是对象级的inpaint,用ground-sam进行标注,(这个就是framework那个图,后续是为了场景生成)。

        通过多种方法测试,分析出随机掩模组合能够增加鲁棒性。

五、数据集

1、训练数据集

        训练数据集,使用Hyperism室内合成数据集和Virtual KITTI室外场景数据集。

        Hyperism,图片真实数据集,包含461个室内场景,我们选取365个场景,过滤不完整样本后,共计54k训练样本。

        Virtual KITTI,合成街道场景数据集包含五个不同条件的场景,如天气和摄像机视角,我们使用四个场景,大约20k训练样本。

2、评估数据集

        评估数据集,使用五个zero-shot的基准评估性能,包括NYUv2,KITTI,ETH3D,ScaneNet,DIODE。

六、训练

1、定量分析

        可以看到,我们的方法,相较于DepthAnything v2方法在包含6300w个样本的数据集上训练不同,我们的方法仅依赖于7400个合成数据。并且依赖于预训练的扩散模型。

        其中下面评估指标中,AbsRel是绝对相对误差,\delta^1是阈值为1.25内的精确度accuracy。

2、定性分析

        其中黑色区域作为已知深度,白色区域为预测深度,可以看到我们的方法展现出更好的几何一致性。

 3、3DGS修复

        采用Gaussian Grouping用于分割和去除部分高斯分布,SDXL Inpaiting模型应用于参考图像上并渲染得到渲染RGB图像,并对渲染得到的RGB图像根据参考图像的深度进行调整。

4、Text-to-3D

        将单目深度估计投影到三维场景,并创建初始点云,然后旋转相机,调整视角,得到warped图像和warped深度,此时的RGB图像恢复就可以用DepthLab做。

3deb4f.png" width="615" />

5、DUSt3R重建 

        这个就是优化DUSt3R不能保证非重叠以外的部分,所以用DepthLab继续生成的深度图。而此时得到的深度图,再次用到InstantSplat上,进行NVS工作,降低了新视图的模糊效果。

6、传感器深度补全

        不同于传统补全方法,这些方法在固定的数据集上训练和测试,导致泛化能力有限,而我们的方法在无需复杂设计情况下,表现出更好地泛化能力,仅需1w步微调则达到几乎SOTA水平。

参考论文:https://arxiv.org/abs/2412.18153 


http://www.ppmy.cn/ops/147437.html

相关文章

六十二:HTTP/3: QUIC 协议格式

随着互联网技术的不断进步,网络协议的革新成为提升传输效率和用户体验的关键。HTTP/3 是超文本传输协议的最新版本,其核心基于 QUIC 协议,带来了诸多革命性的变化。在本文中,我们将深入探讨 HTTP/3 的 QUIC 协议格式及其重要性。 …

react axios 优化示例

使用 axios 是 React 项目中非常常见的 HTTP 请求库。为了提升 axios 在 React 中的性能、可维护性和用户体验,我们可以从 代码组织、请求优化 和 用户体验优化 多个角度进行详细的优化。 一、安装与基础配置 安装 axios npm install axios创建 Axios 实例 为了更好地管理…

微信小程序中的 storage(本地存储)和内存是两个完全不同的存储区域

这是一个非常关键且容易混淆的概念 既然 this.globalData.appId appId 是将 appId 存储在内存中,为什么微信小程序中的 wx.getStorage 和 wx.setStorage(本地存储)中没有 appId,并且您提出了一个非常重要的疑问:stor…

【行空板K10】利用Nanomq的桥接转发能力实现接入任意的MQTT服务器

目录 引言 K10程序的编写 运行Nanomq 设置Nanomq的桥接到巴法云 结语 引言 行空板K10作为一块物联网开发板,内置了MQTT的支持,不过它的MQTT有限制,只支持阿里云、OneNet、EasyIoT和SIoT4种MQTT服务器。这对想使用其他MQTT服务器的用户来…

【剑指Offer刷题系列】树的子结构

目录 问题描述示例示例 1:示例 2:提示 思路解析核心思路:具体步骤:复杂度分析: 代码实现Python 实现 测试代码复杂度分析时间复杂度空间复杂度 问题描述 给定两棵二叉树 tree1 和 tree2,判断 tree2 是否是…

快速将索尼手机联系人导出为 HTML 文件

我想将 Sony Xperia 手机上的联系人导出到计算机上进行备份,并在需要时进行编辑。这可以做到吗?如何做到?作为助手我需要下载什么工具吗? 当您的 Android 手机上存储了如此多的重要联系人,而您又不想丢失它们时&#…

Spring源码分析之事件机制——观察者模式(三)

目录 自定义事件 事件监听器 事件发布者(服务层) 使用示例controller层 Spring源码分析之事件机制——观察者模式(一)-CSDN博客 Spring源码分析之事件机制——观察者模式(二)-CSDN博客 这两篇文章是这…

Java Web学生自习管理系统

一、项目背景与需求分析 随着网络技术的不断发展和学校规模的扩大,学生自习管理系统的需求日益增加。传统的自习管理方式存在效率低下、资源浪费等问题,因此,开发一个智能化的学生自习管理系统显得尤为重要。该系统旨在提高自习室的利用率和管…