【1】MVDream: Multi-view Diffusion for 3D Generation

【URL】http://arxiv.org/abs/2308.16512

【Time】2023-08-31

一、研究领域

3D 生成

二、研究动机

提升分数蒸馏方法(利用 pretrained 2D diffusion 生成 3D assets)的 3D 一致性,克服 Multi-face Janus 问题(左)和 Content Drifting 问题(右):

左:“A bald eagle carved out of wood”,鹰有两张脸。右:“a DSLR photo of a plate of fried chicken and waffles with maple syrup on them”,鸡肉逐渐变成了华夫饼。

左:“A bald eagle carved out of wood”,鹰有两张脸。右:“a DSLR photo of a plate of fried chicken and waffles with maple syrup on them”,鸡肉逐渐变成了华夫饼。

作者首先分析了最近的 related works(分别在3D和video生成领域),提出两个假设:

(1)即使是完美的相机条件模型也不足以解决问题,不同视图中的内容仍然可能不匹配。(例如,一只鹰可能会从前视图看向前方,同时从后视图看向右侧,其中只有它的身体符合相机条件。)

(2)3D 生成任务的几何一致性比 video 生成任务的时序一致性更 delicate,并且具有不同的扩散先验(静态场景vs动态场景)

于是提出观点:为 3D 生成任务直接训练一个 multi-view diffusion prior 非常重要,可以利用 3D Dataset 训练一个 multiview diffusion生成静态场景并访问精确的相机参数。

With such observations, we found it important to directly train a multi-view diffusion prior for the 3D generation task, where we could utilize 3D rendered dataset to generate static scenes and have access to precise camera parameters.

三、方法与技术

Insight & Problems

利用 3D 数据集渲染一致的多视图图像来监督扩散模型训练(每组 F 个)。为了继承文本到图像模型的通用性,所以希望尽可能保留 2D 先验模型的架构,并在 text-to-mulitiview 任务上对其进行 finetune。然而,原始的文本到图像模型一次只能生成一张图像,并且不将相机条件作为输入。因此出现三个难点:

(1)如何从相同的文本提示生成一组 consist 的多视角图像

(2)如何将 camera pose condition 添加到文本到图像模型中

(3)如何保持原始扩散模型的 quality 和 generalizability

Insight 概念图

Insight 概念图

Solution

(1)通过将原始 2D 自注意力层修改为 3D 注意力,帮助网络学习多视图一致性并且生成 consist 的图像(即使是在视角间隔非常大的情况下)。此外,修改比合并更容易训练/微调收敛。

(2)使用精确的相机外参矩阵embedding(带两层MLP)作为条件,具体实现为将其作为残差连接到time embedding里,防止其与text语义纠缠,并且帮助精确区分不同视图。

(3)为了保持原始扩散模型的 quality 和 generalizability,除了使用真实的3D渲染数据,还有几个至关重要的因素:

Untitled

为了减小训练难度,在视角的选择上,均匀采样在相同仰角处分布的不同视点;视图数量F仅设置为4;遵循zero123的设定将分辨率设置为256x256;以sd2.1base为基座模型进行微调,以30%概率丢弃条件(3D注意力和camera pose condition),从而联合训练模型的多视角生成能力和保留原始的t2i能力。

Pipeline

预训练:按上述方式在Objaverse数据集上训练这样一个multi-view diffusion model。其通过控制不同的camera pose,能够生成具有多视角一致性的相应视角图片。

推理(NeRF优化):对于text-to-3D生成,在text prompt中仅使用原始文本(不像大部分工作一样附加view text),使用预训练的multi-view diffusion model生成multiview priors,用SDS Loss和一些其它的正则化损失来优化NeRF。对于image-to-3D生成,先用dreambooth做inversion,然后用这样调整后的模型做SDS优化NeRF。

Untitled

四、总结

试过,非常赞,在一致性问题上暴杀其它开源工作。(个人体验)