[论文解析]DREAMFUSION: TEXT-TO-3D USING 2D DIFFUSION

news2024/10/6 14:37:28

在这里插入图片描述
code links:dreamfusion3d.github.io

文章目录

  • Overview
    • What problem is addressed in the paper?
    • What is the key to the solution?
    • What is the main contribution?
    • What can we learn from ablation studies?
    • Potential fundamental flaws; how this work can be improved?
  • Contents
    • Diffusion model
    • 我们如何在参数空间而不是像素空间中采样?
    • THE DREAMFUSION ALGORITHM
      • NeRF渲染过程
    • TEXT-TO-3D SYNTHESIS

Overview

What problem is addressed in the paper?

we circumvent these limitations by using a pretrained 2D text-to-image diffusion model to perform text-to-3D synthesis.

What is the key to the solution?

We introduce a loss based on probability density distillation that enables the use of a 2D diffusion model as a prior for optimization of a parametric image generator. Using this loss in a DeepDream-like procedure, we optimize a randomly-initialized 3D model (a Neural Radiance Field, or NeRF) via gradient descent such that its 2D renderings from random angles achieve a low loss.

What is the main contribution?

By combining SDS with a NeRF variant tailored to this 3D generation task, DreamFusion generates high-fidelity coherent 3D objects and scenes for a diverse set of user-provided text prompts.

What can we learn from ablation studies?

Potential fundamental flaws; how this work can be improved?

Contents

和Dreamfields的不同:我们采用了类似于Dream Fields的方法,但将CLIP替换为2D扩散模型蒸馏产生的损失。

Diffusion model

扩散模型是一种潜在的变量生成模型,它学习将样本从可控制的噪声分布逐渐转换为数据分布

  • 前向过程q:向x中添加噪声。
  • 反向过程p:从噪音中恢复图像结构

前向过程是典型地高斯分布,从之前的时间步t的低噪声潜到时间步t + 1的高噪声。
在给定初始数据点x的情况下,通过对中间时间步积分,我们可以计算出潜伏变量在时间步t处的边际分布 在这里插入图片描述
在这里插入图片描述
初期,在这里插入图片描述,到最后在这里插入图片描述

训练生成模型p从随机噪声在这里插入图片描述开始缓慢添加结构。 理论上,如果有足够的时间步长,最优反向处理步长也是高斯分布的,并且与最优MSE去噪器相关。 转换公式表达为:
在这里插入图片描述。其中在这里插入图片描述是从前向过程中得到的后验分布。在这里插入图片描述是最有去噪器学习的近似值。
在这里插入图片描述
在这里插入图片描述

DDPM的loss:
在这里插入图片描述
其中w是权重函数。因此,扩散模型训练可以被视为学习潜变量模型 或者学习与数据的噪声版本相对应的得分函数序列。

我们用在这里插入图片描述来表示近似的边缘分布,其得分函数由在这里插入图片描述给出。

我们的工作建立在文本到图像的扩散模型上,在文本嵌入y的基础上学习在这里插入图片描述,这些模型使用了classifer-free guidance,即通过guidance scale参数w:在这里插入图片描述来联合学习一个无条件模型使得生成质量提高。当w>0时,可以牺牲多样性为代价来提高样本的保真度。

我们分别用在这里插入图片描述来表示噪音预测和边缘分布。

我们如何在参数空间而不是像素空间中采样?

在像素上训练的扩散模型传统上只用于采样像素。相反,我们希望创建3D模型,当从随机角度渲染时,看起来像好的图像。

For 3D, we let θ be parameters of a 3D volume and g a volumetric renderer. To learn these parameters, we require a loss function that can be applied to diffusion models.
We optimize over parameters θ such thatx = g(θ) looks like a sample from the frozen diffusion model.

通过一个模型生成样本在这里插入图片描述,最小化diffusion的训练损失来更新在这里插入图片描述并不是那么有效,并且很难调参。

损失的梯度如下:
在这里插入图片描述
我们发现,省略U-Net雅可比矩阵项可以得到一个有效的梯度来优化扩散模型的dip:
在这里插入图片描述
我们使用从扩散模型中学习到的分数函数表明它是加权概率密度蒸馏损失的梯度(van den Oord等人,2018)。 我们将我们的采样方法命名为Score Distillation Sampling(SDS),因为它与蒸馏有关,但使用评分函数而不是密度。由于扩散模型直接预测更新方向,我们不需要通过扩散模型反向传播;该模型就像一个高效的、固定的评论家,可以预测图像空间的编辑。

在这里插入图片描述
图2 证明SDS可以生成具有合理质量的约束图像。

THE DREAMFUSION ALGORITHM

