Edify 3D: Scalable High-Quality 3D Asset Generation 论文解读

embedded/2024/11/27 23:02:09/

目录

一、概述

二、相关工作

1、三维资产生成

2、多视图下的三维重建

3、纹理和材质生成

三、Edify 3D

1、文本生成多视角图像的扩散模型 

2、文本和多视角图像生成法线图像的ControlNet

3、重建与渲染模型

4、多视角高分辨率RGB图像生成

四、训练

1、训练过程

2、网格后处理

3、损失函数

五、数据预处理

六、实验


一、概述

        Edify 3D是一种NVIDIA提出的一种高质量的3D资产生成而设计的高级解决方案,该模型利用扩散模型合成所描述对象的RGB和表面法线图像。然后,多视图的观测结果被用于重新构造物体的形状、4k分辨率的纹理和基于物理的渲染(PBR)材质。Edify 3D可以在2分钟之内生成具有详细几何形状、干净拓扑结构、高分辨率纹理的高质量3D资产。

(1)利用扩散模型和Transformer等先进技术,实现了高质量3D资产的快速生成。

(2)可以在2分钟内生成具有详细几何形状、干净拓扑结构、高分辨率纹理和材质的高质量3D资产。

(3)展现出了出色的可扩展性和生成质量提升能力,随着训练数据的增加,其性能会不断提升。

(4)可以从单个2D图像生成对应的3D模型,并保持多视角一致性,这在文本到3D内容创作中具有重要意义。

二、相关工作

1、三维资产生成

        三维资产生成一般通过三维数据集进行训练,由于三维数据集种类稀缺,近期的方法已经转向大型通用模型或视频数据集来提高泛化性。另外SDS方法广泛应用于三维生成模型领域,但仍然存在Janus face的问题,另外后续考虑先生成具有一致性的多视角图像,再通过多视图图像生成模型来获得三维资产重建,但一致性仍然是一个挑战。

        Janus face是指在三维资产生成过程中,同一资产在不同的应用或环境中存在截然不同的特性或效果,类似于古罗马神话中双面神Janus,一个面朝向过去,一个面朝向未来。

        而在三维资产中,容易存在不同渲染引擎下光照、材质等视觉风格不一致,不同性能设备下的细节效果略有差异等等。

2、多视图下的三维重建

        传统的方法包括SfM,MVS存在耗时,且低质量的效果,基于NeRF的渲染方法需要密集的图像和一定的泛化性才能从辐射场转换为网格。基于Transformer的技术通过学习一定的前馈先验,改进了基于稀疏视图的三维重建。

3、纹理和材质生成

        早期的三维纹理生成包括使用文本对齐的CLIP,SDS损失,另外就是使用将文本嵌入到扩散模型,进行深度条件扩散。另外为了增强真实性,一些方法引入了多视图的PBR建模技术,来扩展材质的特性。

三、Edify 3D

        Edify 3D主要由四个部分组成:文本生成多视角图像的扩散模型,文本和多视角图像生成法线图像的ControlNet,重建与渲染模型,多视角高分辨率RGB图像生成。

1、文本生成多视角图像的扩散模型 

        Edify Image模型(也是NVIDIA提出的),拥有27亿参数的U-Net层,并通过引入Controlnet来合成了文本提示和摄像机姿态信息来生成高质量的RGB图像。

        Edify 3D使用了Edify Image模型作为基础扩散模型,输入文本提示和摄像机姿态来生成多视角的RGB图像。

        下图为Edify Image模型:

3d1c4fee79dc2.png" width="650" />

        Edify Image论文中的效果:

        另外在Edify 3D中引入了中间层跨视角注意力机制,来保证多视角下的一致性。 在后续法线图像和高分辨率图像的生成中是否也同样引入了跨视角注意力机制不太清楚,未提及。

