Text-to-3D Generation

1 NeRF-based

1)《Zero-shot text-guided object generation with dream fields》【CVPR 2023】

Project:https://ajayj.com/dreamfields

Device:未公布

前置知识:伪影(Artifacts)是指本不存在却出现在的影像片子上的一种成像。在图像生成领域中,可以理解是合成图片中,不自然的、反常的、能让人看出是人为处理过的痕迹、区域、瑕疵等。

摘要:我们将神经渲染与多模态图像-文本对相结合,仅从自然语言描述中合成不同的三维对象。Dream fields,可以在没有三维监督下生成广泛的几何和颜色的对象。以前的方法由于缺少多种标题的3D数据,只从少数类别中生成对象,如ShapeNet。相反,我们使用预训练的CLIP,从许多相机姿态下优化神经辐射场。为了提高保真度和视觉质量,我们引入了简单的几何先验,包括稀疏诱导的透明度正则化场景边界新MLP架构

贡献:

  • 不需要3D数据监督,或者多视角图像,只使用图像文本对模型(CLIP)来优化NeRF

  • 引入了几种几何先验: sparsity-inducing transmittance regularization, scene bounds, and new MLP architectures

Text-to-3D Generation_第1张图片

方法总体框架如上。对于给定一个文本caption,使用pre-trained CLIP text encoder编码可以得到一个 text embedding, 随意采样一个pose,经过NeRF可以渲染出一个image,这个image经过ViT后得到了一个image embedding,因为一个目标而言的语义是view-independent (“a bulldozer is a bulldozer from any perspective”),所以可以直接用Lclip监督这两个embedding。也就是类似[1],在feature space上计算rendered image和real image的相似度。这里的损失如下:

g(·)和h(·)分别是CLIP的两个encoder,I(θ,p)是给定一个pose后NeRF渲染出的图像,y是文本caption。

在输入多个图像训练时,原始的NeRF的重构损失可以学习去除伪密度这种伪影。但是只用在一个pose下训练时,NeRF的场景表征就太不受约束了,它会生成严重的伪影,这种伪影可以满足,但在人类的视觉系统下是有问题的。见下图,(b)为不加几何先验时的效果,(c)为加入几何先验时的效果。NeRF学习高频和近场伪影,如部分透明的“浮动”密度区域。它还会填充整个图像而不是生成单个目标。总之就是生成的几何是不真实的,尽管其中的纹理信息能能够反映出caption。

Text-to-3D Generation_第2张图片

因此,为了去除近场伪影和伪密度,作者对渲染的不透明度进行正则化。目标是最大限度地使通过物体的光线的平均透射率达到一个目标常数τ。因此总的损失函数如下:

几个tricks:

  • 当渲染在训练过程中使用白色或黑色背景进行alpha合成时,场景会发生扩散现象,作者提出用随机的背景增强会得到相一致的物体。

  • NeRF的损失训练出的场景,目标是在场景中心的。但是Dream Field训练出的场景,目标会在远离场景中心的地方,因为CLIP的训练数据中的自然图像并不总是集中在中心。因此,为了防止物体漂移太远,通过对密度进行掩膜将场景绑定在一个立方体内。

  • 对原始NeRF的MLP结构的优化:使用残差MLP。在残差块中,作者发现在开始时引入layer normalization并增加bottleneck的特征维数是有益的。layer normalization优化了过于透明的区域梯度消失的问题。

[1] Ajay Jain, Matthew Tancik, and Pieter Abbeel. Putting nerf on a diet: Semantically consistent few-shot view synthesis. ICCV, 2021.

2) 《DreamBooth3D: Subject-Driven Text-to-3D Generation》【CVPR 2023】

Author:谷歌

Device:3 hours per prompt on 4 core TPUv4 (4 core $12.88/hour)≈训练一次要花270RMB

Code:未开源

本文的任务是 personalize text-to-3D,就是将DreamBooth[1]和Dreamfusion进行结合,为了实现这样的结合,作者提出了如下的三阶段的优化策略。

Text-to-3D Generation_第3张图片

第一步是利用输入的图像和DreamBooth优化一个NeRF,第二步是利用这个NeRF生成多个视角的图像,最后一步利用这个NeRF和这些数据来优化DreamBooth3D。整体来看,有点A+B的感觉,创新性不高。

