斯坦福&UC伯克利开源突破性视觉场景生成与编辑技能,精准刻画3D/4D世界! ...

打印 上一主题 下一主题

主题 1793|帖子 1793|积分 5379

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x

文章链接: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)。
界说

场景语言对于场景 ,记作 ,其形式界说如下:

这里, 是天然语言短语的聚集,被称为词语,比方,,如下图 2 所示。 是一个程序,由一组实体函数 组成,并由 索引。每个实体函数 界说了场景中的一个实体类;它由干系联的 唯一标识,简便地总结了界说类的语义含义。每个 将神经 embeddings 映射到场景中的特定实体 ,其中 指定了 的属性和身份,比方棋子的特定颜色,而 指定了其子实体的身份。因此,特定场景 的完整场景语言 还包含一个有序的神经 embeddings 聚集 ,对应于场景 中的 个特定实体 ,其中 是通过将实体函数应用于输入 计算得到的。


关键的是,程序 从三个方面捕捉场景结构。起首,每个实体函数 转换并组合多个子实体(比方,64 个方格)为一个新的、更复杂的实体(比方,一个棋盘),天然反映了场景中的层次结构和部分-团体关系,如上图 2 中的箭头所示。其次,多个实体 可能属于同一个语义类 (比方,方格),因此可以通过复用雷同的实体函数 并使用差别的 embeddings 来表示。最后,每个实体函数还通过指定子实体在组合过程中的相对位置来捕捉其准确的空间结构,比方 64 个方格形成一个 的网格。
接下来,我们将详细说明如何界说 中的函数,然后是计算所表示场景 的程序执行过程。符号在下表 1 中进行了总结。


实体函数界说。 实体函数 输出一个语义类别为 的实体 。函数 担当两个输入:一个 embedding ,用于指定 的身份,以及一个有序聚集 ,其中包含 的所有后代实体的 embeddings。记 为 的 个子实体,其中 是由 确定的常数。那么,我们有 ,其中 和 分别是 的 embeddings和 的后代实体的 embeddings。因此, 递归界说为


其中, 是 的一个子实体, 指定其姿态。这里, 通过两种操纵指定从 个子实体 获取输出 的计算过程: 应用一个依赖于输入的姿态 到子实体 上,将其从其尺度框架转换到 的世界框架中; 将多个子实体组合成一个单一的实体。每个子实体 是通过递归应用实体函数 计算得出的,该函数也使用方程 (2) 界说。比方,设 表示生成上图 2 中棋盘的实体函数(即,)。这个函数 由 64 个雷同类别的子实体 组成,这些子实体通过执行雷同的实体函数 ,但使用差别的 embeddings 和 得到。
程序执行。 为了从场景语言 中获取场景 ,程序执行器辨认出一个根实体函数 ,该函数在 中不依赖于任何其他函数(比方,上图 2 中的 ),并使用第一个 embeddings 和其余 embeddings作为其后代,,来评估这个根函数以得到 。评估 会将计算递归扩展到其子函数 ,如方程 (2) 所界说,从而得到场景中所有实体 的完整序列,其中 。在 中的次序对应于从 开始的计算图的深度优先搜索。上图 2 右侧展示了一个示例计算图。
场景语言作为编程语言

现在通过下表2中指定的领域特定语言(DSL)来具体化前文中的界说。为了在DSL中界说实体函数,我们引入了宏操纵:用于 的 union,在for循环中对实体调用 union 的 union-loop,以及用于 的 transform。我们使用这四个宏操纵和依赖函数的函数调用来界说实体函数。实体函数通过两种特殊形式与DSL中的关联词汇进行辨认:bind,将实体函数 绑定到词汇 ;retrieve,给定 检索 并将 应用于实际的 embeddings参数。如果 从未绑定到一个函数,它对应于没有子实体的实体函数(即,方程(2)中的 ),在这种环境下,调用返回一个没有子节点的原始实体。


实体 (方程(2))的数据类型表示为 Entity。它存储两个数据字段 Word 和 Embedding,分别描述实体的语义组和身份,并将每个子实体及其在 框架中的位置一起存储。特别地,Embedding 捕捉视觉细节,必要一种高度表达的表示,比方神经 embeddings。我们采用OpenCLIP-ViT/H的文本 embeddings空间进行参数化,记为 。它的优势在于 embeddings可以直接从天然语言编码,或通过文本反演从图像推理。上表1总结了与上节符号相对应的表达式和数据类型。
渲染

