目录
一、概述
二、相关工作
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的输入由三个部分组成噪声深度潜在空间,掩膜深度潜在空间,编码掩膜潜在空间,并将他们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中分别得到特征图,并且将这些特征图沿着宽度连接,得到,之后对这个特征,应用自注意力操作,并提取前半部分作为输出。另外由于这两个U-Net都是从Marigold上预训练的,具有相同的架构和初始权值,所以Estimation U-Net可以在同一特征空间,选择性地从Reference U-Net中学习相关特征。(存疑,查一下代码)
四、训练操作
1、深度归一化
由于目标是保持已知区域的深度信息,并预测未知的未绘制区域深度,避免几何不一致,这样最终输出为绝对深度。
但推理过程中,未绘制区域深度未知,无法确定整个深度最小最大深度值,所以在训练中对GT depth和interpolated depth均进行随机尺度归一化。训练过程中我们已知mask部分深度,GT深度,那么就可以将他们归一化到[-1,1]范围内,但这一步只是深度归一化。
随机怎么体现的呢?由于这个训练时将每一张图都归一化,但是这个只是局部最小值和最大值,我们不能知道推理数据集信息,也就不能保证全局最小值和最大值,所以会导致VAE解码情况上的溢出。所以规范化过程中引入了[0.2,1.0]的随机压缩因子,保证防止溢出。
另外由于进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是绝对相对误差,是阈值为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