[1] Ruiz N, Li Y, Jampani V, et al. Dreambooth: Fine tuning text-to-image diffusion models for subject-driven generation[J]. arXiv preprint arXiv:2208.12242, 2022.

2 Diffusion-based

2.1 Diffusion-based 3D Generation

1)《Dreamfusion: Text-to-3d using 2d diffusion》【ICLR 2023】

Author:Google

Method:NeRF+Pretrained Diffusion。

Code:未开源,因为Imagen未开源。有个用stable-diffusion复现的项目:stable-dreamfusion

Device:1.5 hours per view on one core TPU v4 (4 core $12.88/hour)≈一张视图33块

以文本为条件的生成性图像模型现在支持高保真、多样化和可控的图像合成,高质量来源于大量对齐的图像-文本数据集和可扩展的生成模型架构,如扩散模型。但目前的模型,如DALL-E 2, Imagen等仍然停留在二维创作(即图片),无法生成360度无死角的3D模型。

很多三维生成方法都是基于NeRF模型,比如2022年提出的Dream Fields使用预训练的CLIP模型和基于优化的方法来训练NeRF,直接从文本中生成3D模型,但这种方式生成的三维物体往往缺乏真实性和准确性。

因此,这篇文章中,Dreamfusion与DreamField类似,使用预训练的模型,无需3D数据supervise,从文本生成3D。只不过Dreamfusion使用的是diffusion预训练模型,并且损失函数也与DreamField不一样。本文的损失是基于概率密度蒸馏的,基于扩散的正向过程和由预训练的扩散模型学习到的分数函数,最小化具有共享均值的高斯分布族之间的KL散度。作者称这种方式为Score Distillation Sampling (SDS),可以通过可微图像参数化的优化来实现采样。

Text-to-3D Generation_第4张图片

扩散模型使用的是Imagen[1]。Imagen没有公开,但因为作者是谷歌的,所以可以用Imagen模型,也因此这篇文章并没有公开代码,作者在可复现声明中说可以用其他的conditional diffusion models来实现。

使用的NeRF是Mip-NeRF 360[2]。

具体的做法有以下几步:

1)随机采样一个相机和灯光。在每次迭代中,相机位置在球面坐标中被随机采样,仰角范围从-10°到90°,方位角从0°到360°,与原点的距离为1到1.5。同时还在原点周围取样一个看(look-at)的点和一个向上(up)的矢量,并将这些与摄像机的位置结合起来,创建一个摄像机的姿势矩阵。同时对焦距乘数服从U(0.7, 1.35)进行采样,点光位置是从以相机位置为中心的分布中采样的。使用广泛的相机位置对合成连贯的三维场景至关重要,宽泛的相机距离也有助于提高学习场景的分辨率。

2)从该相机和灯光下渲染NeRF的图像。考虑到相机的姿势和光线的位置,以64×64的分辨率渲染阴影NeRF模型。在照明的彩色渲染、无纹理渲染和没有任何阴影的反照率渲染之间随机选择。

3)计算SDS损失相对于NeRF参数的梯度。通常情况下,文本prompt描述的都是一个物体的典型视图,在对不同的视图进行采样时,这些视图并不是最优描述。根据随机采样的相机的位置,在提供的输入文本中附加与视图有关的文本是有益的。对于大于60°的高仰角,在文本中添加俯视(overhead view),对于不大于60°的仰角,使用文本embedding的加权组合来添加前视图、侧视图 或 后视图,具体取决于方位角的值。

对于几何的正则,作者采用了Dream Field中的密度正则和Ref-NeRF 中的方向损失。

总结:对将diffusion用于Text-to-3D任务做出了有意义的尝试,但未开源,中间一些小的细节可以借鉴。

[1] Chitwan Saharia, William Chan, Saurabh Saxena, Lala Li, Jay Whang, Emily Denton, Seyed Kamyar Seyed Ghasemipour, Burcu Karagol Ayan, S. Sara Mahdavi, Rapha Gontijo Lopes, Tim Salimans, Jonathan Ho, David J Fleet, and Mohammad Norouzi. Photorealistic text-to-image diffusion models with deep language understanding. arXiv:2205.11487, 2022.

