DepthLab: From Partial to Complete 论文解读

目录

一、概述

二、相关工作

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做。

5、DUSt3R重建 

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

6、传感器深度补全

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/501559.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

直播预告丨社区年度交流会 《RTE 和 AI 融合生态洞察报告 2024》发布

新的一年开始,是时候再深度交流一次了!欢迎关注 1 月 4 日周六晚 社区年度交流会的 线上直播 。 这将是一群 实时多模态 AI 开发者 的聚会。 我们将一起探讨 Voice Agent 在 AI 陪伴助手、AI 硬件和 AI 企业服务等应用场景中的技术突破与产品创新。同时…

RP2K:一个面向细粒度图像的大规模零售商品数据集

这是一种用于细粒度图像分类的新的大规模零售产品数据集。与以往专注于相对较少产品的数据集不同,我们收集了2000多种不同零售产品的35万张图像,这些图像直接在真实的零售商店的货架上拍摄。我们的数据集旨在推进零售对象识别的研究,该研究具…

实战设计模式之建造者模式

概述 在实际项目中,我们有时会遇到需要创建复杂对象的情况。这些对象可能包含多个组件或属性,而且每个组件都有自己的配置选项。如果直接使用构造函数或前面介绍的工厂方法来创建这样的对象,可能会导致以下两个严重问题。 1、参数过多。当一个…

我的博客年度之旅:感恩、成长与展望

目录 感恩有你 技能满点 新年新征程 嘿,各位技术大佬、数码潮咖还有屏幕前超爱学习的小伙伴们!当新年的钟声即将敲响,我们站在时光的交汇点上,回首过往,满心感慨;展望未来,豪情满怀。过去的这…

聆听音乐 1.5.9 | 畅听全网音乐,支持无损音质下载

聆听音乐手机版是面向广大音乐爱好者的移动应用程序,用户可以随时随地通过手机享受丰富的音乐资源。它提供了多种魅力功能,让用户在手机上畅享更舒适的音乐体验,每位用户都能享受精彩纷呈的收听体验。此外,软件还支持无损音质音乐…

GRU-PFG:利用图神经网络从股票因子中提取股票间相关性

“MCI-GRU: Stock Prediction Model Based on Multi-Head Cross-Attention and Improved GRU” 论文地址:https://arxiv.org/pdf/2410.20679 摘要 金融市场因复杂性及大数据时代的来临,使得准确预测股票走势变得尤为重要。传统的时序分析模型&#xff0…

Leetcode 第426场周赛分析总结

3370. 仅含置位位的最小整数 AC代码 class Solution { public:int smallestNumber(int n) {int x 1;while (x - 1 < n) {x << 1;}return x - 1;} };分析总结 也可以先直接获取n的长度&#xff0c;然后计算得到&#xff0c;这样时间复杂度由O(logn)优化为O(1) 在C…

在 SQL 中,区分 聚合列 和 非聚合列(nonaggregated column)

文章目录 1. 什么是聚合列&#xff1f;2. 什么是非聚合列&#xff1f;3. 在 GROUP BY 查询中的非聚合列问题示例解决方案 4. 为什么 only_full_group_by 要求非聚合列出现在 GROUP BY 中&#xff1f;5. 如何判断一个列是聚合列还是非聚合列&#xff1f;6. 总结 在 SQL 中&#…

C++ —— 智能指针

内存泄漏 什么是内存泄漏&#xff0c;内存泄漏的危害 什么是内存泄漏&#xff1a;内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内 存泄漏并不是指内存在物理上的消失&#xff0c;而是应用程序分配某段内存后&#xff0c;因为设计错误&#xff0c;失去…

Ethernet 系列(12)-- 基础学习::SOME/IP

目录 1. SOME/IP简介&#xff1a; 1.1 什么是SOME/IP&#xff1a; 1.2 什么时候使用SOME/IP&#xff1a; 2. SOME/IP的特点&#xff1a; 2.1 序列化&#xff1a; 2.2 远程过程调用&#xff08;RPC&#xff09;: 2.3 服务发现&#xff1a; 2.4 发布/订阅&#xff1a; 2.5 UDP消息…

