您的位置:首页 > 教育 > 培训 > DreamFusion 论文学习

DreamFusion 论文学习

2024/10/6 9:24:04 来源:https://blog.csdn.net/calvinpaean/article/details/141064822  浏览:    关键词:DreamFusion 论文学习

扩散模型在 text-to-image 任务上有显著的效果,如 DALLE.E2。然而 text-to-3D 由于 3D 模型数据集不足,导致直接训练 text-to-3D 的扩散模型相当困难。DreamFusion1 跳过了这种训练框架,利用 text-to-image 与 NeRF 技术,达到 text-to-3D 的生成。

扩散模型算法2

训练

扩散模型在训练 noise predictor 时,会从目标分布中采样一张图片,接着在这张图片上叠加噪声。这里可以注意到,扩散模型会假设一个逐渐变小的数列 ( α ˉ 1 , α ˉ 2 , . . . , α ˉ T ) (\bar{\alpha}_1,\bar{\alpha}_2,...,\bar{\alpha}_T) (αˉ1,αˉ2,...,αˉT),随机叠加上对应的噪声。

可以看到随着 α ˉ T \bar{\alpha}_T αˉT 越大,噪声加的就越厉害。而整个 noise predictor network 在做的事情就是将噪声图像和步骤3取样的 t t t作为输入,去预测步骤4取样的噪声 ϵ \epsilon ϵ

推理

产生图像的过程如下所示。步骤4简言之就是将噪声图像 x t \mathbf{x}_t xt渐渐地去噪,恢复到清晰的图像。这里暗藏玄机的部分在于,每个 t t t循环都会在最后加上噪声 z \mathbf{z} z

影响模型生成的本质

不论是扩散模型、GAN 或 VAE 在这种图像生成模型,它们的本质都是去最小化图像生成模型产生的 P P P分布,与搜集到的图像数据集产生的 P d a t a ( x ) P_{data}(x) Pdata(x)分布之间的某种 divergence。本质上就是去寻找 P θ ( x ) P_\theta(x) Pθ(x) P d a t a ( x ) P_{data}(x) Pdata(x) 之间的最大似然。

式子的推导如下:

虽然我们无法得知 P θ ( x ) P_\theta(x) Pθ(x),但我们可用生成模型输出高斯分布的方式去近似,我们先以 VAE 为例:

最大化 log ⁡ P θ ( x ) \log P_\theta(x) logPθ(x) 的过程经过一番推导,可以改用最大化 ELBO(evidence lower bound) 去表示:

KL散度(Kullback-Leibler divergence),也称为相对熵,是一种衡量两个概率分布 A A A B B B 差异的指标。KL散度是不对称的,即 KL ( A ∣ ∣ B ) ≠ KL ( B ∣ ∣ A ) \text{KL}(A||B)\neq \text{KL}(B||A) KL(A∣∣B)=KL(B∣∣A)
对于离散和连续的概率分布,分别为:
KL ( A ∣ ∣ B ) = ∑ x A ( x ) log ⁡ ( A ( x ) B ( x ) ) , KL ( A ∣ ∣ B ) = ∫ A ( x ) log ⁡ ( A ( x ) B ( x ) ) d x , KL ( A ∣ ∣ B ) ≥ 0 \text{KL}(A||B) = \sum_x A(x)\log (\frac{A(x)}{B(x)}), \\ \text{KL}(A||B) = \int A(x)\log (\frac{A(x)}{B(x)}) dx, \\ \text{KL}(A||B) \geq 0 KL(A∣∣B)=xA(x)log(B(x)A(x)),KL(A∣∣B)=A(x)log(B(x)A(x))dx,KL(A∣∣B)0

扩散模型3

如下所示,扩散模型是一个马尔可夫链, q ( x t ∣ x t − 1 ) q(x_t | x_{t-1}) q(xtxt1) 可以看作为 encoder, p ( x t ∣ x t + 1 ) p(x_t | x_{t+1}) p(xtxt+1) 可以看作为 decoder。