2、文本和多视角图像生成法线图像的ControlNet

        首先冻结上面的扩散模型,以生成的多视图RGB图像作为条件,训练另一个ControlNet编码器,并基于上述扩散模型来扩散多视角表面法线图。

        ControlNet的一个相对简单的理解:冻结原有模型,通过新的输入来控制原有的模型。

        另外Edify 3D也可以摒弃第一步操作,直接进行多视角图像的重建工作(但是这是不是要CLIP对齐一下文本信息?) 

3、重建与渲染模型

        该论文使用一种Transformer为基础的重建模型,其实就是用的LRM模型(害得我自己找对应文献),通过输入多视角图像生成Mesh网格。

        另外他也考虑使用Decoder-only的方法(也是NVIDIA的generate NVS方法,但是他又对不上当前论文中提到的通过生成隐式3D表示,利用SDF体渲染和等值面提取生成3D网格)

        另外PBR(物理基础渲染)属性是通过预测神经SDF和PBR属性来生成的,包括反照率颜色和材质属性(如粗糙度和金属度),PBR属性通过UV映射的方式被backe到纹理和材质贴图中,以实现高质量的3D资产生产。

4、多视角高分辨率RGB图像生成

         首先利用重建好的模型光栅化提取材质和表面法线信息。之后使用上一次的ControlNet的参数冻结,并引入上述得到材质和表面法线信息作为新的条件,输入原始RGB图像,通过基本扩散模型再次生成多视角的RGB高分辨率图像。

        利用多视角的RGB高分辨率图像重新进行重建模型操作,得到高质量的三维资产

四、训练

1、训练过程

(1)在训练过程中,Edify 3D 模型同时训练于自然 2D 图像和 3D 物体渲染图像上,随机选择 1、4 或 8 个视角进行训练。

(2)对于多视角 ControlNet 模型,首先训练基础模型使用多视角表面法线图像,然后添加一个以 RGB 图像为输入的 ControlNet 编码器进行训练,同时冻结基础模型。

(3)在训练过程中,模型会学习从不同数量的视角(4 视角或 8 视角)生成更自然、视角一致性更好的图像。

(4)重建模型的训练使用大规模的图像和 3D 资产数据,通过 SDF 体渲染的方式进行监督,输出包括深度、法线、遮罩、反照率和材质属性等。

(5)为了提高训练质量,模型会对 SDF 的不确定性与渲染分辨率进行对齐,并在损失计算时屏蔽物体边缘区域以避免噪声采样。

(6)最后,模型使用指数移动平均(EMA)的方式聚合最终的重建模型权重,以平滑噪声梯度。

2、网格后处理

        在 Edify 3D 的生成流程中,在多视角 RGB 和法线图像生成之后,会使用一个重建模型来预测神经 3D 表示,即一组潜在的 3D 标记。这一步之后,会进行等值面提取和后续的网格后处理,以获得最终的网格几何形状。

具体的网格后处理步骤包括:

(1)等值面提取:从神经 3D 表示中提取出等值面,得到初步的网格几何。

(2)网格后处理:对初步的网格几何进行进一步的优化和处理,以改善网格质量和细节。这可能包括网格简化、平滑、修复等操作。

3、损失函数

        我们只考虑多出的重建部分的损失:

(1)SDF (Signed Distance Function) 损失:通过SDF体渲染的方式来监督重建模型的输出,包括深度、法线等信息。

(2)材质属性损失:监督重建模型输出的材质属性,如粗糙度、金属度等。

(3)边缘遮罩损失:在损失计算时会对物体边缘进行遮罩,以避免由于锯齿效应造成的噪声样本。

五、数据预处理

1、格式转换

        将所有3D形状转换为统一的格式,包括三角化网格、打包纹理文件以及将材质转换为金属粗糙度格式。同时会丢弃那些纹理或材质存在问题的形状。

2、质量过滤

        从大规模3D数据集中过滤出非物体中心的数据。通过多视角渲染并使用AI分类器来移除部分3D扫描、大场景、形状拼贴以及包含背景和地面等辅助结构的形状。同时还会应用基于规则的过滤来移除明显存在问题的形状,如过于细长或缺乏纹理的形状。

