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

news2024/11/25 14:23:04

目录

一、概述

二、相关工作

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 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2025-2026财年美国CISA国际战略规划(下)

文章目录 前言四、加强综合网络防御(一)与合作伙伴共同实施网络防御,降低集体风险推动措施有效性衡量 (二)大规模推动标准和安全,以提高网络安全推动措施有效性衡量 (三)提高主要合作…

uniapp实现开发遇到过的问题(持续更新中....)

1. 在ios模拟器上会出现底部留白的情况 解决方案: 在manifest.json文件,找到开源码视图配置,添加如下: "app-plus" : {"safearea":{"bottom":{"offset" : "none" // 底部安…

文小言1:

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

Oracle 23ai 对应windows版本安装配置PLSQL导入pde文件navicat连接Oracle

因为有一个pde文件需要查看里面的数据,所以这次需要配置本地oracle数据库,并且导入数据,因为还有navicat,所以就想用navicat去连接查看。 1、找到官网。 Get Started with Oracle Database 23ai | Oracle 2、下载windows版本。…

【热门主题】000062 云原生后端:开启高效开发新时代

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 【热…

Python 版本的 2024详细代码

2048游戏的Python实现 概述: 2048是一款流行的单人益智游戏,玩家通过滑动数字瓷砖来合并相同的数字,目标是合成2048这个数字。本文将介绍如何使用Python和Pygame库实现2048游戏的基本功能,包括游戏逻辑、界面绘制和用户交互。 主…

spf算法、三类LSA、区间防环路机制/规则、虚连接

1.构建spf树: 路由器将自己作为最短路经树的树根根据Router-LSA和Network-LSA中的拓扑信息,依次将Cost值最小的路由器添加到SPF树中。路由器以Router ID或者DR标识。广播网络中DR和其所连接路由器的Cost值为0。SPF树中只有单向的最短路径,保证了OSPF区域内路由计管不…

(二)手势识别——动作模型训练【代码+数据集+python环境(免安装)+GUI系统】

(二)手势识别——动作模型训练【代码数据集python环境(免安装)GUI系统】 背景意义 随着互联网的普及和机器学习技术的进一步发展,手势识别技术开始使用深度学习等方法进行手势识别,如Convolutional Neural…

React的基本知识:事件监听器、Props和State的区分、改变state的方法、使用回调函数改变state、使用三元运算符改变state

这篇教学文章涵盖了大量的React基本知识。 包括: 事件监听器Props和State的区分改变state的方法使用回调函数改变state使用三元运算符改变state处理state中的数组处理state中的object条件渲染 &&条件渲染 三元运算符React中的forms 1. Event Listeners 在…

JavaScript练习——文本与图形

要求实现下面这个效果&#xff1a; 观察图片&#xff0c;我们的需求如下&#xff1a; 准备画布和上下文&#xff1a;在开始绘制之前&#xff0c;需要有一个HTML5 <canvas> 元素&#xff0c;并且获取其绘图上下文&#xff08;context&#xff09;&#xff0c;这是进行绘图…

【线程】线程安全问题及解决措施

【线程】线程安全问题及解决措施 前言一、由“随机调度”引起的线程安全问题1.1现象1.2 原因1.3 解决办法1.4 不当加锁造成的死锁问题 二、由“系统优化”引起的线程安全问题2.1 内存可见性问题 / 指令重排序问题2.2 解决方案 前言 何为线程安全&#xff0c;即某段代码无论在单…

[开源]3K+ star!微软Office的平替工具,跨平台,超赞!

大家好&#xff0c;我是JavaCodexPro&#xff01; 数字化的当下&#xff0c;高效的办公工具是提升工作效率的关键&#xff0c;然而大家想到的一定是 Microsoft Office 办公软件&#xff0c;然而价格也是相当具有贵的性价比。 今天JavaCodexPro给大家分享一款超棒的开源办公套…

【大数据分析机器学习】分布式机器学习

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈智能大数据分析 ⌋ ⌋ ⌋ 智能大数据分析是指利用先进的技术和算法对大规模数据进行深入分析和挖掘&#xff0c;以提取有价值的信息和洞察。它结合了大数据技术、人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&a…

SOL链上的 Meme 生态发展:从文化到创新的融合#dapp开发#

一、引言 随着区块链技术的不断发展&#xff0c;Meme 文化在去中心化领域逐渐崭露头角。从 Dogecoin 到 Shiba Inu&#xff0c;再到更多细分的 Meme 项目&#xff0c;这类基于网络文化的加密货币因其幽默和社区驱动力吸引了广泛关注。作为近年来备受瞩目的区块链平台之一&…

一篇保姆式centos/ubuntu安装docker

前言&#xff1a; 本章节分别演示centos虚拟机&#xff0c;ubuntu虚拟机进行安装docker。 上一篇介绍&#xff1a;docker一键部署springboot项目 一&#xff1a;centos 1.卸载旧版本 yum remove docker docker-client docker-client-latest docker-common docker-latest doc…

Dubbo源码解析-Dubbo的线程模型(九)

一、Dubbo线程模型 首先明确一个基本概念&#xff1a;IO 线程和业务线程的区别 IO 线程&#xff1a;配置在netty 连接点的用于处理网络数据的线程&#xff0c;主要处理编解码等直接与网络数据 打交道的事件。 业务线程&#xff1a;用于处理具体业务逻辑的线程&#xff0c;可以…

前端全栈 === 快速入 门 Redis

目录 简介 通过 docker 的形式来跑&#xff1a; set、get 都挺简单&#xff1a; incr 是用于递增的&#xff1a; keys 来查询有哪些 key: redis insight GUI 工具。 list 类型 left push rpush lpop 和 rpop 自然是从左边和从右边删除数据。​编辑 如果想查看数据…

Python MySQL SQLServer操作

Python MySQL SQLServer操作 Python 可以通过 pymysql 连接 MySQL&#xff0c;通过 pymssql 连接 SQL Server。以下是基础操作和代码实战示例&#xff1a; 一、操作 MySQL&#xff1a;使用 pymysql python 操作数据库流程 1. 安装库 pip install pymysql2. 连接 MySQL 示例 …

编程语言之C++诞生记!

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于C诞生的相关内容&#xff01; 关于【C诞…

核心差异:知识VS文档管理(+工具软件安利)

在讨论知识管理和文档管理时&#xff0c;我们经常会听到这两种说法被混淆使用。然而&#xff0c;它们各自服务于不同的目的&#xff0c;这一点至关重要。 想象一下&#xff0c;你是一名项目经理&#xff0c;面临以下两项任务&#xff1a; 存储最新的项目计划捕捉团队讨论中获…