UE5.3 虚幻引擎 Windows插件开发打包(带源码插件打包、无源码插件打包)

0 引言 随着项目体量的增大&#xff0c;所有代码功能都放一起很难管理。所以有什么办法可以将大模块划分成一个个小模块吗。当然有&#xff0c;因为虚幻引擎本身就遇到过这个问题&#xff0c;他的解决办法就是使用插件的形式开发。 例如&#xff0c;一个团队开发了文件I/O模块插…

自学记录鸿蒙API 13:实现多目标识别Object Detection

起步&#xff1a;什么叫多目标识别&#xff1f; 无论是生活中的动物识别、智能相册中的场景分类&#xff0c;还是工业领域的检测任务&#xff0c;都能看到多目标识别的身影。这次&#xff0c;我决定通过学习HarmonyOS最新的Object Detection API&#xff08;API 13&#xff09…

光伏安装在屋顶:安全、环保还是潜在威胁?

随着环保意识的增强和科技的进步&#xff0c;光伏发电作为一种可再生能源技术&#xff0c;正逐渐走进千家万户。然而&#xff0c;随着光伏板的普及&#xff0c;关于其在屋顶安装是否对人体有害的疑问也随之而来。 一、光伏发电的基本原理 光伏发电是利用半导体界面的光生伏特效…

被催更了,2025元旦源码继续免费送

“时间从来不会停下&#xff0c;它只会匆匆流逝。抓住每一刻&#xff0c;我们才不会辜负自己。” 联系作者免费领&#x1f496;源&#x1f496;码。 三联支持&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;欢迎留言讨论 更多内容敬请期待。如有需要源码可以联系作者免…

MYsql--------ubantu中安装mysql

在Ubuntu平台上下载、启动和关闭MySQL的方法如下&#xff1a; 下载安装MySQL 更新软件包列表&#xff1a;打开终端&#xff0c;输入以下命令&#xff0c;确保软件包列表是最新的。sudo apt update安装MySQL服务器&#xff1a;执行以下命令安装MySQL服务器。在安装过程中&…

pygame飞机大战

飞机大战 1.main类2.配置类3.游戏主类4.游戏资源类5.资源下载6.游戏效果 1.main类 启动游戏。 from MainWindow import MainWindow if __name__ __main__:appMainWindow()app.run()2.配置类 该类主要存放游戏的各种设置参数。 #窗口尺寸 import random import pygame WIND…

Flutter中的网络请求图片存储为缓存,与定制删除本地缓存

Flutter中的网络请求图片存储为缓存&#xff0c;与定制删除本地缓存 1&#xff1a;封装请求图片函数 2&#xff1a;访问的图片都会转为本地缓存&#xff0c;当相同的请求url&#xff0c;会在本地调用图片 3&#xff1a;本地缓存管理【windows与andriod已经测试】【有页面】【有…

无线AP安装注意事项

现在的办公楼、酒店等项目中都设计含有网络无线覆盖这一项&#xff0c;在项目实施中&#xff0c;往往采用的是便捷并且后期便于网络无线设备管理的无线ap设备&#xff0c;作为前端无线信号的覆盖。在具体安装无线AP过程中&#xff0c;我们必须要注意以下几点才能保证项目实施完…

Golang的容器编排实践

Golang的容器编排实践 一、Golang中的容器编排概述 作为一种高效的编程语言&#xff0c;其在容器编排领域也有着广泛的运用。容器编排是指利用自动化工具对容器化的应用进行部署、管理和扩展的过程&#xff0c;典型的容器编排工具包括Docker Swarm、Kubernetes等。在Golang中&a…

计算机毕业设计Django+Tensorflow音乐推荐系统 音乐可视化 卷积神经网络CNN LSTM音乐情感分析 机器学习 深度学习 Flask

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…