DreamGaussian:用于高效3D内容创建的生成式高斯泼溅
[!abstract]
最近在 3D 内容创建方面的进展主要利用基于优化(optimization-based)的 3D 生成方法,通过得分蒸馏采样(SDS)进行。尽管展示了有希望的结果,但这些方法通常在每个样本的优化过程中速度较慢,限制了它们的实际应用。
在本文中,我们提出了 DreamGaussian,一种新颖的 3D 内容生成框架,同时实现了效率和质量。我们的关键见解是设计了一个生成式的 3DGS 模型,配合了在 UV 空间中进行网格提取和纹理细化。与神经辐射场中使用的占用剪枝(occupancy pruning)相比,我们证明了 3D 高斯的渐进密集化在 3D 生成任务中收敛速度显著更快。为了进一步提高纹理质量并促进下游应用,我们引入了一种将 3D 高斯转换为带纹理 Mesh 的高效算法,并应用了一个微调阶段(fine-tuning stage)来细化细节。
大量实验证明了我们提出的方法具有卓越的效率和竞争力的生成质量。值得注意的是,DreamGaussian 仅通过单视图图像在 2 分钟内生成高质量的纹理网格,相比现有方法实现了约 10 倍的加速。
1 引言
自动化的 3D 数字内容创建(digital content creation, DCC)在各个领域中都有应用,包括数字游戏、广告、电影和元宇宙。 image-to-3D 和 text-to-3D 技术通过显著减少专业艺术家的手工劳动需求,使非专业用户能够参与 3D 资产的创建,提供了重要的优势。
受到 2D 内容生成的最新突破的启发(Rombach 等,2022),3D 内容创建领域经历了快速发展。最近的 3D 创建研究可以分为两个主要类别:仅推理的 3D 本地方法(inference-only 3D native methods)和基于优化的 2D 提升方法(optimization-based 2D lifting methods)。
从理论上讲,3D 本地方法(Jun&Nichol,2023;Nichol 等,2022;Gupta 等,2023)具有在几秒钟内生成一致的 3D 资产的潜力,但需要在大规模 3D 数据集上进行广泛的训练。这些数据集的创建需要大量的人力投入,即使有这些努力,它们仍然面临着与有限多样性和真实性相关的问题(Deitke 等,2023b;a;Wu 等,2023)。
另一方面,Dreamfusion(Poole等,2022)提出了得分蒸馏采样(SDS)来解决3D数据限制的问题,通过从强大的2D扩散模型(Saharia等,2022)中提取3D几何和外观,这激发了最近2D提升方法(Lin等,2023;Wang等,2023b;Chen等,2023b)的发展。为了应对SDS监督引起的不一致性和模糊性,通常采用神经辐射场(NeRF)(Mildenhall等,2020)来建模丰富的3D信息。尽管生成质量不断提高,但由于昂贵的NeRF渲染,这些方法以数小时的优化时间而闻名,限制了它们在实际应用中的规模部署。我们认为,在由模糊的SDS损失监督的生成设置中,用于加速NeRF的占用修剪技术(Müller等,2022;Sara Fridovich-Keil和Alex Yu等,2022)是无效的,与重建设置相反。
在这项工作中,我们介绍了 DreamGaussian 框架,通过在基于优化的流程中优化设计选择,极大地提高了3D内容生成的效率。使用我们的方法,可以在仅2分钟内从单视图图像生成具有明确网格和纹理映射的逼真的3D资产。我们的核心设计是将3DGS(Kerbl等人,2023年)与伴随的网格提取和纹理细化相结合,适应生成设置。 与以前使用NeRF表示的方法相比,这些方法在有效剪枝空白空间方面存在困难,我们的生成GS显著简化了优化景观。具体而言,我们展示了高斯分裂的渐进密度增加,这与生成设置的优化进程高度一致,极大地提高了生成效率。如图1所示,我们的图像到3D流程在几秒钟内迅速生成粗糙的形状,并在单个GPU上在约 500 步内高效收敛。
图 1:DreamGaussian 旨在加速 image-to-3D、text-to-3D 任务的优化过程。我们能够在几分钟内生成高质量的纹理网格。
由于 SDS 监督和空间密集化存在ambiguity(模糊性?),从 3D 高斯生成的结果往往模糊不清。为了解决这个问题,我们确定需要明确地对纹理进行精细处理,这需要从生成的 3D 高斯中提取精细的纹理多边形网格。虽然这个任务以前没有被探索过,但我们设计了一种通过局部密度查询从 3D 高斯中提取网格的高效算法。 然后,我们提出了一种生成式 UV 空间细化阶段来增强纹理细节。鉴于直接应用潜在空间 SDS 损失(如第一阶段)会导致 UV 贴图上过饱和的块状伪影,我们从基于扩散的(diffusion-based)图像编辑方法(Meng 等,2021)中获得灵感,并进行图像空间监督。与以前的纹理细化方法相比,我们的细化阶段在保持高效率的同时实现了更好的保真度。
总结起来,我们的贡献有:
- 我们提出了一种新颖的框架,通过将GS技术应用于生成设置中,显著减少了基于优化的 2D 提升方法的生成时间。
- 我们设计了一种高效的从 3D 高斯中提取网格的算法,并通过 UV 空间纹理细化阶段进一步提高生成质量。
- 在image-to-3D 和text-to-3D 任务上进行了大量实验,证明我们的方法有效地平衡了优化时间和生成保真度,为 3D 内容生成的实际部署开启了新的可能性。
2 相关工作
2.1 3D 表示
已经提出了各种用于不同3D任务的3D表示方法。神经辐射场(NeRF)(Mildenhall等,2020)采用了体积渲染,并且已经在只有2D监督的情况下实现了3D优化,因此变得非常流行。尽管NeRF已经广泛应用于3D重建(Barron等,2022;Li等,2023c;Chen等,2022;Hedman等,2021)和生成(Poole等,2022;Lin等,2023;Chan等,2022),但优化NeRF可能耗时较长。已经尝试了各种加速NeRF训练的方法(Müller等,2022;Sara Fridovich-Keil和Alex Yu等,2022),但这些方法只关注重建设置。常见的空间修剪技术无法加速生成设置。
最近,3DGS(Kerbl等,2023)被提出作为NeRF的替代3D表示方法,在3D重建方面展示了令人印象深刻的质量和速度(Luiten等,2023)。高效的可微渲染实现和模型设计使得能够快速训练,而无需依赖空间修剪。在这项工作中,我们首次将3DGS技术应用于生成任务中,以释放基于优化方法的潜力。
2.2 Text-to-3D 生成
Text-to-3D 生成旨在从文本提示中生成3D资产。最近,基于数据驱动的2D扩散模型在文本到图像生成方面取得了显著的成功(Ho等,2020年; Rombach等,2022年; Saharia等,2022年)。然而,由于策划大规模3D数据集的挑战,将其转化为3D生成是非常困难的。现有的3D本地扩散模型通常只适用于单个物体类别,并且缺乏多样性(Jun&Nichol,2023年; Nichol等,2022年; Gupta等,2023年; Lorraine等,2023年; Zhang等,2023年; Zheng等,2023年; Ntavelis等,2023年; Chen等,2023a年; Cheng等,2023年; Gao等,2022年)。
为了实现开放词汇的3D生成,一些方法提出将2D图像模型提升为3D生成(Jain等,2022年; Poole等,2022年; Wang等,2023a年; Mohammad Khalid等,2022年; Michel等,2022年)。这种2D提升方法通过优化3D表示,在从不同视角渲染时能够在预训练的2D扩散模型中获得较高的可能性,从而可以确保3D的一致性和真实性。以下工作继续增强各个方面,如生成保真度和训练稳定性(Lin 等,2023 年; Tsalicoglou 等,2023 年; Zhu 和 Zhuang,2023 年; Yu 等,2023 年; Li 等,2023 年 b; Chen 等,2023 年 c; Wang 等,2023 年 b; Huang 等,2023 年; Metzer 等,2022 年; Chen 等,2023 年 b),并进一步探索应用(Zhuang 等,2023 年; Singer 等,2023 年; Raj 等,2023 年)。
然而,这些基于优化的 2D 提升方法通常需要长时间进行每个案例的优化。特别地,将 NeRF 用作 3D 表示会导致前向和后向计算的昂贵。在这项工作中,我们选择 3D 高斯作为可微分的 3D 表示,并凭经验证明它具有更简单的优化路径。
2.3 image-to-3D 生成
image-to-3D 生成旨在从参考图像生成 3D 资产。该问题也可以被表述为单视图 3D 重建(Yu 等,2021; Trevithick 和 Yang,2021; Duggal 和 Pathak,2022),但这种重建设置通常会产生模糊的结果,因为缺乏不确定性建模。
text-to-3D 方法也可以用于image-to-3D 生成(Xu 等,2023a; Tang 等,2023b; Melas-Kyriazi 等,2023),使用图像字幕模型(Li 等,2022; 2023a)。最近,Zero-1-to-3(Liu 等,2023b)明确地将相机变换建模为 2D 扩散模型,并实现了零样本图像条件下的新视角合成。当与 SDS 结合使用时,它可以实现高质量的 3D 生成,但仍然受到长时间优化的困扰(Tang,2022; Qian 等,2023)。One-2-3-45(Liu 等,2023a)训练了一个多视图重建模型,以加速生成速度,但代价是降低了生成质量。通过一个效率优化的框架,我们的工作将 image-to-3D 的优化时间缩短到 2 分钟,并在质量上几乎没有牺牲。
3 我们的方法
在本节中,我们介绍了我们的两阶段框架,用于高效生成 3D 内容,适用于image-to-3D 和Text-to-3D 任务,如图 2 所示。
- 首先,我们将 3D GS调整为生成式任务,通过 SDS 进行高效初始化(第 3.1 节)。
- 接下来,我们提出了一种有效的算法,从 3D 高斯中提取纹理网格(第 3.2 节)。
- 然后,通过可微渲染(Laine 等人,2020)进行纹理微调,通过 UV 空间细化阶段(第 3.3 节)进行最终导出。
图 2:DreamGaussian 框架。3D 高斯使用 single-step SDS loss对几何和外观进行高效初始化。然后,我们提取纹理网格,并使用 multi-step MSE loss 来完善纹理图像。
3.1 生成式GS
GS用一组3D高斯表示3D信息。它已被证明在重建环境中非常有效(Kerbl 等人,2023 年;Luiten 等人,2023 年),在与 NeRF 相似的建模时间下,具有较高的推理速度和重建质量。然而,我们还没有探索过以生成式使用它。我们发现3D高斯可以有效地完成3D生成任务。
具体来说,每个高斯的位置可以用一个中心 $\mathbf{x}\in\mathbb{R}^{3}$ 、一个缩放因子 ${\mathrm{s}}\in\mathbb{R}^{3}$ 和一个旋转四元数 $\mathbf{q}\in\mathbb{R}^4$ 来描述。我们还存储了不透明度值 $\alpha\in\mathbb{R}$ 和颜色特征 $\mathbf{c}\in\mathbb{R}^3$,用于体积渲染。球谐函数被禁用,因为我们只想模拟简单的漫反射颜色。 上述所有可优化参数由 $\Theta$ 表示,其中 $\Theta_i={\mathbf{x}_i,\mathbf{s}_i,\mathbf{q}_i,\alpha_i,\mathbf{c}_i}$ 是第 $i$ 个高斯的参数。
- ? 有办法重建高光纹理吗?
要渲染一组 3D 高斯,我们需要将它们作为 2D 高斯投射到图像平面上。然后按前后深度顺序对每个像素进行体积渲染,以评估最终的颜色和 $\alpha$ 值。在这项工作中,我们使用 Kerbl 等人(2023 年)的高度优化渲染器实现来优化 $\Theta$ 。
我们用球体内部的随机位置采样来初始化3D高斯,使用单位缩放且不旋转。在优化过程中,这些3D高斯会定期密集化。 与重建管线不同的是,我们从较少的高斯开始,但为了与生成进度保持一致,我们会更频繁地对其进行密集化。我们沿用了之前研究中推荐的做法(Poole 等人,2022 年;Huang 等人,2023 年;Lin 等人,2023 年),使用 SDS 来优化3D高斯。
每一步,我们都会采样一个围绕物体中心的随机相机姿态 $p$ ,并渲染当前视图的 RGB 图像 $I_{\mathrm{RGB}}^p$ 和透明度 $I_{\mathrm{A}}^p$ 。与 Dreamtime(Huang 等人,2023 年)类似,我们线性减少timestep $t$ ,用于加权添加到渲染 RGB 图像中的随机噪声 $\epsilon$ 。然后,不同的2D扩散先验 $\phi$ 用于指导 SDS 去噪步骤,并反向传播到3D高斯。
Image-to-3D
Image-to-3D:Image-to-3D任务的输入是图像 $\tilde{I}{\mathrm{RGB}}^r$ 和前景遮罩 $\tilde{I}{\mathrm{A}}^{r}$ 。采用 Zero-1-to-3 XL(Liu 等人,2023b;Deitke 等人,2023b)作为2D扩散先验。
SDS loss 可表述为
$$\nabla_\Theta\mathcal{L}{\mathrm{SDS}}=\mathbb{E}{t, p,\epsilon}\left[w (t)(\epsilon_\phi (I_{\mathrm{RGB}}^p; t,\tilde{I}{\mathrm{RGB}}^r,\Delta p)-\epsilon)\frac{\partial I{\mathrm{RGB}}^p}{\partial\Theta}\right]\tag{1}$$
其中
- $w (t)$ 是加权函数
- $\epsilon_{\phi}(\cdot)$ 是 2D扩散先验 $\phi$ 预测的噪声
- $\Delta p$ 是参考摄像机(reference camera) $r$ 的相对摄像机位姿变化。
此外,我们还优化了参考视图图像 $I_{\mathrm{RGB}}^{r}$ 和透明度 $I_{\mathrm{A}}^r$,使其与输入一致:
$$
\mathcal{L}{\mathrm{Ref}}=\lambda{\mathrm{RGB}}||I_{\mathrm{RGB}}^r-\tilde{I}{\mathrm{RGB}}^r||2^2+\lambda{\mathrm{A}}||I{\mathrm{A}}^r-\tilde{I}_{\mathrm{A}}^r||_2^2 \tag{2}
$$
中 $\lambda _{RGB}$ 和 $\lambda _{A}$ 是在训练过程中线性增加的权重。最终损失是上述三项损失的加权和。
Text-to-3D
Text-to-3D的输入是单个文本提示。根据之前的研究,Text-to-3D任务采用Stable-Diffusion(Rombach 等人,2022 年)。SDS 损失可表述为
$$
\nabla_\Theta\mathcal{L}{\mathrm{SDS}}=\mathbb{E}{t,p,\epsilon}\left[w(t)(\epsilon_\phi(I_{\mathrm{RGB}}^p;t,e)-\epsilon)\frac{\partial I_{\mathrm{RGB}}^p}{\partial\Theta}\right]\tag{3}
$$
其中 $e$ 是输入文本描述的 CLIP 嵌入。
3.2 网格提取和纹理细化
我们观察到,即使 SDS 训练迭代时间较长,生成的高斯模型也常常看起来模糊不清,缺乏细节。这可能与 SDS 损失的ambiguity(模糊性)有关。由于每个优化步骤都可能提供不一致的3D指导,因此算法很难像重构那样正确地对重构不足的区域进行密集化处理,或对重构过度的区域进行修剪。根据这一观察结果,我们提出了以下网格提取和纹理细化设计方案。
3.2.1 高效网格提取
多边形网格是一种广泛使用的3D表示方法,尤其是在工业应用中。之前的许多研究(Poole 等人,2022;Lin 等人,2023;Tsalicoglou 等人,2023;Tang 等人,2023a)都将 NeRF 表示导出为基于网格的表示,以进行高分辨率微调。我们还试图将生成的3D高斯转换为网格,并进一步细化纹理。
据我们所知,从3D高斯中提取多边形网格仍是一个尚未探索的问题。由于空间密度是由大量3D高斯来描述的,因此对密集的3D密度网格进行粗暴查询可能会既慢又低效。此外,由于颜色混合仅由投影2D高斯定义,因此如何提取3D外观也不清楚(Kerbl 等人,2023 年)。在此,我们提出了一种高效算法,基于分块局部密度查询(block-wise local density query)和反投影颜色( back-projected color)来提取纹理网格。
局部密度查询
为了提取网格几何图形,需要一个密集的密度 grid 来应用 Marching Cubes 算法(Lorensen & Cline,1998 年)。GS算法的一个重要特点是,过大的高斯将在优化过程中被分割或剪除。这是高效光栅化基于瓦片的剔除技术的基础(Kerbl 等人,2023 年)。我们还利用这一特点来执行分块密度查询。
- 我们首先将 $(−1,1)^3$ 的3D空间划分为 $16^3$ 块,然后剔除中心位于每个局部块之外的高斯。这样就有效减少了每个区块中需要查询的高斯总数。然后,我们查询每个区块内的 $8^3$ 密集网格,最终得到 $128^3$ 密集网格。对于网格位置 𝐱 的每次查询,我们都会对每个剩余3D高斯的加权不透明度进行求和:
$$
d(\mathbf{x})=\sum_i\alpha_i\exp(-\frac{1}{2}(\mathbf{x}-\mathbf{x_i})^T\Sigma_i^{-1}(\mathbf{x}-\mathbf{x_i}))\tag{4}
$$
其中 $\Sigma_i$ 是由缩放 $s_i$ 和旋转 $q_i$ 建立的协方差矩阵。
- 然后使用经验阈值(empirical threshold)通过 Marching Cubes 算法提取Mesh 曲面。在对提取的网格进行后处理时,会应用去细化(Decimation)和重网格化(Remeshing)(Cignoni 等人,2008 年)技术,使其变得平滑。
颜色反投影
由于我们已经获取了网格几何图形,因此可以将渲染后的 RGB 图像反投影到网格表面,并将其烘焙为纹理。
- 我们首先解包(unwrap)网格的 UV 坐标(Young,2021),并初始化一个空纹理图像。
- 然后,我们统一选择 8 个方位角(azimuths)和 3 个仰角(elevations),再加上顶视图和底视图,来渲染相应的 RGB 图像。这些 RGB 图像中的每个像素都可以根据 UV 坐标反投影到纹理图像中。根据 Richardson 等人的研究(2023 年),我们排除了摄像机空间 $z$ 方向法线较小的像素,以避免网格边界处的投影不稳定。这种反投影纹理图像可作为下一个网格纹理微调阶段的初始化图像。
3.2.2 UV 空间纹理细化
图 3:不同的纹理微调目标。我们发现,SDS 损失在 UV 空间纹理优化中会产生假象,而建议的 MSE 损失可以避免这种情况。
由于 SDS 优化的模糊性,从3D高斯中提取的网格通常纹理模糊,如图 3 所示。因此,我们建议采用第二阶段来细化纹理图像。然而,直接使用 SDS 损失对 UV 空间进行微调往往会导致伪影,这在之前的研究中也有观察到(廖等人,2023 年)。这是由于可微分光栅化中使用的 mipmap 纹理采样技术造成的(Laine 等人,2020 年)。在像 SDS 这样模棱两可的指导下,传播到每个 mipmap 层的梯度会导致色块过度饱和。因此,我们需要更明确的引导来微调模糊纹理。
我们从 SDEdit 的 image-to-image 合成(Meng 等人,2021 年)和重建设置中汲取灵感。由于我们已经有了初始化纹理,因此可以从任意相机视角渲染模糊图像 $I_{\mathrm{coarse}}^p$ 。然后,我们用随机噪声对图像进行扰动,并在获得精细图像之前,使用2D扩散对图像进行多步去噪处理 $f_{\phi}(\cdot)$ :
$$
I_{\mathrm{fine}}^{p}=f_{\phi}(I_{\mathrm{coarse}}^{p}+\epsilon(t_{\mathrm{start}});t_{\mathrm{start}},c)\tag{5}
$$
其中
- $\epsilon(t_{\mathrm{start}})$ 是 timestep $t_{start}$ 的随机噪声,
- $c$ 分别是Image-to-3D的 $\Delta p$ 和Text-to-3D的 $e$ 。
- 起始 timestep $t_{start}$ 经过精心选择,以限制噪声强度,从而使精修后的图像在不破坏原始内容的情况下增强细节。
然后,通过pixel-wise MSE loss,使用这种细化图像来优化纹理:
$$
\mathcal{L}{\mathrm{MSE}}=|I{\mathrm{fine}}^p-I_{\mathrm{coarse}}^p|_2^2 \tag{6}
$$
对于Image-to-3D的任务,我们仍然采用公式 2 中的参考视图 RGBA loss。
我们发现,在大多数情况下,只需 50 步左右就能获得良好的细节,而更多的迭代可以进一步增强纹理的细节。
4 实验
略
5 限制与结论
在这项工作中,我们提出了一个 3D 内容生成框架 DreamGausssion,它能显著提高 3D 内容创建的效率。我们工作的主要特点是
- 我们设计了生成式GS管道,可高效生成3D内容。
- 我们提出了一种网格提取算法,可有效地从3D高斯中提取纹理网格。
- 通过纹理微调阶段,我们的工作可在几分钟内从单张图片或文本描述中生成具有高质量多边形网格的即用型3D资产。
限制:我们与以往的Text-to-3D 作品存在共同的问题,多面杰纳斯问题(Multi-face Janus problem)和烘焙照明(baked lighting)。幸运的是,最近在多视角 2D Diffusion Model(Shi 等人,2023;Liu 等人,2023c;Zhao 等人,2023)和潜在 BRDF 自动编码器(Xu 等人,2023b)方面取得的进展可以解决这些问题。此外,在我们的图像-3D结果中生成的后视纹理可能看起来比较模糊。这可以通过延长第 2 阶段的训练来缓解。