100:ReconFusion: 3D Reconstruction with Diffusion Priors

简介

官网
在这里插入图片描述
少样本重建必然导致nerf失败,论文提出使用diffusion模型来解决这一问题。从上图不难看出,论文一步步提升视角数量,逐步与Zip-NeRF对比。

实现流程

在这里插入图片描述

Diffusion Model for Novel View Synthesis

给定一组输入图像 x o b s = { x i } i = 1 N x^{obs}=\{x_i\}^N_{i=1} xobs={xi}i=1N以及对应的相机位姿 π o b s = { π i } i = 1 N \pi^{obs}=\{\pi_i\}^N_{i=1} πobs={πi}i=1N,希望在目标相机位姿 π \pi π下,图片 x 在 新试图的分布 p ( x ∣ x o b s , π o b s , π ) p(x|x^{obs},\pi^{obs},\pi) p(xxobs,πobs,π)

这里采用的扩散模型是 LDM(High-Resolution Image Synthesis with Latent Diffusion Models)

LDM能够有效地模拟高分辨率图像。LDM使用预训练的变分自编码器(VAE) ϵ \epsilon ϵ 将输入图像编码为潜在表示。在这些潜在上进行扩散,其中去噪的U-Net ϵ θ \epsilon_\theta ϵθ将有噪声的潜在映射回干净的潜在。在推理过程中,使用该U-Net对纯高斯噪声进行迭代降噪,得到一个干净的潜在噪声。潜在表示通过VAE解码器D恢复为图像。

实现过程类似于Zero-1-to-3,将输入图像和相机位姿作为一个预训练文本到图像生成的LDM的附加条件。

文本到图像模型转换为位姿图像到图像模型需要使用附加的条件反射路径来增强U-Net体系结构。

为了修改预训练的架构,以便从多个姿态图像中合成新的视图,向U-Net注入了两个新的条件反射信号。

  • 对于输入的高级语义信息,使用CLIP嵌入每个输入图像(表示为 e o b s e^{obs} eobs),并通过交叉注意将该特征向量序列馈送到U-Net中。
  • 对于相对相机姿态和几何信息,使用PixelNeRF模型的 R ϕ R_\phi Rϕ来渲染具有与目标视点 π \pi π相同空间分辨率的特征图 f

f = R ϕ ( x o b s , π o b s , π ) f = R_\phi(x^{obs},\pi^{obs},\pi) f=Rϕ(xobs,πobs,π)

特征图 f 是一个空间对齐的条件信号,它隐式地编码了相对相机变换。

沿信道维度将 f噪声潜值 连接起来,并将其送入去噪UNet ϵ θ \epsilon_\theta ϵθ

这种特征映射调节策略类似于GeNVSSparseFusion中使用的策略,与直接嵌入相机外部和内部特征本身相比,可以更好地提供新的相机姿势的准确表示。

training

冻结预训练的编码器和解码器的权值,根据预训练的权值初始化U-Net参数θ,并利用简化的扩散损失对改进的视图合成结构进行了优化
在这里插入图片描述
t∈{1,…, T}为扩散时间步长,ε ~ N (0, I), z t = α t ε ( x ) + σ t ϵ z_t = α_t \varepsilon(x) + σ_t \epsilon zt=αtε(x)+σtϵ为该时间步长的噪声潜函数, e o b s e^{obs} eobs 为输入图像 x o b s x^{obs} xobs 的CLIP图像嵌入,f 为PixelNeRF R φ R_φ Rφ 渲染的特征映射。

优化具有光度损耗的PixelNeRF参数φ:
在这里插入图片描述

其中 c 是PixelNeRF模型的输出(与特征映射 f 具有相同的分辨率),x↓ 是下采样到 z t z_t zt 和 f 的空间分辨率的目标图像。这种损失鼓励 PixelNeRF重建RGB目标图像,这有助于避免扩散模型无法利用 PixelNeRF 输入的糟糕的局部最小值。

3D Reconstruction with Diffusion Priors