接着,我们同样去试着最大化 log ⁡ p ( x ) \log p(x) logp(x),可以得到 ELBO 如下:

ELBO 的部分就可如下展开:

把最后一项放大来看:

红框内在做的事,就是去试着让 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t, x_0) q(xt1xt,x0) P ( x t − 1 ∣ x t ) P(x_{t-1}|x_t) P(xt1xt) 越接近越好,也就是下图的粉红色与绿色箭头的部分:

而我们可以通过马尔可夫性质与贝叶斯定理,将 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t, x_0) q(xt1xt,x0)表示为:

q ( x t ∣ x t − 1 , x 0 ) = q ( x t − 1 ∣ x t , x 0 ) q ( x t ∣ x 0 ) q ( x t − 1 ∣ x 0 ) q(x_{t}|x_{t-1}, x_0)=\frac{q(x_{t-1}|x_t, x_0)q(x_t|x_0)}{q(x_{t-1}|x_0)} q(xtxt1,x0)=q(xt1x0)q(xt1xt,x0)q(xtx0)

由于我们知道整个编码的过程,其实就是在加高斯噪声,因此可以得到下面的关系式:

q ( x t ∣ x t − 1 , x 0 ) = q ( x t ∣ x t − 1 ) = N ( x t ; α t x t − 1 , ( 1 − α t ) I ) q(x_t | x_{t-1}, x_0) = q(x_t | x_{t-1}) = \mathcal{N}(x_t; \sqrt{\alpha_t} x_{t-1}, (1-\alpha_t)\mathbf{I}) q(xtxt1,x0)=q(xtxt1)=N(xt;αt xt1,(1αt)I)

更改一下符号就可以表示为:

x t = α t x t − 1 + 1 − α t ϵ with  ϵ ∼ N ( ϵ ; 0 , I ) x_t = \sqrt{\alpha_t}x_{t-1} + \sqrt{1-\alpha_t} \epsilon \ \text{with} \ \epsilon \sim \mathcal{N}(\epsilon;\mathbf{0,I}) xt=αt xt1+1αt ϵ with ϵN(ϵ;0,I)

t − 1 t-1 t1 这个时间点的图像同上逻辑可以得到:

x t − 1 = α t − 1 x t − 2 + 1 − α t − 1 ϵ with  ϵ ∼ N ( ϵ ; 0 , I ) x_{t-1} = \sqrt{\alpha_{t-1}}x_{t-2} + \sqrt{1-\alpha_{t-1}} \epsilon \ \text{with} \ \epsilon \sim \mathcal{N}(\epsilon;\mathbf{0,I}) xt1=αt1 xt2+1αt1 ϵ with ϵN(ϵ;0,I)

透过递归的表示,可以得出 q ( x t ∣ x 0 ) q(x_t | x_0) q(xtx0):

而这也是我们在扩散模型中看到的噪声图像。接着我们继续试着找出 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t, x_0) q(xt1xt,x0)

这里,我们引入新符号来表示 variance 部分,

σ q 2 ( t ) = ( 1 − α t ) ( 1 − α ˉ t − 1 ) 1 − α ˉ t \sigma_{q}^2(t)=\frac{(1-\alpha_t)(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t} σq2(t)=1αˉt(1αt)(1αˉt1)

如上,由于我们可以控制 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1} | x_t, x_0) q(xt1xt,x0) P ( x t − 1 ∣ x t ) P(x_{t-1}|x_t) P(xt1xt)的 variance,因此整个最小化 KL散度的过程就是在缩小 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1} | x_t, x_0) q(xt1xt,x0) P ( x t − 1 ∣ x t ) P(x_{t-1}|x_t) P(xt1xt)的均值。

详细推导如下:

其中 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t, x_0) q(xt1xt,x0)的均值可以表示为:

