简介
论文:https://arxiv.org/abs/2211.07600
dream fusion开创了2d扩散模型引导nerf生成的先河,但是其使用的是stable diffusion,庞大的资源开销是不可忽视的一个问题,该论文则是基于潜空间的diffusion模型(IDM),有效提升了效率,同时还提出了两个新的生成方式——Sketch-shape,Latent-Paint
IDM 与 Score Distillation
**潜扩散模型(LDM)**是一种特定形式的扩散模型,它被训练来去噪预训练的自编码器的潜代码,而不是直接去噪高分辨率图像。
分数蒸馏是一种能够将扩散模型作为评价器的方法,即:,将其用作损失,而无需在扩散过程中显式地反向传播。
要执行分数蒸馏,首先将噪声添加到给定的图像(例如,NeRF输出的一个视图)。然后,利用扩散模型预测噪声图像的附加噪声。最后,利用预测噪声和添加噪声之间的差异计算逐像素梯度
在分数蒸馏优化的每次迭代中,渲染的图像 x 对随机绘制的时间步 t 进行噪声处理
将每个像素的分数蒸馏梯度取为
ϵ
ϕ
\epsilon_\phi
ϵϕ 为扩散模型的降噪器,φ为去噪器参数,T 是一个可选的引导文本提示符,W (t)是一个依赖于
α
t
α_t
αt 的常数乘数
在训练阶段,梯度从像素梯度传播到NeRF参数,并逐渐改变3D对象
dream fusion中 分数蒸馏 伪代码
实现流程
在每次训练迭代中,从随机视点渲染场景以生成特征图 z。然后,根据随机扩散步骤 t,对 z 进行噪声处理。对 z 的噪声版本,即
x
t
x_t
xt,使用稳定扩散去噪,并输入文本提示。最后,通过稳定扩散从预测噪声中减去输入噪声,以近似逐像素梯度反向传播到NeRF表示。
LatentNeRF输出4个伪颜色通道 ( c 1 , c 2 , c 3 , c 4 ) (c_1, c_2, c_3, c_4) (c1,c2,c3,c4),分别对应于稳定扩散作用的4个 latent features,以及一个体积密度 σ
由于空间亮度场和渲染方程,使用NeRF隐式地表示场景会在不同视图之间施加空间一致性
Z 可以用NeRF表示并具有空间一致性,Z 中的超像素主要依赖于输出图像中的单个块,潜空间的高分辨率(64 × 64)和低通道深度(4),这鼓励了对自编码器图像和潜空间的局部依赖性
假设Z是其对应的RGB图像的近补丁级表示,使得潜在变量与场景的空间变换几乎相等,这就证明了使用nerf来表示3D场景是合理的
Text Guidance
Latent-NeRF的普通形式是文本引导的,对于场景生成没有其他约束
L
S
D
S
L_{SDS}
LSDS 为Score-Distillation loss。这个损失的确切值是不可获取的,它所隐含的梯度通过通过降噪器的单个前向传递来近似
L s p a r s e = B E ( w b l e n d ) L_{sparse} = BE(w_{blend}) Lsparse=BE(wblend),通过惩罚未定义背景掩码 w b l e n d w_{blend} wblend的二进制熵来防止浮动的“辐射云”,它鼓励对象NeRF和背景NeRF的严格混合(来源于:A pytorch implementation of the text-to-3d model dreamfusion, powered by the stable diffusion text-to2d model)
RGB Refinement
在某些情况下,通过在像素空间中进行微调来进一步完善模型可能是有益的,并使NeRF模型直接在RGB中操作,将在潜空间中训练的NeRF转换为在RGB中操作的NeRF
将MLP的输出从四个潜在通道转换为三个RGB通道,这样当应用到原始模型的渲染潜在时,初始渲染的RGB图像接近解码器输出(来源于:Decoding latents to rgb without upscaling)
通过以下转换,线性近似足以预测给定单个四通道潜在超级像素的可信RGB颜色
通过对RGB图像和它们对应的潜在代码在自然图像集合上计算出来的
添加另一个线性层,该层使用公式3中的权重进行初始化
然后,附加层与模型的其余部分一起进行微调,以创建细化的最终输出
Sketch-Shape Guidance
指导基于粗糙几何的Latent-NeRF生成,称之为Sketch-Shape,是简单3D原语(如球体、盒子、圆柱体等)的抽象粗略对齐,它们共同描绘了一个更复杂物体的轮廓
希望MLP的输出密度与草图形状的输出密度匹配,这样输出的Latent-NeRF结果与输入形状相似
也希望新的NeRF能够创建与输入文本提示相匹配的新细节和几何图形,并提高形状的保真度
鼓励NeRF的占用率与Sketch-Shape的圈数指示器匹配,但在表面附近的重要性逐渐衰减,以允许新的几何形状
占用率应该被很好地限制在远离表面的地方,并且可以通过分数蒸馏在表面附近自由地设置
除了Latent-NeRF损失外,该损失还应用于整个点集 p,该点集被NeRF的体积渲染所使用
d 表示 p 到曲面的距离, σ S σ_S σS 是一个超参数,它控制损失的缓和程度,即 σ S σ_S σS 值越低,意味着对输入Sketch-Shape的约束越严格
仅在采样点集 p 上应用损失,使其更有效,因为这些点已经作为Latent-NeRF渲染过程的一部分进行了评估
Latent-Paint of Explicit Shapes
转向更严格的约束,其中的指导是基于给定形状的精确结构,例如,以网格的形式提供,称之为:Latent-Paint,其为给定的形状生成新的纹理
在UV纹理地图上生成纹理,它可以由输入网格提供,也可以使用XAtlas实时计算
为了给网格上色,首先初始化一个大小为 H × W × 4 的随机潜在纹理图像,其中 H 和 W 可以根据所需的纹理粒度选择,实验中设置为 128
在每次分数蒸馏迭代中,使用可微分渲染器对网格进行渲染,得到一个64 × 64 × 4的特征图,该特征图由潜在纹理图像伪着色,将公式2中的分数蒸馏损失应用于与 Latent-NeRF 相同的方法,不是将损失反向传播到NeRF的MLP参数,而是通过可微渲染器反向传播来优化深层纹理图像,为了得到最终的RGB纹理图像,简单地将潜在的纹理图像通过Stable Diffusion的解码器D传递一次,以获得更大的高质量RGB纹理
实验
使用 HuggingFace Diffusers的稳定扩散,有着 v1-4个checkpoint
分数蒸馏,使用代码库
NeRF基于Instant NGP
latent - nerf 通常需要不到15分钟的时间收敛到单个V100,而使用具有稳定扩散的RGB-NeRF需要大约30分钟,这是由于编码到潜空间的开销增加,DreamFusion在4个tpu上大约需要1.5小时
文章来源:https://www.toymoban.com/news/detail-464498.html
Limitations
为了获得合理的3D形状,使用DreamFusion所使用的相同的“提示调整”,即在输入文本提示中添加方向文本提示(例如,相对于相机的“正面”,“侧面”),该方法应用于某些对象时,这种辅助往往会失败,即使是稳定扩散,当指定所需的方向时,也往往产生不满意的图像
与大多数使用扩散模型的工作类似,结果存在随机行为,因此不同种子之间的结果质量可能有显著差异文章来源地址https://www.toymoban.com/news/detail-464498.html
到了这里,关于84、Latent-NeRF for Shape-Guided Generation of 3D Shapes and Textures的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!