第一步的NeRF重建的光度损失
在这里插入图片描述

在每次迭代中,对随机视图进行采样,并从扩散模型中生成图像以生成目标图像。(通过从中间噪声水平开始采样过程来控制目标图像与当前渲染图像的接地程度。)
在这里插入图片描述

具体来说,从采样的新视点 π \pi π呈现图像 x ( ψ , π ) x(ψ, π) x(ψπ),并将其编码和扰动为噪声潜码为 t U [ t m i n , t m a x ] t ~ U [t_{min}, t_{max}] t U[tmin,tmax]的噪声潜码 z t z_t zt。然后,通过运行DDIM采样,在最小噪声潜码和 t 之间均匀间隔 k 个中间步骤,从潜在扩散模型生成一个样本,从而得到一个潜在样本 z 0 z_0 z0。这个潜信号被解码以产生一个目标图像 x ^ π = D ( z 0 ) \hat{x}_\pi=D(z_0) x^π=D(z0):
在这里插入图片描述
其中,$L_p¥为感知距离LPIPS, w(t)为依赖于噪声水平的加权函数。这种扩散损失最类似于SparseFusion,也类似于InstructNeRF2NeRF的迭代数据集更新策略,只不过在每次迭代时都采样一个新的图像。从经验上发现,这种方法比分数蒸馏取样更有效

当使用扩散先验时,我们不想在物体内部或墙后放置新的视图,视图的放置通常取决于场景内容和捕获类型。与RegNeRF等先前的工作一样,希望根据已知的输入姿势和捕获模式定义一个分布,该分布将包含一组合理的新相机姿势,大致与期望观察重建场景的位置相匹配。

通过确定场景中的基本姿势集或路径来实现这一点,可以随机采样和扰动以定义新视图的完整姿势分布。在LLFFDTU等前向捕获或mip-NeRF 360等360度捕获中,定义了一条适合训练视图的椭圆路径,面向焦点(与训练相机的焦轴平均距离最小的点)。在更多的非结构化捕获中,如CO3DRealEstate10K,拟合b样条来大致遵循训练视图的轨迹。在任何一种情况下,对于每个随机的新视图,统一地选择路径中的一个姿态,然后扰动它的位置,向上向量,并在一定范围内查看点。

Implementation Details

基本扩散模型是对潜在扩散模型的重新实现,该模型在输入分辨率为512×512×3的图像-文本对的内部数据集和维度为64×64×8的潜在空间上进行了训练。

PixelNeRF的编码器是一个小的U-Net,它将分辨率为512×512的图像作为输入,并输出分辨率为64 × 64的128通道的特征图

联合训练PixelNeRF和微调去噪U-Net,批处理大小为256,学习率为 1 0 − 4 10^{−4} 104,共进行250k次迭代。为了实现无分类器制导(CFG),以10%的概率将输入图像随机设置为全零。

使用Zip-NeRF作为主干,并对NeRF进行了总共1000次迭代的训练。重构损失 L r e c o n L_{recon} Lrecon 与 Zip-NeRF一样使用Charbonnier损失。 L s a m p l e L_{sample} Lsample的权重在训练过程中从1线性衰减到0.1,采样使用的无分类器指导尺度设置为 3.0。将所有训练步骤的 t m a x = 1.0 t_{max} = 1.0 tmax=1.0 固定,并将 t m i n t_{min} tmin 从1.0线性退火到0.0。无论 t 如何,总是以k = 10步对去噪图像进行采样。在实践中,用于视图合成的扩散模型可以以少量观察到的输入图像和姿势为条件。给定一个新的目标视图,从观察到的输入中选择3个最近的相机位置来调节模型。这使模型能够在选择对采样的新视图最有用的输入时缩放到大量的输入图像。

在这里插入图片描述

Limitation

重量级扩散模型成本高,并且显著减慢了重建速度;研究结果表明,与图像模型在2D中产生的幻觉相比,3D绘制能力有限;调整重构和样本损失的平衡是繁琐的等。

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

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