为了从文本合成一个场景,我们初始化一个具有随机权重的NeRF类模型,然后从随机的摄像机位置和角度重复渲染该NeRF的视图,使用这些渲染作为封装在Imagen周围的得分提取损失函数的输入。

图3 是方法概述
在这里插入图片描述

  • 场景由一个神经辐射场表示,该场为每个标题随机初始化和从头训练。
  • 我们的NeRF用MLP参数化体积密度和反照率(颜色)
  • 我们从随机摄影机渲染NERF,使用从密度梯度计算的法线以随机照明方向对场景进行着色。
  • 明暗处理显示了从单个视点看不清楚的几何细节
  • 为了计算参数更新,DreamFusion扩散渲染并使用(冻结的)条件Imagen模型重建渲染,以预测注入的噪声在这里插入图片描述
  • 减去注入的噪波会产生低方差的更新方向STOPGRID[NERF−],该方向将通过渲染过程反向传播以更新ˆφMLP参数。

NeRF渲染过程

在这里插入图片描述
Our model is built upon mip-NeRF 360 (Barron et al., 2022):
Shading.
传统的NeRF模型发射辐射,这是RGB颜色条件下的射线方向的3D点被观察。相反,我们的MLP参数化了表面本身的颜色,然后通过我们控制的照明来照亮它(这个过程通常称为“着色”)。
We use an RGB albedo ρ (the color of the material) for each point:
在这里插入图片描述
where τ is volumetric density. 计算3D点的最终阴影输出颜色需要一个法向量,该法向量指示物体几何形状的局部方向。这个表面法向量可以通过将密度τ相对于三维坐标μ的负梯度归一化来计算:
在这里插入图片描述
我们使用漫反射来渲染沿着射线的每个点的颜色:
在这里插入图片描述
we find it beneficial to randomly replace the albedo color ρ with white (1, 1, 1) to produce a “textureless” shaded output : 这可以防止模型产生退化的解决方案,其中场景内容被绘制到平面几何上以满足文本条件。

Scene Structure.
We composite the rendered ray color on top of this background color using the accumulated alpha value. This prevents the NeRF model from filling up space with density very close to the camera while still allowing it to paint an appropriate color or backdrop behind the generated scene. For generating single objects instead of scenes, a reduced bounding sphere can be useful.

Geometry regularizers.
We include a regularization penalty on the opacity along each ray similar to Jain et al. (2022) to prevent unneccesarily filling in of empty space.

TEXT-TO-3D SYNTHESIS

For each text prompt, we train a randomly initialized NeRF from scratch. Each iteration of DreamFusion optimization performs the following:

  • (1) randomly sample a camera and light,
  • (2) render an image of the NeRF from that camera and shade with the light,
  • (3) compute gradients of the SDS loss with respect to the NeRF parameters,
  • (4) update the NeRF parameters using an optimizer.

We detail each of these steps below, and present pseudocode in Appendix 8

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

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

相关文章

MATLB|基于粒子群算法的能源管理系统EMS(考虑光伏、储能 、柴油机系统)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清…

原子操作类之18罗汉增强

原子操作类之18罗汉增强 是什么 都是java.util.concurrent.atomic包下的 有红框圈起来的,也有蓝框圈起来的,为什么? 阿里巴巴Java开发手册 为什么说18罗汉增强,却只有16个 再分类 基本类型原子类 AtomicInteger AtomicBoolea…

wpa_supplicant工具移植到嵌入式设备

1、wpa_supplicant源码下载 (1)源码下载地址:http://w1.fi/releases/; (2)本文是以wpa_supplicant-2.6.tar.gz版本进行移植; 2、编译openssl 2.1、确定适配的openssl版本 Optional libraries for EAP-TLS, EAP-PEAP, and EAP-TTLS: - OpenS…

【LeetCode】1827. 最少操作使数组递增

题目描述 给你一个整数数组 nums (下标从 0 开始)。每一次操作中,你可以选择数组中一个元素,并将它增加 1 。 比方说,如果 nums [1,2,3] ,你可以选择增加 nums[1] 得到 nums [1,3,3] 。 请你返回使 nums …

ESXi8.0中NVME硬盘不识别解决方法1,设置直通

目录 1.前言 2.直通设置 3.槽点 1.前言 ESXi8.0删除了很多老版本的硬件的驱动程序,导致NVME1.3及更低协议的固态硬盘均无法被ESXi直接识别正如我手头准备了尚好的服务器专用PM983A却无法识别。本着不折腾先熟悉ESXi8.0的思路另外找了一块盘装了ESXi的系统。本以为…

云原生之使用Docker部署webssh工具sshwifty

