3D 生成重建007-Fantasia3D和Magic3d两阶段玩转文生3D

news/2025/1/14 17:59:49/

3D生成重建3D 生成重建007-Fantasia3D和magic3d


文章目录

    • 0 论文工作
    • 1 论文方法
      • 1.1 magic3d
      • 1.2 Fantasia3D
    • 2 效果
      • 2.1 magic3d
      • 2.2 fantasia3d

0 论文工作

  两篇论文都是两阶段法进行文生3d,其中fantasia3D主要对形状和外表进行解耦,然后先对geometry进行生成,在结合几何对texture进行生成。在几何阶段是用DMTet形式进行表示,在纹理阶段使用的是PBR对材质进行表达,因为这篇论文使用的是 传统的渲染管线,本来应该比nerf表示的形式要快一些,但是由于使用了两个步骤的扩散,所以一正负,应该也没优势了,他最大的优势就是可以无缝衔接现有的渲染管线,在下游的任务中可以直接使用,这一点是由于nerf表示的形式的。
  其中Magic3D的两阶段,是先生成一个coarse nerf,提取出mesh在第二阶段进行生成优化提升到高分辨率。不过magic3d生成风格上还是略显不足。但是相比于freamfusion的6464的低分辨率,magic3d提升到512512在高频信息和细节这个点上,magic3d还是提供一个优化思路的。速度上由于粗体低分使用更高效的instantNGP和第二阶段使用的传统渲染的优势,在速度上较dreamfusion还是提升了2倍左右。论文还讨论了使用dreambooth 这个Personalized 文生图扩散模型进行更加细致的3d生成,因为文本的描述是不同图像中的细节丰富。dreambooth3d也是使用想的思路进行的。
  他们的共同的另外一个优势是,因为是最终的形态是以mesh形式表示,所以即使生成更高分辨率的时候计算量也不会比nerf形式的表达增加的多。
  他们在两个阶段都是使用sds损失,这一点上并没有变化。有趣的是,fantasia3d使用的dmtet表达形式是magic3d作者他们组的前期工作,这篇论文时间线也是在magic3d之后,应该又受到magic3d的启发。此前学习magic3d作者的一些其他工作比如GET3D等,膜拜,心向往之。
参考
magic3D
fantasia3d

1 论文方法

1.1 magic3d

请添加图片描述
  这个论文应该是围绕003dreamFusion中提到生成的结果分辨率比较低的问题的一种解答方式。前面虽然提到他的风格问题,但是由于分辨率的提升他的细节确实更加丰富。
  如上图所示,第一个阶段等价于dreamfusion不过它采用的是InstantNGP表达形式(一个更快速的nerf方案),他实在一个低分辨率的阶段进行的,一方面可以节省算力,一方面是因为nerf的表达形式先天具有一个一致性优势,所以在coarse阶段用nerf表达还是能带来很多优势。
  经过第一个阶段对mesh进行提取,采用的是DMtet这种mesh表达形式。在第二阶段中会额外增加了一个编码器在隐空间进行,所以在接下来有利于提升到高分辨率。
整体来说,先用nerf在视角一致性的优势,第二阶段使用mesh管线的速度优势,使得该方法在速度和结果上面都取得一定的效果。

1.2 Fantasia3D

请添加图片描述
如上图所示,fantasia3d采用的是一种解耦的思路,将3d物体解耦为geometry和appearance,然后先进行geometry进行生成,在生成外观。在第一阶段,直接用一个dmtet形式表示一个初始化的球,然后进行渲染,得到mask和法线,将二者输入到扩散模型中进行优化,可以对geometry进行优化。第二阶段是用PBR进行材质标识,然后基于几何进行外表的优化。得益于伦恩使用的PBR表示appearance的形式,他的材质标识结果确实更加真实一些。
比较有意思的点就是论文是将法线和mask作为扩散模型的输入,虽然在controlnet中作者证明了可以使用法线和深度作为条件进行扩散,但是直接用发现作为输入也是很震惊。

2 效果

2.1 magic3d

请添加图片描述

2.2 fantasia3d

请添加图片描述


http://www.ppmy.cn/news/1151638.html

相关文章

Ant Design of React组件引用及路由跳转

Ant Design of React 学习笔记(2) Ant Design of React组件引用及路由跳转,接着笔记(1)继续 这里我们主要3点:1.使用Ant的组件;2,如何引用页面组件;3,路由导航跳转 这是我的目录结…

TypeScript React(上)

目录 扩展学习资料 TypeScript设计原则 TypeScript基础 语法基础 变量声明 JavaScript声明变量 TypeScript声明变量 示例 接口 (标准类型-Interface) 类型别名-Type 接口 VS 类型别名 类型断言:欺骗TS&#xff0c;肯定数据符合结构 泛型、<大写字母> 扩展学习…

c语言之strcmp函数使用和实现

文章目录 前言一、strcmp函数使用二、实现方法 前言 c语言中常用的字符串处理函数strcmp总结。 一、strcmp函数使用 原型 int strcmp ( const char * str1, const char * str2 );strcmp比较两个字符串的大小&#xff0c;一个字符一个字符比较&#xff0c;按ASCII码比较 规定…

汽车RNC主动降噪算法DSP C程序实现

汽车RNC主动降噪算法C程序 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,车载

python 之xml 使用原生xml.dom

一、xml操作 使用xml进行创建<Placemark id"placemark_id"><name>模型</name><Location><longitude>121.6097139799135</longitude></Location> </Placemark>from xml.dom import minidom# 创建一个新的XML文档 do…

pytorch中的池化函数

PyTorch 提供了多种池化函数&#xff0c;用于对输入数据进行不同类型的池化操作。以下是一些常用的 PyTorch 池化函数&#xff1a; 平均池化&#xff08;Average Pooling&#xff09;: nn.AvgPool1d: 一维平均池化。nn.AvgPool2d: 二维平均池化。nn.AvgPool3d: 三维平均池化。 …

Linux友人帐之系统管理与虚拟机相关

一、虚拟机相关操作 1.1虚拟机克隆 虚拟机克隆是指将一个已经安装好的虚拟机复制出一个或多个完全相同的副本&#xff0c;包括虚拟机的配置、操作系统、应用程序等&#xff0c;从而节省安装和配置的时间和资源。 虚拟机克隆的主要用途有&#xff1a; 创建多个相同或相似的虚拟…

走进Spark

什么是Spark 是一个基于内存的&#xff0c;用于大规模数据处理&#xff08;离线计算、实时计算、快速查询&#xff08;交互式查询&#xff09;&#xff09;的统一分析引擎&#xff0c;因为是基于内存的所以可以更快的完成任务 离线计算:离线计算一般存储在HDFS中使用MapReduce或…