当前位置:首页|资讯|编程|OpenAI

游戏建模师直呼失业,OpenAI再放杀器Shap-E:史上最快的文本转3D模型,代码、模型全开源

作者:新智元发布时间:2023-05-10

去年12月,OpenAI曾发布Point-E模型,只需几秒钟即可根据文本生成3D资产,相比竞品模型DreamFusion提速大约600倍。

最近OpenAI再次发布了一款升级模型Shap-E,相比基于点云的显式生成模型Point-E,Shap-E直接生成隐函数的参数来渲染纹理网格和神经辐射场,收敛速度更快,在更高维的多表示输出空间中实现了更好的样本质量!

论文链接:https://arxiv.org/pdf/2305.02463.pdf

代码链接:https://github.com/openai/shap-e

隐式3D生成模型

随着AIGC模型的爆炸式增长,生成式的需求很快就扩散到了其他模态中,如图像、音频、视频等,其中大部分都可以采用固定大小的张量进行表示,不过目前仍然没有一种「高效的3D资产表示方式」。

目前常用的三维资产编码方式主要是隐式神经表征(INRs),将三维坐标映射到特定的位置信息,如密度和颜色。

一般来说,INRs可以被认为是与分辨率无关的,可以在任意的输入点进行查询,而非在一个固定的网格或序列中进行信息编码。由于INRs也是端到端的可微分的,所以可以实现各种下游应用,如风格迁移和可微分的形状编辑等。

在这项工作中,研究人员主要关注两种类型的INRs的三维表示:

1. 神经辐射场(NeRF)将三维场景表示为一个将坐标和观察方向映射到密度和RGB颜色的函数。

NeRF可以通过查询密度和沿摄像机光线的颜色对任意视图渲染,并可以进行训练以匹配三维场景的ground truth渲染。

2. DMTet及其扩展GET3D将一个有纹理的3D mesh表示为一个将坐标映射到颜色、有符号的距离和顶点偏移的函数。

该INR以可微分的方式构建三维三角mesh,然后使用可微分光栅化库进行渲染。

尽管INRs是灵活的、有表现力的,但为数据集中的每个样本获取INRs的过程可能非常耗时耗力,并且每个INR都有大量数字参数,在训练下游生成模型时可能会带来其他难题。

之前有一些工作通过使用带有隐式解码器的自动编码器来获得较小的潜在表征,从而可以直接用现有的生成技术进行建模。

Shap-E结合并扩展了之前的几种方法,从而适用于各种复杂三维隐性表征的条件生成。

与显式三维生成模型Point-E相比,Shap-E模型收敛得更快,并且在共享相同的模型结构、数据集和条件机制的情况下,获得了相似或更高的性能结果。

令人惊讶的是,Shap-E和Point-E在以图像为条件时,成功和失败的案例非常相似,也表明对输出表示的非常不同的选择仍然可以导致类似的模型行为。

不过也可以观察到这两个模型之间的一些质量差异,特别是在直接以文字说明为条件时。

和Point-E一样,Shap-E模型的样本质量虽然比基于优化的文本条件的3D生成方法要差,不过在推理速度上要比其他模型快上几个数量级。

Shap-E

在Shap-E的模型架构设计中,研究人员首先训练一个编码器来生成隐式表征(implicit representation),然后在编码器产生的潜表征(latent representation)上训练扩散模型。

3D编码器

给定一个已知三维资产的稠密显式表征,训练一个编码器来生成隐式函数的参数。

如上图编码器架构所示,给编码器提供点云和三维资产的渲染视图,输出多层感知器(MLP)的参数,将资产表示为一个隐式函数。

点云和输入的视图都是通过交叉注意力机制来处理的,使用Transformer作为主干,生成向量序列的潜表征,其中序列中的每个向量然后通过一个潜在的瓶颈和投影层,其输出被视为所生成的MLP权重矩阵的一行。在训练期间,查询MLP,并将其输出用于图像重建损失或蒸馏损失。

Shap-E只用NeRF渲染目标对编码器进行预训练,因为研究人员在实验中发现这个操作比基于网格(mesh-based)的目标更稳定,而且可以进行优化。

在NeRF预训练之后,Shap-E为Signed distance functions(SDF)和纹理颜色预测增加了额外的输出头(output head),并使用两阶段过程训练这些头。

下图中展示了用两种渲染方法对编码器的不同检查点进行的三维资产的重建。

潜扩散(Latent Diffusion)