3、标准姿态对齐

        将训练形状对齐到标准姿态,以减少模型训练时的潜在歧义。这一过程也是通过主动学习来实现的,先手动标注少量示例,然后训练姿态预测器,并在整个数据集中寻找难例进行迭代优化。

4、PBR渲染

        使用内部路径跟踪器进行光线追踪渲染,采用多种采样技术来生成具有不同相机参数的图像。一半图像使用固定仰角和内参渲染,另一半使用随机相机姿态和内参渲染,以适应文本到3D和图像到3D两种应用场景。

5、AI 标题

        渲染每个3D形状的一张图像,使用VLM来生成图像的长短描述,并且将3D形状的元数据提供给VLM来增强描述的全面性。

六、实验

        Text to 3D。

        Image to 3D。

3d6f3f.png" width="650" />

        四元网格拓扑结构。 

        利用LLM来生成场景编辑,并将Edify 3D生成的资产摆放到一个场景中。 

参考项目:Deep Imagination Research | NVIDIA 


http://www.ppmy.cn/embedded/141026.html

相关文章

Spring Boot整合Redis Stack构建本地向量数据库相似性查询

Spring Boot整合Redis Stack构建本地向量数据库相似性查询 在微服务架构中,数据的高效存储与快速查询是至关重要的。Redis作为一个高性能的内存数据结构存储系统,不仅可以用作缓存、消息代理,还可以扩展为向量数据库,实现高效的相…

鸿蒙多线程开发——sendable共享容器

1、异步锁机制 在介绍共享容器之前,先介绍异步锁机制。 为了解决多线程并发任务间的数据竞争问题,ArkTS引入了异步锁能力。异步锁可能会被类对象持有,因此为了更方便地在并发实例间获取同一个异步锁对象,AsyncLock对象支持跨线程…

vue3 发送 axios 请求时没有接受到响应数据

<script setup> import Edit from ./components/Edit.vue import axios from axios import { onMounted,ref } from vue// TODO: 列表渲染 //装数据的列表 const list ref([]) const count ref(0) const getList async () > {//通过发送 /list 请求从后端拿到列表数…

LSA详情与特殊区域

LSA是构成LSDB的重要原材料&#xff0c;在OSPF中发挥很大作用。 报文 通用头部 LS age&#xff1a;LSA寿命&#xff0c;0-3600s Options&#xff1a;可选项 LS type&#xff1a;LSA类型&#xff0c;三要素之一 Link State ID&#xff1a;LSAID 三要素之一 Advertising Ro…

卸载snap docker一直卡住:Save data of snap “docker“ in automatic snapshot set #3

在卸载 Snap 安装的 Docker 时卡住&#xff0c;通常是因为 Snap 在执行卸载时会先尝试保存一些快照&#xff08;自动或手动创建的&#xff09;&#xff0c;并且该过程可能因某些原因而卡住。为了解决这个问题&#xff0c;你可以按照以下步骤强制删除 Snap 安装的 Docker&#x…

java操作doc——java利用Aspose.Words操作Word文档并动态设置单元格合并

在实际工作中&#xff0c;如果业务线是管理类项目或者存在大量报表需要导出的业务时&#xff0c;可以借助第三方插件实现其对应功能。 尤其是需要对word文档的动态操作或者模板数据的定向合并&#xff0c;使用Aspose会相对来说容易一些&#xff0c;而且相关文档比较完整&#…

开发一套ERP 第三弹 前端构建

初步确定 差不多就套用 pnpm config set registry https://registry.npmmirror.com/ pnpm 配置国内镜像源

Docker 的优势和劣势分别是什么

Docker 在现代软件开发与部署领域意义非凡&#xff0c;有着多方面的优势。在环境一致性方面表现卓越&#xff0c;软件开发各环节常因环境差异产生兼容性故障&#xff0c;而 Docker 把应用及其依赖封装成容器&#xff0c;无论在哪运行&#xff0c;环境都相同&#xff0c;大大减少…