μ q ( x t , x 0 ) = α t ( 1 − α ˉ t − 1 ) x t + α ˉ t − 1 ( 1 − α t ) x t 1 − α ˉ t \mu_{q(x_t, x_0)}=\frac{\sqrt{\alpha_t}(1 - \bar{\alpha}_{t-1})x_t + \sqrt{\bar\alpha_{t-1}}(1 - \alpha_{t})x_t}{1-\bar\alpha_t} μq(xt,x0)=1αˉtαt (1αˉt1)xt+αˉt1 (1αt)xt

透过先前的定义,可以将上式右边的 x 0 x_0 x0 替换:

可以得到均值为:

上式有换过符号, β t \beta_t βt 1 − α t 1-\alpha_t 1αt

这个过程,其实就是下图推理中红框内的部分。其中 ϵ \epsilon ϵ即为我们的 noise predictor network。

详细推导如下:

Score Function: Another Perspective of Diffusion Models4

Tweedie’s Formula 是 θ ^ T E = x + σ 2 d d x log ⁡ p ( x ) \hat{\theta}^{TE}=x + \sigma^2 \frac{d}{dx}\log p(x) θ^TE=x+σ2dxdlogp(x),可以看出,Tweedie’s Formula 估计的第一项就是 MLE(Maximum Likelihood Estimation),而第二项可以看成在 MLE 基础上做的贝叶斯修正,这里要注意的是,Tweedie’s Formula 给的仅是对后验的期望。

通过 Tweedie’s Formula,我们可以将参数估计范化为:

E [ μ z ∣ z ] = z + Σ z ∇ z log ⁡ p ( z ) \mathbb{E}[\mu_z | z] = z + \Sigma_z \nabla_z \log p(z) E[μzz]=z+Σzzlogp(z)

其中 z ∼ N ( z ; μ z , Σ z ) z\sim N(z;\mu_z, \Sigma_z) zN(z;μz,Σz)。而扩散模型中, q ( x t ∣ x 0 ) q(x_t | x_0) q(xtx0) 可以表示为:

q ( x t ∣ x 0 ) = N ( x t ; α ˉ t x 0 , ( 1 − α ˉ t ) I ) q(x_t|x_0) = \mathcal{N}(x_t; \sqrt{\bar{\alpha}_t} x_0, (1 - \bar{\alpha}_t) \mathbf{I}) q(xtx0)=N(xt;αˉt x0,(1αˉt)I)

将上述两个式子结合,我们可以得到:

E [ μ x t ∣ x t ] = x t + ( 1 − α ˉ t ) ∇ x t log ⁡ p ( x t ) \mathbb{E}[\mu_{x_t}| x_t] = x_t + (1 - \bar{\alpha}_t)\nabla_{x_t} \log p(x_t) E[μxtxt]=xt+(1αˉt)xtlogp(xt)

而在 Tweedie’s Formula 中,均值的最佳估计就是我们实际 encoder 中的均值,也就是

μ x t = α ˉ t x 0 \mu_{x_t} = \sqrt{\bar{\alpha}_t} x_0 μxt=αˉt x0

由此我们可以得到 x 0 x_0 x0

α ˉ t x 0 = x t + ( 1 − α ˉ t ) ∇ log ⁡ p ( x t ) ∴ x 0 = x t + ( 1 − α ˉ t ) ∇ log ⁡ p ( x t ) α ˉ t \sqrt{\bar{\alpha}_t}x_0 = x_t + (1 - \bar{\alpha}_t)\nabla \log p(x_t)\\ \therefore x_0 = \frac{x_t + (1 - \bar{\alpha}_t)\nabla \log p(x_t)}{\sqrt{\bar{\alpha}_t}} αˉt x0=xt+(1αˉt)logp(xt)x0=αˉt xt+(1αˉt)logp(xt)