对于生成部分,研究人员采用了Point-E的基于Transformer的扩散结构,不过用潜向量序列替代了点云。

潜表征为shape 1024×1024的序列,可以将其作为1024个token的序列送入Transformer,其中每个token对应于MLP权重矩阵的不同行。

因此,该模型在计算上与基本的Point-E模型大致相当(即具有相同的上下文长度和宽度),同时由于输入和输出通道的增加,在一个更高的维度空间中生成样本。

条件策略与Point-E相同:对于图像条件生成,研究人员在Transformer上下文中预置一个256-token的CLIP嵌入序列;对于文本条件的生成,预置一个包含CLIP文本嵌入的单一token

为了支持无分类指导(classifier-free guidance),研究人员在训练期间以0.1的概率将条件信息随机地设置为零。

与Point-E不同的是,Shap-E没有把扩散模型输出作为预测的参数,而是选择直接预测x0,在代数上等同于预测扩散模型,但可以在早期实验中生成更多的一致性样本。

数据集

为了和其他模型进行公平的对比,研究人员选择了和Point-E论文中相同的数据集(具有渲染图、点云和文字说明的大型三维资产数据集),但具体的后处理操作略有变化。

点云计算中,对每个物体渲染了60个实体,而非20个。因为只用20个视图可能会由于盲点导致推断出的点云出现小裂缝。

生成的点云中的点数量从4000个增加到16000个。

在训练编码器渲染视图时,简化了照明和材料,特别是把所有的模型都只用一个固定的照明配置来渲染,只支持漫反射和环境阴影,更方便用可微分的渲染器来匹配照明设置。

对于文本条件模型和相应的Point-E基线,研究人员采用了底层3D资产和文字说明的扩展数据集,从高质量的数据源中又收集了大约100万个3D资产。

此外,还额外标注了12万个资产描述,作为大型数据集下的高质量子集。

在文本到3D模型的训练过程中,当人类提供的标签和原始文本说明都可用时,会在两者之间随机选择一个。

实验结果

编码器评估

研究人员在整个编码器训练过程中主要跟踪两个基于渲染的指标。

1. 评估重建图像和ground-truth渲染图像之间的峰值信噪比(PSNR)

2. 为了衡量编码器捕捉3D资产的语义相关细节的能力,对最大的Point-E模型生成的网格进行编码,并重新评估重建的NeRF和STF渲染的CLIP R-precision

从实验结果中可以发现,蒸馏会降低NeRF的重建质量,但微调可以恢复并略微提高NeRF的质量,同时大幅提高了STF渲染器的质量。

对比Point-E

Shap-E的潜扩散模型与Point-E拥有相同的结构、训练数据集和条件模式,所以与Point-E的对比有助于确定生成隐式神经表征和显式表征之间的影响。

研究人员在一组COCO验证提示上计算CLIP R-precision,并且也在这些相同的提示上评估CLIP分数,以衡量图像生成质量。

在文本条件设置中,可以观察到Shap-E在两个指标上都比Point-E模型有所提高。

从定性对比的样本中可以发现,模型对于相同的文本提示经常质量不同的样本;还可以观察到,文本条件Shap-E在训练结束前的评估开始变差,很可能是由于对文字说明的过度拟合。

与文本条件下的情况不同,图像条件下的Shap-E和Point-E模型达到了大致相同的最终评估性能,Shap-E在CLIP R-precision方面略有优势,在CLIP分数方面略有劣势。

研究人员发现两个模型的失败案例都比较类似,表明训练数据、模型结构和条件图像对所产生的样本的影响要大于所选择的表示空间。

不过仍然观察到两个图像条件模型之间的一些质量上的差异。

比如可以发现Point-E有时会忽略长椅上的小缝隙,而Shap-E则可以完成建模。我们假设这种特殊的差异可能会发生,因为点云对薄的特征或缝隙的表示很差。

还可以观察到,当应用于Point-E样本时,3D编码器稍微降低了CLIP的R-precision

由于Shap-E实现了与Point-E相当的CLIP R-Precision,可以假设Shap-E必须为一些不受编码器瓶颈限制的提示生成质量不同的样本,进一步表明,显式和隐式建模仍然可以从相同的数据和模型架构中学习不同的特征。

参考资料: 

https://github.com/openai/shap-e 

本文来自微信公众号“新智元”(ID:AI_era),编辑:LRS ,36氪经授权发布。


Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1