84、Latent-NeRF for Shape-Guided Generation of 3D Shapes and Textures

简介

论文: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小时
在这里插入图片描述

Limitations

为了获得合理的3D形状,使用DreamFusion所使用的相同的“提示调整”,即在输入文本提示中添加方向文本提示(例如,相对于相机的“正面”,“侧面”),该方法应用于某些对象时,这种辅助往往会失败,即使是稳定扩散,当指定所需的方向时,也往往产生不满意的图像
在这里插入图片描述
与大多数使用扩散模型的工作类似,结果存在随机行为,因此不同种子之间的结果质量可能有显著差异

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值