将所提出的场景表示应用于图像生成任务必要将场景语言 渲染为图像。为此,起首,程序表明器评估 以得到类型为 Entity 的数据对象。随后,图形渲染器将 Entity 数据对象映射到其渲染参数空间,并将其渲染为最终图像。
渲染器规格。我们界说图形渲染器的规格,这是所提表示中的一个模块,如下所示。图形渲染器由原始参数空间 和渲染操纵 确定,其中 是表示姿态的 3D 仿射变换空间, 表示所有可能的子集,而 是渲染图像的空间。为了确定从程序执行输出类型 Entity(下图 3b)到渲染操纵 的可担当输入域(下图 3c)的映射,我们假设访问重参数化函数 ,该函数将从 Tuple[Word, Embedding] 映射到 ,并通过沿实体层次结构中从原始到场景(根)的路径相乘所有矩阵值来计算原始的姿态 ,类似于在活动学树中计算肢体姿态。


渲染器实例化。一个渲染器实例化的例子是使用 Score Distillation Sampling (SDS) 引导,其中 是一个可微的 3D 表示,我们指定 如下。追念一下,一个实体与一个 Word 值干系联,比方,上图 1 和 上3 中的一个雕像的 moai,以及一个 Embedding 值,比方 <z2>。对于每个原始实体(即没有子实体的实体),给定这两个值字段以及其先人的字段,我们使用手动指定的语言模板 ,比方 <z2> moai,风格为 <z1>,在此例中为 3D 模型,将它们 embeddings到 ,其中 是预练习的 CLIP 文本编码器。然后, 对应于 SDS 引导的优化,以在 中找到与输入条件 对齐的解决方案。通过编辑 embeddings,比方控制上图 1 中全局风格的 <z1>,可以个性化输出的 3D 场景。
对于基础的3D表示,我们使用3D高斯散射,其中图像通过将一组3D高斯投影到图像平面上进行渲染;其他可微的3D表示,如神经场,也同样适用。我们的实现基于GALA3D,并使用MVDream和深度条件的ControlNet进行引导。
我们将上述渲染器称为高斯渲染器。其他可能的渲染器包括基于原始图形的渲染器,比方使用立方体、球体和圆柱体等图形原语的Mitsuba;基于资产的游戏引擎,比方Minecraft;以及结构条件的文本到图像(T2I)扩散模型的前馈推理,比方MIGC,通过控制Stable Diffusion的注意力层实现二维边界框条件。下表3展示了总结。


通过预练习语言模型进行推理

我们介绍了一种无需练习的方法,从场景的文本或图像描述中推理表示。如下面所述,我们起首提示一个预练习的语言模型(LM)生成非神经组件,然后通过CLIP文本编码器从文本中获取神经 embeddings,大概通过预练习的文本到图像扩散模型从图像中获取神经 embeddings。
语言模型在使用常见编程语言(如Python)进行代码生成方面表现出色。在我们的实现中,我们提示语言模型生成Python脚本。我们使用输入条件提示语言模型,即文本或图像中的场景描述;从上表2中的DSL转换而来的辅助函数的Python脚本;以及使用辅助函数的示例脚本。我们在所有实验中使用Claude 3.5 Sonnet作为我们的方法和依赖于LM的基线。
在语言模型生成的脚本中,函数参数(数值或字符串标志)使用语言模板和CLIP文本编码器从转换为 embeddings。比方,在原始语言模型输出中,上图2中的白色棋子的函数调用具有输入属性{"color".9,.9,.9)},我们提示语言模型将颜色值描述为一个词,并将该词输入到中以计算。对于图像条件任务,对于的执行输出中的每个根本实体,我们起首使用GroundingSAM分割出与实体干系的词界说的地区。然后,我们使用文本反演优化一个 embeddings,以扩散模型的练习目的重修裁剪后的图像。
应用领域

将前文中的方法应用于文本条件的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场景,保留复杂的场景结构,并实现轻松和准确的编辑。
参考文献

[1] The Scene Language: Representing Scenes with Programs, Words, and Embeddings

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莫张周刘王

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表