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

目录

一、概述

二、相关工作

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模型:

        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。

        四元网格拓扑结构。 

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

参考项目:Deep Imagination Research | NVIDIA 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/922407.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微软正在测试 Windows 11 对第三方密钥的支持

微软目前正在测试 WebAuthn API 更新,该更新增加了对使用第三方密钥提供商进行 Windows 11 无密码身份验证的支持。 密钥使用生物特征认证,例如指纹和面部识别,提供比传统密码更安全、更方便的替代方案,从而显著降低数据泄露风险…

词云图大师(WordCloudMaster): 探索创意无限的词云世界!

在信息化时代,如何以一种新颖且富有创意的方式表达数据、文字或想法?答案是词云图!而词云图大师(WordCloudMaster),正是您的绝佳选择。 无论是个人创意项目,还是专业工作中的数据可视化,词云图大师都能以强…

pycharm使用debug的时候遇到断点不停的问题

1.首先尝试在程序最开头打断点,检查是否能停下,如果可以,看第二步 2.尝试在你打期望停下的代码附近print("1111111")看看是否输出了这个字符串,验证程序确实走到这一步了 3.如果能走到那一步,但是依然没有…

Epipolar-Free 3D Gaussian Splatting for Generalizable Novel View Synthesis 论文解读

目录 一、概述 二、相关工作 1、单场景3DGS 2、跨场景生成3DGS 3、几何方法解决3D任务 三、eFreeSplat 1、预训练跨视角模块 2、无外极线跨视角交互感知模块 3、迭代跨视角高斯对齐 4、高斯参数预测 一、概述 该论文设计了一种不依赖于极线约束的情况实现可推广的新视…

c++视频图像处理

打开视频或摄像头 打开指定视频 /*VideoCapture(const String &filename, apiPreference);filename:读取的视频或者图像序列的名称apiPreference:读取数据时设置的属性*/ VideoCapture video; //定义一个空的视频对象 video.open("H:/BaiduNetdiskDownlo…

青少年强网杯线上ctf-crypto-wp

目录 AliceAES Classics AliceAES 进入环境,给一个key值和一个iv值 意思是,用这两个值AES编码‘Hello,Bob!’,然后把结果输入进去 把key值和iv值带入解得 然后得出flag Classics 题目是下面这个 根据他解码的顺序,反着写出编码顺序 一开…

工具使用_docker容器_crossbuild

1. 工具简介 2. 工具使用 拉取 multiarch/crossbuild 镜像&#xff1a; docker pull multiarch/crossbuild 创建工作目录和示例代码&#xff1a; mkdir -p ~/crossbuild-test cd ~/crossbuild-test 创建 helloworld.c &#xff1a; #include <stdio.h>int main() …

【Linux系统】—— 基本指令(三)

【Linux系统】—— 基本指令&#xff08;三&#xff09; 1 一切皆文件2 重定向操作2.1 初始重定向2.2 重定向的妙用2.3 追加重定向2.4 输入重定向2.5 一切皆文件与重定向结合 3 Linux 中的文件类型4 日志5 「more」命令6 「less」命令7 「head」与「tail」7.1 查看文件开头和结…

搜索引擎中广泛使用的文档排序算法——BM25(Best Matching 25)

在搜索场景中&#xff0c;BM25能计算每个文档与查询的匹配度&#xff0c;从中找出最相关的文档&#xff0c;并按相关性高低排序展示。 要理解BM25&#xff0c;需要掌握以下几个关键概念&#xff1a; 1. 词频&#xff08;Term Frequency, TF&#xff09;&#xff1a;某关键词在文…

Jupyter Notebook的安装和配置提示功能

Python开发环境搭建conda管理环境-CSDN博客 安装anaconda和对接到编译器的教程可以看上面这一篇 Jupyter Notebook是一种交互式计算环境&#xff0c;它允许用户在单个文档中编写和执行代码、方程、可视化和文本。与其他编译器相比&#xff0c;Jupyter Notebook的突出点在于其交…