云原生之使用Docker部署webssh工具sshwifty一、sshwifty介绍1.sshwifty简介2.shwifty 特点二、检查本地docker环境1.检查docker版本2.检查docker状态三、下载sshwifty镜像四、服务器生成凭证文件五、创建sshwifty容器1.创建部署目录2.创建sshwifty容器3.查看sshwifty容器状态六…

uniapp 之 小程序线上版本一直处于加载状态

前言 最开始小程序都是体验版的,后来应老大需求,把体验版提交审核为正式版本(线上版本), 原本以为版本审核得花费几天时间,没想到它这审核速度挺快的,不到3小时就审核通过了,审核…

[go]汇编语言

文章目录计算机结构常量与变量全局变量常量数组字符串函数参数与返回值goroutineGo汇编程序无法独立使用,必须以Go包的方式组织,同时包中至少要有一个Go语言文件用于指明当前包名等基本包信息。如果Go汇编代码中定义的变量和函数要被其它Go语言代码引用&…

Spark的架构与基本运行流程

Spark的架构与基本运行流程一、Spark中的核心概念二、Spark中的核心架构设计一、Spark中的核心概念 (1)RDD,Spark中最核心的概念就是RDD(Resillient Distributed Dataset,弹性分布式数据集)。换而言之&…

MySQL---事务及锁机制

MySQL之事务以及锁机制 文章目录MySQL之事务以及锁机制事务事务的操作1、开启事务:start Transaction2、提交事务:commit Transaction3、回滚事务:Rollback Transactionset命令事务的特性---ACID事务的隔离级别1.READ UNCOMMITTED 读未提交2.…

毒鸡汤 | PHPStudy搭建web项目

文章目录前言展示准备工作环境创建网站新建数据库PHP7现成版自己折腾版前言 折腾了很久,终于自己改成功了。问题不多,主要原因是自己没怎么开发过,不熟悉数据库连接原理,现在回头看真的改的很简单。问题主要是现在用的PHP7和旧版的…

I-03数据结构与算法(python版)

最近学习数据结构,对于从未接触过数据结构的我来说,老师不仅讲解理论,还有代码的逐层分析,非常不错,受益匪浅!!!(以下是学习记录) 数据结构与算法&#xff0…

DEiT:通过注意力训练数据高效的图像transformer 蒸馏

摘要 最近,纯基于注意力的神经网络被证明可以解决图像理解任务,如图像分类。这些高性能的是使用大型基础设施预先训练数以亿计的图像,从而限制了它们的采用。 本文仅通过在Imagenet上训练,产生有竞争力的无卷积transformer。我们…

react原理-transition概念

在react18之中,引入了transition的概念。而且有一个新的api和两个新的hooks startTransitionuseTransitionuseDeferredValue 场景应用: 比如通过输入框输入内容更新列表内容,对于用户来说,输入框输入之后立马反馈的优先级是高过…

VS ChatGPT 中文版插件安装

1.打开Visual Studio Code 2.搜索chatGpt中文版 3.安装完后,重启一下软件 有国模式和国外模式,更多的教程请看插件作者的视频教程

分布式事物

Seata实践 XA模式 AT模式 TCC模式 性能 Saga模式 高可用------集群的形式 Seata实践解决方案 解决方式 Seata 引入服务协调者模式 实践步骤: 分布式事物的入口方法,会调用其他的微服务,每次调用的服务都是一个分支事物调用了多少个分支事…

SpringSecurity 认证实现

在之前一篇 博客 已经说明了 SpringSecurity 认证与授权的原理。这篇用来具体实现一下。 1、新建SecurityConfig 并创建认证管理器 Bean public AuthenticationManager authenticationManager() {... }2、新建认证提供者 Configuration public class SystemUserPasswordAuth…

Oracle项目管理之PrimaveraUnifier组织-业主/合作伙伴公司

目录 一、业主公司 二、合作伙伴公司 三、成员公司 Oracle Primavera Unifier 是企业项目协同管理系统,在国际化项目管理中,在进行常规的业务管理之外,对合同公司/EPC或分包供应商也有一定的管理要求,在Unifier中为了更好的实现…

sja1000 CAN驱动学习、调试记录(基于PeliCan Mode)

一、基础知识 网上讲sja1000 CAN总线控制器的资料很多,这里放一个引路贴:(151条消息) CAN总线控制器SJA1000_FATE的博客-CSDN博客_sja1000 BasicCAN Mode:仅支持11位的ID。 PeliCan Mode:在扩展模式下,允许使用 11 位 …

找出DataFrame中指定数据类型的列:select_dtypes()函数

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 找出DataFrame中指定数据类型的列 select_dtypes()函数 选择题 下列说法错误的是? import pandas as pd myDF pd.DataFrame({A:[1,2],B:[1.0,2.0],C:[a,b]}) print("【显示】myDF&qu…