x 0 x_0 x0 带入上面的 denoising transition mean(去噪转换均值) μ q ( x t , x 0 ) \mu_q(x_t, x_0) μq(xt,x0) 中:

接着我们透过下式假设一个 denoising transition mean:

μ θ ( x t , t ) = 1 α t x t + 1 − α t α t s θ ( x t , t ) \mu_\theta(x_t, t) = \frac{1}{\sqrt{\alpha_t}}x_t + \frac{1-\alpha_t}{\sqrt{\alpha}_t} s_\theta (x_t, t) μθ(xt,t)=αt 1xt+α t1αtsθ(xt,t)

因此根据扩散模型,最终对 denoising transition 的推导可以写为:

这里,我们可以对比一下之前的部分:

因此,整个优化工作就变成了训练一个神经网络 s θ s_\theta sθ,使其接近 ∇ log ⁡ p ( x t ) \nabla\log p(x_t) logp(xt),这个 ∇ log ⁡ p ( x t ) \nabla\log p(x_t) logp(xt)就叫做 score function。这种函数通常指的是概率分布的梯度,即概率密度函数相对于输入变量的导数

利用 Tweedie’s Formula 以及初始图像 x 0 x_0 x0

我们可以发现 score function 其实和 source noise 相关。

Score function 的意义就是我们如何在数据空间中移动,区最大化 log probability。直觉上来说,将 source noise 加到图像上使图像变得模糊失真,在相反方向上进行调整,那么就可以对图像去噪,也因此最能增大后续的 log probability。

Score Distillation Sampling5

Differentiable Image Parameterization

DreamFusion1 的扩散过程并不是从 RGB 空间去采样图片,而是利用了 DIP。只要图片的参数化是可微分的,我们就可以通过它做反向传播。

简单来说,DIP 就是利用其他可微分的参数来表示一张图片。我们用 θ \theta θ来表示 3D volume 的参数,那么采样到的图片就可以用 x = g ( θ ) x=g(\theta) x=g(θ)来表示, g g g 为一个 transformation function,将 θ \theta θ参数化为图片 x x x

我们对采样像素并没兴趣,我们想要创建一个 3D 模型,从任意角度渲染的时候,图片看上去都很逼真。

Score-based Generative Modeling

我们可以将扩散模型理解为一个 score-based generative model。

首先介绍一下 EBM(Energy-based Model):

p θ ( x ) = 1 Z θ exp ⁡ ( − f θ ( x ) ) p_\theta(x)=\frac{1}{Z_\theta}\exp{(-f_\theta(x))} pθ(x)=Zθ1exp(fθ(x))

引用自物理力学, f θ ( x ) f_\theta(x) fθ(x)是灵活且可参数化的能量函数,因此可以用神经网络去建模。而 Z θ Z_\theta Zθ称作 Normalizing Constant,确保 ∫ p θ ( x ) d x = 1 \int{p_\theta(x)dx}=1 pθ(x)dx=1。透过对 EBM 公式进行以下操作:

换句话说,我们用来建模 f θ ( x ) f_\theta(x) fθ(x) 的神经网络,其实就是之前提到的 score function。这个神经网络可以通过最小化 Fisher Divergence 去优化:

E p ( x ) = [ ∥ s θ ( x ) − ∇ log ⁡ ( p ( x ) ) ∥ 2 2 ] \mathbb{E}_{p(x)}=\left[ \left\| s_\theta(x) - \nabla \log(p(x)) \right\|_2^2 \right] Ep(x)=[sθ(x)log(p(x))22]

