ECCV`24 | 首次解决文本到3D NeRFs分解问题!港中文等提出DreamDissector

论文链接:https://arxiv.org/abs/2407.16260

亮点直击

  • 据作者所知,作者是第一个解决文本到3D NeRFs分解问题的团队。

  • 为了解决这个问题,本文引入了一个名为DreamDissector的新颖框架,包括一种新颖的神经类别场(NeCF)表示,可以将输入的NeRF分解成独立的子NeRF,一个深度概念挖掘(DCM)技术,通过个性化扩散模型促进子NeRF和概念之间的对齐,以及一个类别分数蒸馏采样(CSDS)损失,利用DCM增强NeCF的学习。

  • 实验结果展示了DreamDissector的有效性,额外的可控编辑应用展示了其在真实场景中的实用性。

最近,文本到3D生成领域取得了显著进展。为了增强其在实际应用中的实用性,关键是生成具有交互作用的多个独立对象,类似于2D图像编辑中的图层合成。然而,现有的文本到3D方法在这一任务上存在困难,因为它们设计用于生成非独立对象或缺乏空间合理交互的独立对象。

针对这一问题,本文提出了DreamDissector,一种能够生成具有交互作用的多个独立对象的文本到3D方法。DreamDissector接受多对象文本到3D NeRF作为输入,并生成独立的纹理网格。为实现这一目标,本文引入了神经类别场(NeCF)来分解输入的NeRF。此外,本文提出了类别分数蒸馏采样(CSDS),由深度概念挖掘(DCM)模块促进,以解决扩散模型中的概念差距问题。通过利用NeCF和CSDS,本文能够有效地从原始场景中导出子NeRF。进一步的优化增强了几何和纹理。本文的实验结果验证了DreamDissector的有效性,为用户提供了控制3D合成在对象级别的新手段,并可能为未来各种创意应用打开了途径。

方法

概览

DreamDissector从文本转3D神经辐射场(NeRF)开始。其目标是将生成的3D NeRF分解为根据NeRF包含的物体类别分开的独立3D资产。为实现这一目标,本文引入了一种称为神经类别场(NeCF)的3D表示。

这旨在将目标NeRF分解为多个子NeRF,同时保持每个物体的原始外观。NeCF受本文新引入的类别分数蒸馏采样(CSDS)监督,这是一种涉及一系列针对子NeRF的特定类别文本提示的分数蒸馏采样(SDS)的方法。随后,这些子NeRF被转换为DMTets进行最终的几何和纹理细化。由于DMTets可以轻松转换为表面网格,DreamDissector最终为每个物体生成独立的表面网格,保留了动作和互动,从而方便人类艺术家进行编辑。本文的DreamDissector框架概述如下图2所示。

神经类别场

为了在目标NeRF中渲染每个分类对象,一个直接的解决方案是为每个对象引入一个子NeRF,例如,一个密度场和一个颜色场。随后,可以使用其密度和颜色场来渲染每个对象。然后,整个NeRF可以通过根据体积渲染的原则组合这些密度和颜色场来渲染:

其中,表示类别的数量。然而,这种方法需要为密度和颜色场训练额外的网络,并需要一个约束损失来保持整个NeRF的外观一致性。

为此,本文提出了一种用概率分布(即类别场)对密度场进行分解以渲染每个类别对象的替代公式。具体来说,上述密度组合可以重新表述如下:

在处理密度时,可以添加一个小的数值以避免除以零的情况。因此,σσ 可以被视为一个概率单纯形,因为它们相加为一,且元素为非负数。受此启发,我们利用具有 softmax 函数的 MLP 直接建模概率单纯形 σσ。设 表示第 i 个点在 3D 空间中属于第 k 个类别的概率:

将T表示为温度,它控制概率分布的尖锐度,是类别场网络的输出。通过类别场,第k个类别对象的颜色可以如下渲染:

可以观察到,每个点的密度σ被类别场pk缩放。换句话说,本文可以将σ解释为第k个类别对象的子NeRF的密度,例如,和σσ。此外,颜色场可以在训练过程中被重复使用并冻结,简化训练过程。

值得注意的是,NeCF的设计具有以下优点:

  • 本文只需要训练一个额外的类别场网络,这比训练额外的密度和颜色场网络更有效率。

  • 由于原始的密度和颜色场网络在训练过程中被冻结,子NeRF的重新组合完全等同于原始的NeRF,保持其原始外观。

类别 分数 蒸馏 抽样

一个朴素的方法。 为了训练NeCF,一个朴素的方法是使用多个SDS损失来监督每个类别的类别字段。具体地,对于第k个类别的对象,其SDS损失的梯度可以被表达为:

这里,表示第k个类别的文本embedding。例如,给定由提示生成的NeRF:"一个v1坐在一个v2上。",用于类别对象的文本提示将是"一个v1"和"一个v2"。这可以很容易地由人类用户或现代LLM完成。需要注意的是,本文在训练NeCF时不需要为整个文本提示使用SDS,除了类别字段网络之外,所有网络都被冻结。

概念差异在扩散模型中。 尽管这种朴素的方法可以处理一些简单的情况,但它无法将具有概念差距的场景从文本描述中分离出来。概念差距指的是完整文本提示生成的对象与类别文本提示生成的对象在2D扩散模型的潜在空间中占据不同区域的差异。

例如,文本提示"一只黑猩猩透过望远镜看。"会生成一个场景,描述一只黑猩猩使用手持望远镜,如下图3左侧(a)所示。相比之下,类别文本提示"一个望远镜"更有可能生成一个三脚架安装的望远镜,因为三脚架安装的望远镜位于提示"一个望远镜"的主导特征空间中,而手持望远镜则位于边缘特征空间中。因此,学习到的NeCF会生成一个带有三脚架的望远镜,三脚架被隐藏在黑猩猩的身体内,如下图3左侧(c)所示。

深度概念挖掘。为了解决这个问题,本文提出挖掘文本提示中的概念,并将其与NeRF中描绘的概念进行对齐,以进行分解,如上图3所示。为此,本文个性化了一个T2I扩散模型,将由NeRF渲染的给定视图去噪,生成描绘一个(或多个)独立对象的图像,在一个(或多个)特定概念的条件下。具体来说,本文首先创建一组包含一个或多个概念的提示。对于每个概念或概念组合,本文通过基于文本的开放词汇分割模型(例如Grounded-SAM 46)为NeRF渲染视图生成相应的分割蒙版。然后,本文利用提示-蒙版对来优化文本embedding和扩散主干,使用带有蒙版注意力的概念挖掘损失 2

在这里,表示第个类别的mask。DCM模块在优化后被冻结,以提供更好的独立文本概念与子NeRF之间的对齐,以便更好地使用CSDS损失进行NeCF训练。冻结的DCM还用于训练DMTet精化模块,如上图2所示。

最终精化。 在训练完NeCF后,本文使用等值面提取技术将子NeRF转换为DMTets,并利用文本embedding和来自DCM的模型对这些DMTets进行微调。其原理是进一步精化可以修复分解产生的伪影,而且DMTets可以轻松转换为表面网格。然而,DCM倾向于在原始NeRF中过度拟合挖掘的概念,导致颜色过饱和和不真实。为了解决这个问题,本文采用原始的稳定扩散方法通过额外步骤对DMTets的颜色进行微调,增强其真实感。最后,DMTets被转换为有纹理的网格。

整体 Pipeline

因此,整个流程包括以下步骤:

  • 从渲染视图中为提示中的每个类别生成mash,并用它们来优化DCM模块。

  • 冻结DCM,并使用CSDS损失训练NeCF网络,将一个NeRF分解为独立对象的子NeRF。

  • 将子NeRF转换为DMTets,并利用优化后的DCM模块对它们进行微调,然后使用原始稳定扩散微调DMTets的颜色以生成最终输出。

实验

结果

主要结果。 定性结果显示在下图4中。对于每种情况,每个对象的两个视图被采样,并且相应的文本提示在补充文件中提供。可以观察到DreamDissector能够有效地解开具有各种复杂交互的输入场景,比如骑行等。值得注意的是,DreamDissector能够处理具有大型和复杂接触表面的情况,如"章鱼弹钢琴"案例中所示,章鱼的触手与钢琴分离开来。此外,最终的网格比输入NeRF中的网格展现出更加真实和高质量的纹理。这种改进归因于最终的精细化处理,进一步展示了DreamDissector的实用性。

比较。 本文将DreamDissector与两个基线方法进行比较:负面提示和一个组合基线。负面提示涉及将整个文本提示作为正面提示,并将独占对象作为负面提示。例如,在提示"一个v1坐在v2上"中,两个对象的正面提示都是整个提示,而对象v1的负面提示是"v2",反之亦然。由于最相关的作品CompoNeRF和Comp3D不是开源的,本文实现了一个具有类似思想的组合基线:分别训练对象,然后通过进一步的微调进行组合。本文在定性和定量上将本文的方法与这些基线进行比较。如下图5所示,DreamDissector明显优于基线方法。此外,本文使用CLIP分数指标评估DreamDissector和基线方法,该指标衡量文本和图像embedding之间的余弦相似性。本文对独立对象和组合对象进行这种评估,并计算平均分数。正如下表1所示,本文的方法明显优于基线方法。

分析

用于分解的DCM. 使用深度概念挖掘(DCM)进行分解。为了评估深度概念挖掘(DCM)在分解NeRF中的有效性,本文与两个基准进行了比较分析:(1)不使用DCM的基础类别分数蒸馏采样(CSDS),以及(2)三维中的NeRFs(SA3D)。

与完全无监督的基础CSDS不同,本文的DCM方法和SA3D都需要一个输入mask来进行单视图处理。正如下图6所示,基础CSDS在处理存在显著概念差异的场景(例如"一只蓝色毒箭蛙坐在一片睡莲上")时很难分解NeRF,其中原始场景主要描绘了睡莲叶。而SA3D虽然成功分解涉及概念差异的场景(如青蛙),但在涉及大量遮挡的更复杂情况下表现不佳,比如比格犬和章鱼等情况。相比之下,DCM展现出卓越的性能,成功分解涉及概念差异和显著遮挡的场景。

DCM用于细化。 DCM不仅用于NeRF的分解,还用于细化DMTets。本文对DCM在这种细化过程中的有效性进行了分析。结果如下图7所示。从(a)可以看出,在分解后仍然存在伪影。由于原始NeRF的不可见接触表面,在分解后出现了"黑洞"。然而,使用原始稳定扩散进行DMTet细化并不能解决这个问题,如(d)所示。这是因为提示"一叠煎饼"通常会生成在煎饼上放水果的图像,因为这些水果在stable diffusion的高密度区域中很常见,如(b)所示。因此,经过微调的DMTet会在黑洞伪影区域产生水果。相比之下,DCM的稳定扩散与输入的煎饼紧密匹配,如第一行所示,在DMTet细化过程中有效修复了伪影,如(e)所示。这进一步展示了DCM的优越性。

对DCM进行消融研究。 本文对DCM的每个组成部分进行了消融研究,包括两阶段训练和mask注意力损失。具体来说,本文使用经过微调的模型从文本提示"一只小兔子坐在一堆煎饼上"中挖掘出"小兔子"概念的图像样本。理想情况下,采样的图像不应包含任何类似于煎饼的概念。如下图8所示,DCM成功提取了"小兔子"概念,而其他训练策略未能将该概念与其他类似于其坐在上面的煎饼的物品分离开。这证明了DCM挖掘独立概念的能力。

Applications

可控纹理编辑。 尽管基于文本引导的纹理生成取得了显著进展,但为具有多个物体的复杂场景生成纹理仍然具有挑战性。本文在三种不同情况下评估了TEXTure,如下图9所示。对于基准情况,本文将多物体网格视为单个实体并应用TEXTure。对于本文的方法,本文将TEXTure分别应用于每个物体的网格,然后将它们组合起来。本文观察到,基准方法生成的纹理与输入提示不匹配,并且质量较低。值得注意的是,独立物体的纹理受到场景中其他物体的影响,例如,老鼠的一部分呈现出红色。相比之下,DreamDissector显著提升了TEXTure的性能,生成视觉上吸引人且准确的纹理。

可控对象替换。 除了可控纹理编辑外,DreamDissector还具有替换单个对象而不影响场景中其他对象的能力。为了实现这一点,目标DMTet在保持其他DMTets固定的同时进行微调。然而,使用基于SDS的监督将DMTet变形为完全不同拓扑结构的对象具有挑战性。受7启发,本文最初将DMTet的法线馈送到stable diffusion中进行多个步骤,有效地变形了DMTet。本文还经验性地观察到,仅微调目标DMTet会引起严重的网格相互穿透。为了解决这个问题,本文引入了一个相互穿透损失,

当中 代表目标 DMTet 的第 i 个顶点时,和分别是 在其他 DMTets 中最近邻顶点的顶点和顶点法线,ϵ 是用于避免相互穿透的小容差超参数。如下图 10 所示的结果表明,DreamDissector 能够实现可控的概念替换。

用户进行几何编辑。 为了进一步验证 DreamDissector 如何促进用户工作流程,本文允许用户单独编辑对象。正如下图 11 所示,通过简单的操作,如缩放、平移和拖动,可以轻松修改对象,从而突显了 DreamDissector 在提高实际应用中人类编辑能力方面的有效性。

结论

本文提出了 DreamDissector,这是一个新颖的框架,旨在生成由文本引导的多个独立交互对象。DreamDissector 接受多对象文本到 3D 神经辐射场(Neural Radiance Field,NeRF)作为输入,并生成多个带纹理的网格。本文引入了神经类别场(Neural Category Field,NeCF),这是一种能够将输入的 NeRF 分解为多个子 NeRF 的表示。为了训练 NeCF,本文提出了类别分数蒸馏采样(Category Score Distillation Sampling,CSDS)损失。此外,本文观察到了 2D 扩散模型中的概念差异问题,这可能会降低分解性能。为了解决这个问题,本文引入了深度概念挖掘(Deep Concept Mining,DCM)来微调文本embedding和 2D 扩散模型,有效地导出子 NeRF。此外,本文提出了一个两阶段的细化过程,进一步改进几何和纹理,从而增强现实感。实验结果和进一步应用展示了 DreamDissector 在现实场景中的有效性和实用性。

参考文献

1 DreamDissector: Learning Disentangled Text-to-3D Generation from 2D Diffusion Priors

相关推荐
雨田哥18 小时前
3D 数字人的成长养成记
3d·数字人·3d数字人·陪伴·数伴·成长养成·3d数伴
天空之城--1 天前
Claude Code 高效开发 Web 2D/3D 完全指南:心法、自定义 Skill 体系与社区技能包实战
前端·3d
清风笑烟语2 天前
rustfs 集群部署
3d
还是大剑师兰特2 天前
Unity 从零搭建简易3D场景(新手分步教程)
3d·unity·游戏引擎
EQ-雪梨蛋花汤2 天前
Android 3D 开发教程(三):Sceneform-EQR 配置 PBR 材质、光照、相机与实时阴影
android·3d·材质
弈语道破AI2 天前
3D渲染不再熬时间!即梦 Seedance 2.5 具备3D白模渲染功能的AI视频生成工具
人工智能·3d·音视频
答案—answer2 天前
VibeCoding 能做到什么程度?我用它做了一座 3D 数字博物馆
3d·ai编程·threejs·vibecoding
3D小将3 天前
3D格式转换之PROE转换为IGS格式技术
3d·格式转换·stl模型·stp模型·迪威模型网
玖玥拾3 天前
Unity3D RPG 入门项目(四)背包拖拽、物品悬浮提示、项目开发思维
3d·unity·游戏引擎
cyadyx4 天前
【Three.js】Three.js 中加载 3D 模型
前端·javascript·3d