斯坦福&UC伯克利开源突破性视觉场景生成与编辑技术,精准描绘3D/4D世界!
文章链接:https://arxiv.org/pdf/2410.16770
项目链接:: https://ai.stanford.edu/˜yzzhang/projects/scene-language/
代码链接:https://github.com/zzyunzhi/scene-language
亮点直击
- 提出了一种场景表示方法,即场景语言,通过程序、词汇和 embeddings 来捕捉视觉场景的结构、语义和身份。
- 提出了一种无需训练的方法,利用预训练语言模型从文本和/或图像中推理表示。
- 提出一个通用渲染模块,将场景语言渲染成图像。
- 在文本和图像条件下的场景生成和编辑任务上获得了实证结果。
总结速览
解决的问题
- 现有的场景图表示方法在生成复杂场景时存在保真度不足的问题,缺乏精确的控制和编辑能力。
提出的方案
- 场景语言:引入了一种新的场景表示方法,通过程序、自然语言词汇和 embeddings 来描述视觉场景的结构、语义和身份。
- 无需训练的推理技术:利用预训练语言模型,从文本和/或图像中推理场景表示。
应用的技术
- 预训练语言模型:用于从文本和图像中推理场景表示。
- 图形渲染器:结合传统、神经网络或混合渲染技术,将场景语言转化为图像。
达到的效果
- 实现了高质量3D和4D场景的自动化生成系统。
- 在场景生成和编辑任务中,场景语言表现出更高的保真度和精确的控制能力。
- 提供了一个通用渲染模块,能够有效地将场景语言渲染成图像。
场景语言
旨在设计一种视觉场景表示方法,以编码场景的结构、语义和视觉内容。为此,提出了场景语言(Scene Language),它通过三个组件来表示场景:一个程序,用于通过指定场景组件(我们称之为实体)的存在和关系来编码场景结构;自然语言中的词汇,用于表示场景中每个实体的语义群组;以及神经 embeddings ,用于通过允许一个富有表现力的输入参数空间来体现实体的低层次视觉细节和身份。在接下来的内容中,将首先给出这种表示方法的正式定义,然后介绍作为其实现的领域特定语言(DSL)。
定义
场景语言作为编程语言
渲染
对于基础的3D表示,我们使用3D高斯散射,其中图像通过将一组3D高斯投影到图像平面上进行渲染;其他可微的3D表示,如神经场,也同样适用。我们的实现基于GALA3D,并使用MVDream和深度条件的ControlNet进行指导。
我们将上述渲染器称为高斯渲染器。其他可能的渲染器包括基于原始图形的渲染器,例如使用立方体、球体和圆柱体等图形原语的Mitsuba;基于资产的游戏引擎,例如Minecraft;以及布局条件的文本到图像(T2I)扩散模型的前馈推理,例如MIGC,通过控制Stable Diffusion的注意力层实现二维边界框条件。下表3展示了总结。
通过预训练语言模型进行推理
语言模型在使用常见编程语言(如Python)进行代码生成方面表现出色。在我们的实现中,提示语言模型生成Python脚本。我们使用输入条件提示语言模型,即文本或图像中的场景描述;从上表2中的DSL转换而来的辅助函数的Python脚本;以及使用辅助函数的示例脚本。我们在所有实验中使用Claude 3.5 Sonnet作为我们的方法和依赖于LM的基线。
应用领域
将前文中的方法应用于文本条件的3D场景生成和编辑、图像条件的场景生成以及4D场景生成任务。
文本条件场景生成
基线。 为了评估所提出的表示方法,将我们的推理流程与使用其他中间表示(例如场景图)的3D场景生成方法进行比较。特别地,将其与GraphDreamer作为示例方法进行比较,该方法通过语言模型提示从输入文本生成场景图,然后在SDS引导下生成基于图的场景。进一步通过将我们的结构表示与基于SDS的渲染器的骨干方法MVDream进行比较,来研究结构表示在此任务中的作用,后者是一种直接的场景生成方法。
结果。 使用基于SDS的渲染器渲染的文本条件场景生成结果如下图4所示。与直接3D场景生成方法MVDream相比,我们的方法具有组合性,并且在涉及多个对象的场景中更紧密地遵循输入提示。与场景图表示相比,其中实体关系被限制为两个对象之间,并且受到自然语言描述粗糙程度的限制,例如“排列成一排”,基于程序的表示提供了更灵活和精确的关系规范,例如下图4中特定的可乐罐排列。这带来了实用的好处,即将涉及复杂实体关系的场景生成的负担从T2I模型(用于我们的方法和GraphDreamer的SDS指导)转移到语言模型上,从而实现准确和详细的生成结果。
为了定量比较我们的方法与基线方法,我们进行了用户研究。在研究中,用户被要求从我们的方法和两个基线方法随机生成的三个动画场景中选择一个与文本提示最为一致的场景。我们还报告了合成场景中对象数量是否正确。如下表4所示,我们的方法在提示对齐方面比基线方法更具优势,并且在计数准确性上有明显的优势。
文本指导的场景编辑
从我们提出的表示方法生成的场景可以通过使用语言模型(LM)和自然语言编辑指令对其先前生成的脚本进行编辑。结果如下图5所示。我们的表示方法为场景编辑提供了一个可解释且直观的界面,因为函数具有与词语相关的明确语义意义,并且函数重用显著提高了程序的可读性。此外,由于程序的结构反映了场景的结构,编辑程序参数会导致场景发生变化,同时保留原有结构,例如下图5中的楼梯的环形排列。涉及多个基本体的理想编辑效果,例如在这个例子中所有楼梯,可以通过在程序空间中进行微小的更改来有效实现。最后,程序结构本身,例如Jenga积木集示例中的函数头,可以进行调整以实现仅影响场景相关部分的局部编辑。
我们的表示方法的组合性直接有利于局部场景编辑。相比之下,前文的MVDream不适用于此任务,因为整个场景是用单一的3D表示进行参数化的。精确编码场景组件的几何关系进一步增强了生成场景的可控性。相比之下,GraphDreamer使用粗略的语言描述来表示场景组件的二元关系,因此不适用于涉及精确几何控制的编辑任务,如上图5中的第一个例子所示。
图像调节场景生成
该表示方法可以用于图像解析和生成与解析后图像结构和内容一致的3D场景。我们通过与下图6中展示的GraphDreamer进行比较来评估我们的表示方法。我们的表示方法明确编码了从输入图像中解析出的语义组件、高层次的场景结构(例如可乐罐的重复)以及视觉细节(如具有特定形状和颜色的玻璃瓶)。我们的方法保留了输入图像的结构和视觉内容。相比之下,GraphDreamer仅从输入图像中重建语义信息;由于中间场景图表示中的信息丢失,它忽略了实体的姿态和身份。
文本调节 4D 场景生成
应用前文中的推理方法来生成4D场景。在此任务中,4D场景表示与公式(1)中的定义相同,只是程序中增加了一个4D实体函数。
允许使用灵活的原始实体集合对于使我们的表示适用于生成不同规模的4D场景至关重要,包括具有活动部件的物体(例如图7中的风力涡轮机)和具有移动物体的场景(例如旋转木马)。具体而言,原始实体的粒度根据所表示的特定场景进行调整,而不是从固定集合中选择(或像场景图那样以对象为中心)。
此外,基于程序的表示所封装的层次化场景结构使得可以紧凑地表示4D场景,作为生成输出的正则化。多个实体,例如图7中旋转木马场景中来自函数horse的输出,可以组合成一个函数horses,从而共享相同的时间变换。为实体分组编写可组合函数有效地降低了时间运动空间的维度,并提高了运动的保真度。
不同的图形渲染器
相同的程序可以用前文中描述的不同渲染器进行渲染,展示了所提出表示方法的多功能性。结果如下图9所示,实验设置与前文相同。
歧视性信息的可视化
如下图8所示,使用所提出的场景语言可以直接获得多种区分性信息:下图8b中的语义图,因为单词表示每个实体的语义;图8c中的实例分割,因为该表示是由可分离的实例组成的;下图8d中的重复实例的对应关系,因为程序指定了场景中存在的重复;以及下图7中显示的4D场景的密集时间对应关系。
结论
本文引入了一种视觉场景表示方法,称为场景语言,它编码了视觉场景的三个关键方面:通过程序指定的场景结构,如层次结构和重复;通过单词简洁概括的个体组件语义;以及通过神经 embeddings精确捕捉的每个组件的身份。将这种表示形式化为使用DSL定义的编程语言。展示了场景语言可以通过预训练的语言模型从文本和图像输入中高效推理。一旦程序执行,生成的场景可以通过多种图形渲染器渲染为图像。与现有方法相比,场景语言能够生成具有显著更高保真度的3D和4D场景,保留复杂的场景结构,并实现轻松和精确的编辑。
本文转自AI生成未来 ,作者:AI生成未来