Fisher Divergence(Fisher散度)是一种衡量两个概率分布差异的度量。对于随机变量 U U U V V V,概率密度函数分别为 f f f g g g,Fisher Divergence 定义为: I ( U ∣ ∣ V ) = I ( f ∣ ∣ g ) = ∫ f ( x ) ∥ ∇ log ⁡ f ( x ) − ∇ log ⁡ g ( x ) ∥ 2 2 d x I(U||V)=I(f||g)=\int{f(x)\left\| \nabla \log f(x) - \nabla \log g(x) \right\|_2^2 dx} I(U∣∣V)=I(f∣∣g)=f(x)logf(x)logg(x)22dx。它基于 Fisher Information 的概念,Fisher Information 是关于概率分布参数的信息量度量。它的定义涉及到两个概率分布 P P P Q Q Q相对于某个参数 θ \theta θ的 Fisher Information 矩阵 I ( θ ) \mathcal{I}(\theta) I(θ)和它们的参数 θ P \theta_P θP θ Q \theta_Q θQ的差异。Fisher Information 矩阵是一个关于参数 θ \theta θ的二阶导数的期望值构成的矩阵,可以表示为: I ( θ ) = E [ − ∂ 2 ∂ θ 2 log ⁡ P ( X ∣ θ ) ] \mathcal{I}(\theta)=\mathbb{E}\left[-\frac{\partial^2}{\partial\theta^2}\log P(X|\theta)\right] I(θ)=E[θ22logP(Xθ)]

对图像空间中的 x x x的 log likelihood 计算梯度,其实就是找到在数据空间中,可以增加 p ( x ) p(x) p(x) likelihood 的方向。

Score function 的可视化如下图所示,水平面即 x x x所在的数据空间,纵轴的尖峰(密度较高的区域)可以看作为模型最终收敛的集中可能模式。像这样透过 score function 表示 p ( x ) p(x) p(x) 的分布并用 MCMC 去产生样本,就是所谓的 score-based generative modeling。

学习将一个分布表示为 score function,然后用这个函数通过 Markov Chain Monte Carlo(MCMC) 技术(如 Langevin dynamics)生成符合该分布的样本。这种方法在生成模型领域,特别是深度学习中,是一种新兴的研究方向。

马尔可夫链蒙特卡洛(MCMC)是一类用于从复杂概率分布中生成样本的算法。这些技术通过构建一个马尔可夫链来逐步探索状态空间,最终达到与目标分布相同的分布。

Langevin动力学是一种特定的MCMC技术,它通过模拟物理系统在热力学平衡状态下的行为来生成样本。这种动力学以Paul Langevin命名,他在研究布朗运动时引入了这一概念。在机器学习中,Langevin动力学可以用来模拟概率分布的梯度下降过程,从而生成样本。

SDS

DreamFusion1 定义扩散模型训练的损失如下, w ( t ) w(t) w(t) 为加权函数,其余和下图的 Gradient Descent 一致:

L Diff ( ϕ , x ) = E t ∼ U ( 0 , 1 ) , ϵ ∼ N ( 0 , I ) [ w ( t ) ∥ ϵ ϕ ( α t x + σ t ϵ ; t ) − ϵ ∥ 2 2 ] \mathcal{L}_{\text{Diff}}(\phi, x)=\mathbb{E}_{t\sim \mathcal{U}(0,1),\epsilon\sim \mathcal{N}(\mathbf{0,I})}\left[w(t)\left\| \epsilon_\phi (\alpha_t \mathbf{x} + \sigma_t\epsilon;t) - \epsilon \right\|_2^2\right] LDiff(ϕ,x)=EtU(0,1),ϵN(0,I)[w(t)ϵϕ(αtx+σtϵ;t)ϵ22]

将上式中的图像 x \mathbf{x} x专程 DIP x = g ( θ ) \mathbf{x}=g(\theta) x=g(θ),我们的目的就变成最小化以下的损失函数:

θ ∗ = arg min ⁡ θ L Diff ( ϕ , x = g ( θ ) ) \theta^\ast = \argmin_\theta \mathcal{L}_{\text{Diff}}(\phi, \mathbf{x}=g(\theta)) θ=θargminLDiff(ϕ,x=g(θ))

然而实验结果证实这样做的效果并不好,为何如此?我们首先对损失函数取梯度,可以得到:

z ( t ) z(t) z(t) 是添加的噪声。

DreamFusion1 中提到,U-Net Jacobian 这个部分需要巨大的计算资源,并且在噪声小的情况下效果不佳,因此 DreamFusion1 直接省略了这个部分,并将剩下的部分定义为 SDS 的梯度:

∇ θ L S D S ( ϕ , x = g ( θ ) ) ≜ E t , ϵ [ w ( t ) ( ϵ ^ ϕ ( z t ; y , t ) − ϵ ) ∂ x ∂ θ ] \nabla_\theta \mathcal{L}_{SDS}(\phi, \mathbf{x}=g(\theta)) \triangleq \mathbb{E}_{t,\epsilon}\left[ w(t)(\hat{\epsilon}_\phi(\mathbf{z}_t;y,t)-\epsilon)\frac{\partial{\mathbf{x}}}{\partial{\theta}} \right] θLSDS(ϕ,x=g(θ))Et,ϵ[w(t)(ϵ^ϕ(zt;y,t)ϵ)θx]

从 score-based generative model 的角度看,这其实就是去找到数据空间中的某个可能模式,也就是密度较高的区域。DreamFusion1 将这个方法称为 Score Distillation Sampling。

Algorithm6

扩散模型的部分,DreamFusion1 使用了 Imagen,而 3D 模型的生成则采用了 NeRF 的架构。首先随机初始化一个 NeRF,接着重复地随相机位置去渲染,再将渲染出来的图像和 Imagen 计算 SDS 损失,并做优化。整个流程如下图所示:

Neural Rendering of a 3D Model

NeRF 采用体积渲染,由相机位置向各个像素点方向发射射线,射线经过的 3D 位置 μ \mu μ 会得到不透明度 τ \tau τ 和 RGB 颜色 c c c。最终像素的值即为该射线一路从相机过来所经过的所有 μ \mu μ 之加权总和。

C = ∑ i w i c i , w i = α i ∏ j < i ( 1 − α j ) , α i = 1 − exp ⁡ ( − τ i ∥ μ i − μ i + 1 ∥ ) \mathbf{C}=\sum_i w_i \mathbf{c}_i, \quad w_i=\alpha_i \prod_{j<i} (1-\alpha_j), \quad \alpha_i = 1 - \exp{(-\tau_i \left\| \mu_i - \mu_{i+1} \right\|)} C=iwici,wi=αij<i(1αj),αi=1exp(τiμiμi+1)

DreamFusion1 中,针对原始 NeRF 有以下几项改进:

Shading

传统的 NeRF 针对每个 3D 位置计算不透明度 τ \mathbf{\tau} τ和 RGB 颜色 c \mathbf{c} c,而在 DreamFusion1 中则是计算 3D 模型的每个表面如何着色,也就是着色器(Shader)的概念。该 Shader MLP 会以 3D 位置 μ \mu μ 和相机位置参数 θ \theta θ 作为输入,输出不透明度 τ \mathbf{\tau} τ 与物体表面的 RGB 反射率 ρ \mathbf{\rho} ρ(可视为材质的颜色):

( τ , ρ ) = MLP ( μ ; θ ) (\tau, \mathbf{\rho}) = \text{MLP}(\mathbf{\mu}; \theta) (τ,ρ)=MLP(μ;θ)

有了 τ \mathbf{\tau} τ ρ \mathbf{\rho} ρ,我们需要物体表面的法向量 n \mathbf{n} n,去计算 3D 位置在该物体表面最终的颜色。 n \mathbf{n} n 可以透过 3D 位置 μ \mathbf{\mu} μ上的 τ \mathbf{\tau} τ的反向梯度计算出来:

n = − ∇ μ τ / ∥ ∇ μ τ ∥ \mathbf{n}=-\nabla_{\mathbf{\mu}}\tau / \left\| \nabla_\mathbf{\mu} \tau \right\| n=μτ/μτ