相关文章

Jmeter beanshell编程实例

1、引言 BeanShell是一种小型的,免费的,可嵌入的符合Java语法规范的源代码解释器,具有对象脚本语言特性。 在Jmeter实践中,由于BeanShell组件较高的自由度,通常被用来处理较为复杂,其它组件难以处理的问题…

c语言:文件操作(1)

前言:为什么要使用文件 使用文件可以让程序在不同运行之间保存和读取数据。这样可以实现持久化存储,即使程序关闭后数据也不会丢失。文件也可以用于数据交换,允许不同程序之间共享信息。在 C 语言中,文件还可以用于读取配置信息&…

系统架构设计师教程(三)信息系统基础知识

信息系统基础知识 3.1 信息系统概述3.1.1 信息系统的定义3.1.2 信息系统的发展3.1.3 信息系统的分类3.1.4 信息系统的生命周期3.1.5 信息系统建设原则3.1.6 信息系统开发方法 3.2 业务处理系统 (TPS)3.2.1 业务处理系统的概念3.2.2 业务处理系统的功能3.2.3 业务处理系统的特点…

Python:核心知识点整理大全13-笔记

目录 6.4.3 在字典中存储字典 6.5 小结 第7章 用户输入和while循环 7.1 函数 input()的工作原理 7.1.1 编写清晰的程序 7.1.2 使用 int()来获取数值输入 7.1.3 求模运算符 7.1.4 在 Python 2.7 中获取输入 7.2 while 循环简介 7.2.1 使用 while 循环 往期快速传送门…

SPI 通信-stm32入门

本节我们将继续学习下一个通信协议 SPI,SPI 通信和我们刚学完的 I2C 通信差不多。两个协议的设计目的都一样,都是实现主控芯片和各种外挂芯片之间的数据交流,有了数据交流的能力,我们主控芯片就可以挂载并操纵各式各样的外部芯片&…

gpu版本的GNN的demo

1、当涉及到在GPU上运行图神经网络(GNN)时,通常使用深度学习框架,如PyTorch或TensorFlow。在这里,我将为您提供一个使用PyTorch Geometric库实现GNN的简单示例。 首先,确保您已经安装了PyTorch和PyTorch G…

第 375 场 LeetCode 周赛题解

A 统计已测试设备 模拟&#xff1a;记录当前已测试设备数量 class Solution { public:int countTestedDevices(vector<int> &batteryPercentages) {int res 0;int s 0;for (auto x: batteryPercentages) {if (x - s > 0) {res;s;}}return res;} };B 双模幂运算 …

【无线网络技术】——无线城域网(学习笔记)

&#x1f4d6; 前言&#xff1a;无线城域网&#xff08;WMAN&#xff09;是指在地域上覆盖城市及其郊区范围的分布节点之间传输信息的本地分配无线网络。能实现语音、数据、图像、多媒体、IP等多业务的接入服务。其覆盖范围的典型值为3~5km&#xff0c;点到点链路的覆盖可以高达…

少儿编程考级:激发孩子逻辑思维能力的关键

在当今信息化时代&#xff0c;少儿编程已经成为孩子们不可或缺的一项技能。而少儿编程考级&#xff0c;则是检验孩子们在这一技能上所取得的成就的重要途径。少儿编程考级不仅能够激发孩子们的逻辑思维能力&#xff0c;还能够提高他们的动手能力和创造力。6547网将详细介绍少儿…

电源模块测试系统测试LED电源项目的优势

LED电源测试是电源在设计、生产过程中的关键环节&#xff0c;也是确保LED照明产品可靠性和稳定性的重要步骤。LED电源测试一般包括电压、电流、效率、稳定性等。电源模块测试系统测试LED电源&#xff0c;实现自动化测试&#xff0c;保证测试结果的可靠性。 LED电源测试项目及方…

实现加盐加密方法以及MappedByteBuffer,RandomAccess