[2] Jonathan T. Barron, Ben Mildenhall, Dor Verbin, Pratul P. Srinivasan, and Peter Hedman. Mip-NeRF 360: Unbounded anti-aliased neural radiance fifields. CVPR, 2022.

[3] Dor Verbin, Peter Hedman, Ben Mildenhall, Todd Zickler, Jonathan T. Barron, and Pratul P. Srinivasan. Ref-NeRF: Structured view-dependent appearance for neural radiance fifields. CVPR, 2022.

2)《Magic3D: High-Resolution Text-to-3D Content Creation》【CVPR 2023】

Author:Nvidia,为了对标DreamFusion。

Method:NeRF+Pretrained Diffusion。

Code:未开源

Device:40 minutes on 8 NVIDIA A100 GPUs.

Text-to-3D Generation_第5张图片

动机:Dreamfusion有两个固有缺陷:1)extremely slow optimization of NeRF;2)

low-resolution image space supervision on NeRF, leading to low-quality 3D models with a long processing time.

方法:为了解决这些问题,这篇文章采用了一个coarse-to-fine双阶段优化框架。如下图,第一个阶段使用low-resolution的diffusion prior来优化NeRF,这一阶段与Dreamfusion相似。第二阶段,再使用一个高分辨率的diffusion model再微调这个coarse的模型。思路很straight。整个过程使用的还是Dreamfusion中的SDS损失。

Text-to-3D Generation_第6张图片

结果:速度比Dreamfusion快两倍,同时分辨率也更好。

3)《Score jacobian chaining: Lift ing pretrained 2d diffusion models for 3d generation》

Author:TTI-Chicago + Purdue University

Code:https://github.com/pals-ttic/sjc

Devices: 25 minutes on an A6000 GPU

根据[1],score被定义为对数密度函数的梯度:。其中,密度函数指的是状态为x时的概率:。在此基础上,扩散模型及其变体可以被建模为在σ噪声级别下的去噪分数[2]:。这篇文章的主要动机是,作者将扩散模型看作是一个梯度场预测器,或者也可以说是一个关于数据对数似然的score function。一个自然的问题就是:链式法则能否被用于学习梯度?

一个图像x可以被参数化为一个参数为θ的函数f:。通过雅可比矩阵应用链规则,则可以将图像x上的梯度转换为参数θ上的梯度。将预先训练好的扩散模型与不同的f选择配对可以有许多潜在的用例。对于3D模型的参数θ,将在相机角度π下渲染出的图像的雅克布矩阵J定义为,这样就可以将2D图像上的梯度传递到3D模型的参数θ。也就是,将2D图像上的梯度通过雅克布矩阵整合到3D上,从而生成一个3D asset(参数为θ)。在本文中,作者将3D assert θ参数化为存储在voxels上的NeRf,然后将f看作是一个可微分的的渲染器。

一个技术挑战是在渲染图像上直接评价diffusion model来计算2D score,会引起out-of-distribution (OOD)问题。具体来讲,扩散模型被训练为去噪器,在训练过程中只看到noisy inputs,但我们的方法需要在non-noisy 渲染图像上评价去噪器,所以这就导致了OOD问题。为了解决这个问题,作者提出了一种为non-noisy images估计score的方法:Perturb-and-Average Scoring(PAAS)。

一个扩散模型可以被解释为一个VAE,或一个去噪的score-matcher。本文使用了一个基于DvGO [3]和TensoRF [4]的超参数自定义的体素辐射场[5]。

这篇工作与DreamFusion是concurrent work:一个用Imagen,一个用Stable-diffusion;一个用数学方法寻找图像参数化来最小化训练损失,一个应用链式法则到2D score上。

在FFHQ人脸数据集上训练的denoiser的OOD问题的示例:

Text-to-3D Generation_第7张图片

PAAS算法:

Text-to-3D Generation_第8张图片

因为DreamFusion没有开源,所以作者找了一个第三方实现的版本Stabel-Dreamfusion来进行对比。

Text-to-3D Generation_第9张图片

[1] Aapo Hyvärinen and Peter Dayan. Estimation of non-normalized statistical models by score matching. J. Mach. Learn. Res, 2005. 1, 3