Oracle SQL*Plus中的SET VERIFY

在 Oracle SQL*Plus 中&#xff0c;SET VERIFY ON 和 SET VERIFY OFF 是两个用于控制命令执行前后显示变量值的命令。这些命令主要用于调试和验证 SQL 脚本中的变量替换情况。 一、参数说明 1.1 SET VERIFY ON 作用&#xff1a;启用变量替换的验证功能。当启用时&#xff0c;S…

【C】错误的变量定义导致sprintf()‌输出错误

问题描述 刚刚写一个用AT指令透传相关的函数&#xff0c;需要用到sprintf()‌拼接字符串。 结果发现sprintf()‌拼接出来的内容是错误的&#xff0c;简化后的代码如下&#xff1a; const char AT_CIPSEND_FIX_LENGTH_HEADER[11] "ATCIPSEND"; // 错误的&#xff0…

【PHP】部署和发布PHP网站到IIS服务器

欢迎来到《小5讲堂》 这是《PHP》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 前言安装PHP稳定版本线程安全版解压使用 PHP配置配置文件扩展文件路径…

Docker安装RabbitMq详细教程

1.1通过Docker pull RabbitMq docker pull rabbitmq 1.2 获取镜像 docker images 注&#xff1a;执行1.3之前请使用以下命令创建docker网络 docker network create tm 1.3运行命令启动参数 docker run \-e RABBITMQ_DEFAULT_USERrabbitmq \-e RABBITMQ_DEFAULT_PASSrabbitm…

华为ENSP--IP编址及静态路由配置

项目拓扑 项目任务 一、基础配置和IP编址 在AR1、AR2、AR3上配置设备名称和IP地址 # AR1配置 [AR1]interface GigabitEthernet 0/0/0 [AR1-GigabitEthernet0/0/0]ip address 10.0.13.1 24 [AR1-GigabitEthernet0/0/0]q [AR1]interface GigabitEthernet 0/0/1 [AR1-GigabitEth…

老北京香酥芝麻饼

宝安石岩上屋大道有一家老北京香酥芝麻饼&#xff0c;不仅很好吃&#xff0c;还分量特别厚实。应该这家老店&#xff0c;在上屋大道很多人知道和吃过。我每周末都会去买回去给家人一起吃。工作日由于上下班&#xff0c;想买也买不了&#xff0c;因为太晚去老板就收摊了。就像早…

对于相对速度的重新理解 - 2

回到先前说的&#xff0c;先令真空光速为标准光速&#xff0c; 光子的绝对速度 范围&#xff0c; 物质粒子的 范围&#xff0c; 这样的话&#xff0c;我们就可以根据 和 &#xff0c;把速度分成3个段&#xff0c; 这样就可以出现速度和它的负值&#xff0c;也就是速度的矢量具…

GWO-SVMD分解 | Matlab实现GWO-SVMD灰狼算法优化逐次变分模态分解

GWO-SVMD分解 | Matlab实现GWO-SVMD灰狼算法优化逐次变分模态分解 目录 GWO-SVMD分解 | Matlab实现GWO-SVMD灰狼算法优化逐次变分模态分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 GWO-SVMD灰狼算法优化逐次变分模态分解 内有15种用以优化svmd的适应度函数&#…

初识Linux—— 基本指令(下)

前言&#xff1a; 本篇继续来学习Linux的基础指令&#xff0c;继续加油&#xff01;&#xff01;&#xff01; 本篇文章对于图片即内容详解&#xff0c;已同步到本人gitee&#xff1a;Linux学习: Linux学习与知识讲解 Linux指令 1、查看文件内容的指令 cat ​ cat 查看文件…

在SQLyog中导入和导出数据库

导入 假如我要导入一个xxx.sql&#xff0c;我就先创建一个叫做xxx的数据库。 然后右键点击导入、执行SQL脚本 选择要导入的数据库文件的位置&#xff0c;点击执行即可 注意&#xff1a; 导入之后记得刷新一下导出 选择你要导出的数据库 右键选择&#xff1a;备份/导出、…