目录 自己实现 Spring Security MappedByteBuffer RandomAccess 加盐加密的实现 自己实现 传统MD5可通过彩虹表暴力破解&#xff0c; 加盐加密算法是一种常用的密码保护方法&#xff0c;它将一个随机字符串&#xff08;盐&#xff09;添加到原始密码中&#xff0c;然后再进…

力扣17. 电话号码的字母组合(java 回溯法)

Problem: 17. 电话号码的字母组合 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 题目给定一串数字&#xff0c;要求我们找出所有可能的字母组合&#xff0c;即我们可以穷举出所有可能的结果&#xff0c;而涉及到穷举我们自然可以想到利用回溯来解决问题&#xff0c…

无线且列窄图片如何转excel?

写此文原因&#xff1a;图片要转excel&#xff0c;这放以前&#xff0c;是不能实现的功能&#xff0c;但随着人工智能的蓬勃发展&#xff0c;人们已克服了这一难题&#xff0c;但是&#xff0c;我们知道&#xff0c;要将图片识别成excel&#xff0c;识别程序首先要先识别图片中…

如何在小米路由器4A千兆版刷入OpenWRT并通过内网穿透工具实现公网远程访问

文章目录 前言1. 安装Python和需要的库2. 使用 OpenWRTInvasion 破解路由器3. 备份当前分区并刷入新的Breed4. 安装cpolar内网穿透4.1 注册账号4.2 下载cpolar客户端4.3 登录cpolar web ui管理界面4.4 创建公网地址 5. 固定公网地址访问 前言 OpenWRT是一个高度模块化、高度自…

交易历史记录20231206 记录

昨日回顾&#xff1a; select top 10000 * from dbo.CODEINFO A left join dbo.全部&#xff21;股20231206010101 B ON A.CODE B.代码 left join dbo.全部&#xff21;股20231206CONF D on A.CODED.代码left join dbo.全部&#xff21;股20231206 G on A.CODEG.代码 left…

Kafka-快速实战

Kafka介绍 ChatGPT对于Apache Kafka的介绍&#xff1a; Apache Kafka是一个分布式流处理平台&#xff0c;最初由LinkedIn开发并于2011年开源。它主要用于解决大规模数据的实时流式处理和数据管道问题。 Kafka是一个分布式的发布-订阅消息系统&#xff0c;可以快速地处理高吞吐…

阿里云国际基于CentOS系统镜像快速部署Apache服务

阿里云轻量应用服务器提供了Windows Server系统镜像和主流的Linux系统镜像&#xff0c;您可以通过该类镜像创建纯净、安全、稳定的运行环境。本文以CentOS 7.6系统镜像为例&#xff0c;介绍如何快速配置Apache服务。 背景信息 注意&#xff0c;阿里云国际通过corebyt注册并充…

使用rawpy.imread读取.RAW格式数据和.dng格式数据(附代码)

.dng格式是一个更兼容、更高效的RAW格式。如果需要在不同软件之间交换RAW文件&#xff0c;或者需要在软件中进行大量编辑&#xff0c;那么.dng格式是一个不错的选择。 目录 一、 .dng格式数据和.RAW格式数据二、 .dng格式数据和.RAW格式数据区别三、安装rawpy包四、读取.dng格式…

Flask应用基础入门总结

【1】使用migrate方式进行数据库连接 使用migrate方式进行数据库连接需要在终端分别运行三行代码&#xff1a; #init&#xff08;运行一次即可&#xff09;&#xff08;此db为自己设置的连接数据库的对象,可以修改&#xff09; flask db init #&#xff08;将orm模型生成迁移…

从零开始搭建企业管理系统(四):集成 Knife4j

集成 Knife4j 前言Knife4j是什么集成 Knife4j引入 pom 依赖添加基础配置启动程序测试完善文档信息编写配置类修改 UserController修改 UserEntity修改 BaseEntity 文档效果图swagger 界面knife4j 界面 前言 前面一小节我们使用postman来进行接口的调试&#xff0c;如果接口一多…