接着假设点光源位置 l l l与颜色 l p l_p lp,采用漫反射(Diffuse Reflection)模型,可对 3D 位置 μ \mu μ 进行着色:

c = ρ ∘ ( l p ∘ max ⁡ ( 0 , n ⋅ ( l − μ ) / ∥ l − μ ∥ ) + l a ) \mathbf{c}=\mathbf{\rho} \circ (l_p \circ \max(0, \mathbf{n}\cdot (l - \mu)/ \left\| l-\mu \right\|) + l_a) c=ρ(lpmax(0,n(lμ)/lμ)+la)

Scene Structure

DreamFusion1 将整个 NeRF 的范围限制在一个球体内,并且该球体的背景是通过另一组 MLP 参数生成的。

Geometry Regularizers

DreamFusion1 针对射线经过的 3D 位置所计算出的不透明度,会有额外的正则惩罚,这么做是为了避免在 empty space 中塞入错误的噪声。

Text-to-3D Synthesis

文本到 3D 的生成可以拆解为四个步骤:

  • 随机采样一个相机位姿和光照;
  • 从该相机视角和光线阴影,渲染 NeRF 的一张图像;
  • 计算 SDS 损失关于 NeRF 参数的梯度;
  • 使用优化器更新 NeRF 的参数。

下面针对这四个步骤进行解释:

  1. 随机采样一个相机和光照

在每次训练步骤,相机的极坐标参数会从下面的范围随机选择:

  • 仰角 ϕ ∈ [ − 10 ° , 90 ° ] \phi\in [-10\degree, 90\degree] ϕ[10°,90°]
  • 水平角 θ ∈ [ 0 ° , 360 ° ] \theta\in [0\degree, 360\degree] θ[,360°]
  • 与原点的距离 r ∈ [ 1 , 1.5 ] r\in [1, 1.5] r[1,1.5]

另外,焦距 λ \lambda λ与点光源位置 l l l从以下范围得到:

  • 焦距 λ ∈ U ( 0.7 , 1.35 ) \lambda\in U(0.7, 1.35) λU(0.7,1.35)
  • l l l从以相机位置为均值的分布中抽样
  1. 渲染

NeRF渲染的解析度为 64 × 64 64\times 64 64×64,搭配预训练的 Text-to-Image Model。

  1. Diffusion loss with view-dependent conditioning

在文字提示上,DreamFusion1 会提供针对相机参数的额外提示,比如仰角 > 60 ° >60\degree >60°时,会加上 “overhead view” 的字眼。另外,DreamFusion1 采用的是 T5-XXL Text Embedding。

  1. 优化

针对训练环境,在一台装有四块 TPUv4 芯片的机器上进行 3D 场景的优化。每张芯片渲染一个单独的视图,每个设备的 batch size 为1 评估扩散 U-Net 模型。进行了1.5万次迭代优化,这个过程需要大概 1.5 小时。计算时间平均分配在渲染 NeRF 和评估扩散模型上。使用 Distributed Shampoo 优化器来优化参数。


  1. https://arxiv.org/pdf/2209.14988.pdf ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  2. https://medium.com/@tonytsai225/3d%E7%94%9F%E6%88%90-dreamfusion-part-1-fb5027805389 ↩︎

  3. https://arxiv.org/pdf/2208.11970.pdf ↩︎

  4. https://medium.com/@tonytsai225/3d%E7%94%9F%E6%88%90-dreamfusion-part-2-score-based-generative-model-d432650b2011 ↩︎

  5. https://medium.com/@tonytsai225/3d%E7%94%9F%E6%88%90-dreamfusion-part-3-score-distillation-sampling-fdfc766ecf74 ↩︎

  6. https://medium.com/@tonytsai225/3d%E7%94%9F%E6%88%90-dreamfusion-part-4-algorithm-2ed445393430 ↩︎

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com