以下内容转自机器之心(公众号 ID: almosthuman2014)内容有微调
ProlificDreamer算法为文生3D领域带来重大进展。利用ProlificDreamer,输入文本 “一个菠萝”,就能生成非常逼真且高清的3D菠萝:
给出稍微难一些的文本,比如 “一只米开朗琪罗风格狗的雕塑,正在用手机读新闻”,ProlificDreamer的生成也不在话下:
将Imagen生成的照片(下图静态图)和ProlificDreamer(基于Stable-Diffusion)生成的3D(下图动态图)进行对比。有网友感慨:短短一年时间,高质量的生成已经能够从2D图像领域扩展到3D领域了!
A blue jay standing on a large basket of rainbow macarons
这一切都来源于清华大学计算机系朱军教授带领的 TSAIL团队近期公开的一篇论文《ProlificDreamer: High-Fidelity and Diverse Text-to-3D Generation with Variational Score Distillation》:
论文链接:https://arxiv.org/abs/2305.16213
项目主页:https://ml.cs.tsinghua.edu.cn/prolificdreamer/
在数字创作和虚拟现实等领域,从文本到三维模型(Text-to-3D)的技术具有重要的价值和广泛的应用潜力。这种技术可以从简单的文本描述中生成具体的3D模型,为设计师、游戏开发者和数字艺术家提供强大的工具。
然而,为了根据文本生成准确的3D模型,传统方法需要大量的标记3D模型数据集。这些数据集需要包含多种不同类型和风格的3D模型,并且每个模型都需要与相应的文本描述相关联。创建这样的数据集需要大量的时间和人力资源,目前还没有现成的大规模数据集可供使用。
由谷歌提出的 DreamFusion [1] 利用预训练的2D文本到图像扩散模型,首次在无需3D数据的情况下完成开放域的文本到3D的合成。但是DreamFusion提出的 Score Distillation Sampling (SDS) [1] 算法生成结果面临严重的过饱和、过平滑、缺少细节等问题。高质量3D内容生成目前仍然是非常困难的前沿问题之一。
ProlificDreamer论文提出了Variational Score Distillation(VSD)算法,从贝叶斯建模和变分推断(variational inference)的角度重新形式化了text-to-3D问题。具体而言,VSD把3D参数建模为一个概率分布,并优化其渲染的二维图片的分布和预训练2D扩散模型的分布间的距离。可以证明,VSD算法中的3D参数近似了从3D分布中采样的过程,解决了DreamFusion所提SDS算法的过饱和、过平滑、缺少多样性等问题。此外,SDS往往需要很大的监督权重(CFG=100),而VSD是首个可以用正常CFG(=7.5)的算法。
效果展示
ProlificDreamer可以根据文本生成非常高质量的带纹理的三维网格:
ProlificDreamer可以根据文本生成非常高质量的三维神经辐射场(NeRF),包括复杂的效果。甚至360°的场景也能生成:
ProlificDreamer还可以在给出同样文本的情况下生成具有多样性的3D内容:
传统文生3D的优化算法
给定一个2D图片上预训练好的扩散模型(例如 stable-diffusion),Dreamfusion [1] 提出可以在不借助任何 3D 数据的情况下实现开放域的文到3D 内容(text-to-3D)生成。具体而言,对于一个3D物体,文生3D任务的关键是设计一种优化算法,使得3D物体在各个视角下投影出来的2D图片与预训练的2D扩散模型匹配,并不断优化3D物体。其中,SDS [1] (也称为 Score Jacobian Chaining (SJC) [3]) 是目前几乎所有的零样本开放域文生3D工作所使用的算法。该算法将3D物体视为一个单点(single point),并通过随机梯度下降优化该3D物体,优化目标是最大化该渲染的2D图像在预训练扩散模型下的似然值。值得注意的是,该优化问题的最优解并不等价于从扩散模型中采样。
传统文生3D的优化算法示意图
实验中,所有基于SDS/SJC的方法目前都有一个严重的问题:生成的物体过于平滑、过饱和现象严重,并且多样性不高。例如,开源库threestudio [4] 将目前主流的 text-to-3D工作复现至与原论文可比水平,如下图所示:
由threestuidio [4] 复现的文生3D工作
在此之前,基于2D扩散模型的文生3D仍然与实践落地有较大差距。然而,清华大学朱军团队提出的ProlificDreamer在算法层面解决了SDS的上述问题,能够生成非常逼真的3D内容,极大地缩小了这一差距。
ProlificDreamer 的原理
与以往方法不同,ProlificDreamer并不单纯优化单个3D物体,而是优化3D物体对应的概率分布。通常而言,给定一个有效的文本输入,存在一个概率分布包含了该文本描述下所有可能的3D物体。
给定文本下的3D物体存在一个潜在的概率分布
基于该3D概率分布,我们可以进一步诱导出一个2D概率分布。具体而言,只需要对每一个3D物体经过相机渲染到2D,即可得到一个2D图像的概率分布。
由潜在3D分布可以诱导出一个2D图像分布
因此,优化3D分布可以被等效地转换为优化2D渲染图片的概率分布与2D扩散模型定义的概率分布之间的距离(由 KL 散度定义)。这是一个经典的变分推断(variational inference)任务,因此ProlificDreamer文中将该任务及对应的算法称为变分得分蒸馏(Variational Score Distillation,VSD)。
优化3D分布可以被等效地转换为优化2D图片之间的概率分布
具体而言,VSD的算法流程图如下所示。其中,3D物体的迭代更新需要使用两个模型:一个是预训练的2D扩散模型(例如 Stable-Diffusion),另一个是基于该预训练模型的LoRA(low-rank adaptation)。该LoRA估计了当前3D物体诱导的2D图片分布的得分函数(score function),并进一步用于更新3D物体。该算法实际上在模拟Wasserstein梯度流,并可以保证收敛得到的分布满足与预训练的2D扩散模型的KL散度最小。
VSD的训练流程图
与传统的SDS/SJC算法相比,可以发现VSD仅仅需要把原来的高斯噪声项换成LoRA项即可。由于LoRA 提供了比高斯噪声更精细的更新方向(例如,LoRA可以利用文本y、相机视角c、扩散时间t等的先验信息),VSD在实践中可以得到远超SDS的精细结果。并且,论文作者提出,SDS/SJC实际上是VSD使用一个单点Dirac分布作为变分分布的特例,而VSD扩展到了由LoRA定义的更复杂的概率分布,因此可以得到更好的结果。此外,VSD还对监督权重(CFG)更友好,可以使用与2D扩散模型一样的监督权重(例如stable-diffusion常用的CFG=7.5),因此可以达到和2D扩散模型类似的采样质量。这一结果首次解决了SDS/SJC中的超大CFG(一般为 100)的问题,也同时说明VSD这种基于分布优化的思想与预训练的2D扩散模型更适配。
SDS/SJC与VSD的更新公式对比
最后,ProlificDreamer还对3D表示的设计空间做了详细的研究,提出了如下实现。在实践中,VSD可以在512渲染分辨率的NeRF下训练,并极大地丰富了所得到的3D结果的纹理细节。
ProlificDreamer与其它工作的实现细节比较
参考文献
[1] Ben Poole, et al., DreamFusion: Text-to-3D using 2D Diffusion.https://arxiv.org/abs/2209.14988
[2] Chitwan Saharia, et al., Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding. https://arxiv.org/abs/2205.11487
[3] Haochen Wang, et al., Score Jacobian Chaining: Lifting Pretrained 2D Diffusion Models for 3D Generation. https://arxiv.org/abs/2212.00774
[4] Yuan-Chen Guo, et al., threestudio: A unified framework for 3D content generation. https://github.com/threestudio-project/threestudio/
[5] https://mp.weixin.qq.com/s/vr5Pw6rc36PwQbP7j9vQYg
[6] https://mp.weixin.qq.com/s/B68hXlFxA9L5jiWiMrEEiA
版权声明 | 文章整理自网络,仅供学习参考,版权归属原作所有
如有问题,请及时与我们联系,我们将第一时间做出处理