文本生成高精准3D模型,北京智源AI研究院等出品—3D-GPT(文本生成器是什么意思)
北京智源AI研究院、牛津大学、澳大利亚国立大学联合发布了一项研究—3D-GPT,通过文本问答方式就能创建高精准3D模型。
据悉,3D-GPT使用了大语言模型的多任务推理能力,通过任务调度代理、概念化代理和建模代理三大模块,简化了3D建模的开发流程实现技术民主化。
但3D-GPT与现有的文本生成3D模型方法大有不同,生成过程是可以操控函数进行3D建模,而不是常规的3D神经元表征,同时可与Blender(开源三维软件)实现无缝集成。这极大提升了模型的灵活性和准确性。
论文地址:https://arxiv.org/abs/2310.12945
Github(即将发布):https://github.com/Chuny1/3DGPT
随着Meta提出元宇宙概念后,全球对高保真的3D内容需求激增。然而,传统的3D建模流程效率低下,设计师需要从基本形状逐步打造模型,再进行着色、细节处理等工作十分繁琐,而3D-GPT技术框架可有效解决这一痛点。
从论文介绍来看,主要由任务调度代理、概念化代理和建模代理三大块组成。任务调度代理扮演总指挥的角色,根据文本语言指令确定需要调用的建模函数,会查询所有可用函数的文档,选择最合适的对象。
概念化代理用于丰富语言描述的细节,为后续建模做准备。以树木生成为例,用户提供的文字可能仅是“碧绿的树林”,但建模需要更精确的参数如树枝长度、树叶类型等。而概念化代理就会自动补充这些细节,输出丰富的描述以指导建模。
建模代理则需要解析概念化代理输出的语言描述,转换为具体的代码和参数,调用相应函数实现建模。
以天空渲染为例,输入文字可能是“湛蓝的天空”,建模代理就需要推断出太阳强度、云层密度等参数,并写出调用天空渲染函数的代码,最终输出逼真的3D天空。
建模工具
3D-GPT使用了InfiniGen作为基于Python-Blender的过程化生成器。为让大语言模型能够高效利用InfiniGen,研究人员为每个函数Fj提供了提示,包括:
(1)函数文档Dj:详细解释输入参数Pj以及函数的目的和功能。
(2)易读代码Cj:提供容易理解的重构函数代码。
(3)所需信息Ij:概述推理函数参数所需的具体信息,协助理解函数的上下文和先决条件。
(4)使用示例Ej:提供示例演示如何从文本描述中推理参数Pj,以及如何调用函数。
这些资源使大语言模型可以利用其规划、推理和工具使用的核心能力,根据语言指令高效地利用InfiniGen进行3D生成。
在建模工具搭建好之后,3D-GPT采用了一个多代理协作框架,来处理3D建模流程。
任务调度代理
任务调度代理在规划过程中发挥关键作用。通过用户指令查询函数文档,然后选择所需的函数进行执行。
选择函数后,概念化代理进行推理以丰富用户提供的文本描述。最后,建模代理推断每个选定函数的参数,并生成Python代码,调用Blender API接口,促进相应3D内容的创建。
任务调度代理与系统的对话示例如下:
系统:你是根据用户指令选择合适函数的高效规划者。将被提供以下函数:<(F名称j,F用法j)>。以下是如何根据用户指令选择函数的几个示例:<E任务调度j>。
用户:我的指令是:<Li>。
任务调度代理:根据指令<Li>,我们确定了需要用于3D建模的函数子列表ˆF。
概念化代理
描述可能不会明确提供建模所需的详细外观描述。为缓解这一问题,引入了概念化代理,它与任务调度代理协作以增强用户提供的文本描述(Li)。对于每个函数Fj,它会将用户输入文本和相应的函数专属信息进行丰富,生成详细的外观描述Lij。
系统与概念化代理对话格式如下:
系统:你是专业作家,擅长描述对象的外观,特别是大型场景。给定描述<Li>,请提供以下信息所需的详细描述<Ij>。
对于描述中未提及的术语,请发挥想象力,以确保它们与文本描述一致。概念化代理:根据<Li>和请求的信息<Ij>,扩展后的描述是:<cLij>。
建模代理
在概念化之后,3D建模处理目标是将详细的人类语言转换为机器可理解的语言。
在技术框架中,建模代理通过操作程序建模库中的函数来创建逼真的3D模型。对于每个函数Fj和用户指令Li,任务调度代理从概念化代理获得增强上下文 cLij。
对于每个函数Fj,我们都有代码Cj,函数文档Dj和一个用法示例Ej。建模代理利用这些信息选择适当的函数并推断出相应的参数。
随后,建模代理生成准确调用所选函数的Python代码(例如,在循环中调用它,而不是调用它),并使用适当的数据类型正确传递推断的参数给函数。
建模代理遵循以下对话模式:
系统:你是一位优秀的3D设计师,能够将长文本描述转换为参数,并且擅长理解Python函数来操纵3D内容。给定文本描述<cLij>,我们有以下函数代码<Cj>和函数文档<Dj>。
以下是一个关于如何调用函数以使场景符合描述的示例:<E建模j>。理解函数,并通过调用函数建模符合文本描述的3D场景。
建模代理:根据描述<cLij>,将使用以下函数,并采用各自的参数值。
Blender渲染:建模代理最终提供带有推断参数的Python函数调用,这些调用用于Blender节点控制和渲染,从而产生最终的3D网格和RGB结果。
测试数据
研究人员进行了大量实验,结果表明3D-GPT可以根据不同语言描述生成符合要求的3D场景和对象。具体表现如下:
3D-GPT可以根据简要描述生成较大的3D场景,场景内容与描述基本一致。对于单一对象,3D-GPT可以准确捕捉其关键外观特征,实现精细的形状、曲线和属性控制。
3D-GPT能够正确理解工具的功能,获取必要知识,并将其用于精确控制。即使参数与视觉外观无直接关系,也能准确推理参数值。在多步语言指令的场景中,3D-GPT能够充分理解每一步指令,并对场景进行准确修改。