[2] Yang Song, Jascha Sohl-Dickstein, Diederik P Kingma, Abhishek Kumar, Stefano Ermon, and Ben Poole. Score-based generative modeling through stochastic differential equations. In Int. Conf. Learn. Represent., 2021.

[3] Cheng Sun, Min Sun, and Hwann-Tzong Chen. Direct voxel grid optimization: Super-fast convergence for radiance fifields reconstruction. In IEEE Conf. Comput. Vis. Pattern Recog., 2022.

[4] Anpei Chen, Zexiang Xu, Andreas Geiger, Jingyi Yu, and Hao Su. Tensorf: Tensorial radiance fifields. arXiv preprint arXiv:2203.09517, 2022. 2, 5

[5] Alex Yu, Sara Fridovich-Keil, Matthew Tancik, Qinhong Chen, Benjamin Recht, and Angjoo Kanazawa. Plenoxels: Radiance fifields without neural networks. arXiv preprint arXiv:2112.05131, 2021.

4)《3DDesigner: Towards Photorealistic 3D Object Generation and Editing with Text-guided Diffusion Models》【arXiv 2212】

Author:JD Explore Academy

Method:NeRF+Pretrained Diffusion。

Code:未开源

Device:14 days on 8 NVIDIA A100 GPUs

Text-to-3D Generation_第10张图片

3D local editing 启发于Blended diffusion,相对于Blended diffusion在noisy image上编辑具体的区域,本文提出了将操作空间从图像空间转换为噪声空间,因此可以进一步将blended noise反转到text embedding上。

Text-to-3D Generation_第11张图片

Inversion的思想与Textual inversion[1]的思路有些像。

[1] Rinon Gal, Yuval Alaluf, Yuval Atzmon, Or Patashnik, Amit H Bermano, Gal Chechik, and Daniel Cohen Or. An image is worth one word: Personalizing text-to-image generation using textual inversion. arXiv preprint arXiv:2208.01618, 2022.

5)《Let 2D Diffusion Model Know 3D-Consistency for Robust Text-to-3D Generation》【arXiv 2303】

Author:Korea University+NAVER AI Lab

Code:https://ku-cvlab.github.io/3DFuse/

6)《Compositional 3D Scene Generation using Locally Conditioned Diffusion》【CVPR 2023】

Author:斯坦福

Device:10000 denoising iterations with a learning rate of 0.05 on a single NVIDIA RTX A6000

动机:设计复杂的3D场景一直是一个繁琐的手工过程,需要领域的专业知识。最近的text-to-3d的生成模型在这个问题上显示出了巨大的潜力,但现有的方法仅限于对象级的生成。因此这篇文章提出了一种 locally conditioned diffusion 来进行组合式的场景生成。具体的形式是,给定组合好的 user-input bounding boxes三维模型 和对应的 text prompts,生成一个多目标组合的场景,如下所示。

Text-to-3D Generation_第12张图片

方法:其实本篇文章就相当于3D版本的Blended diffusion,bounding box相当于3Dmask,属于mask-based。为了将Blended diffusion应用于3D,作者采用了Dreamfusion的方式来实现,因此≈“Blended diffusion”+“Dreamfusion”。

Text-to-3D Generation_第13张图片

作者是基于text-to-3d方法SJC做的,因为目前只有他们开源了。diffusion用的是stable diffusion。

对于任意一个相机视角,从initial NeRF中渲染一个image,并从3D bounding box中渲染一个图像并进行分割,作为mask(假如有3个prompt,实际上则会有3个mask),在预测噪声的过程中,每一步都分别对每个mask预测噪声,因此最后能在每个mask区域生成prompt对应的图像。最后使用SDS损失去训练NeRF。

Text-to-3D Generation_第14张图片

2.2 Diffusion-based 2D Image editing with masks

1)《Blended diffusion for text-driven editing of natural images》【CVPR 2022】

Mask-based。

Mask-free:《Text-guided mask-free local image retouching》,这个文章一般。

2)《Blended latent diffusion》

3)《High-resolution image editing via multi-stage blended diffusion》

4)《Diffedit: Diffusion-based semantic image editing with mask guidance》

你可能感兴趣的:(论文阅读笔记,Text-to-3D,Diffusion)