[CVPR-23-Highlight] Magic3D: High-Resolution Text-to-3D Content Creation

2023-11-14

目录

Abstract

Background: DreamFusion

High-Resolution 3D Generation

Coarse-to-fine Diffusion Priors

Scene Models

Coarse-to-fine Optimization

NeRF optimization

Mesh optimization

Experiments

Controllable 3D Generation

Personalized text-to-3D

Prompt-based editing through fine-tuning


Abstract

  • DreamFusion是目前基于文本的3D生成任务的主流方法,但它有两个重要缺陷:1)NeRF收敛速度慢;2)用于监督NeRF训练的图片质量较差,导致生成的3D目标质量较差。
  • 对于上述两个问题,本文提出:1)用Instant-NGP替换DreamFusion中的NeRF;2)提出一中两阶段Coarse-to-fine的优化方法,第一步:基于Instant NGP表示低分辨率的3D物体,通过eDiff-I计算L_SDS,更新NeRF;第二步:用DMTet提取初始3D mesh,其次采样和渲染高分辨率图片,并和第一步类似,更新3D mesh。
  • 相较于DreamFusion,Magic3D速度从1.5h较低到40m;同时在User Studies中,61.7%的用户认为Magic3D的生成效果更好。

Background: DreamFusion

DreamFusion是一种text-to-3D的生成方法,由两个关键部分组成:1)目标的神经场表示;2)预训练text-to-image扩散生成模型。通常,神经场是一个参数化函数:x = g($\theta$),给定相机位姿,渲染对应的图片x,其中,g是体渲染,theta是coordinate-based MLP。

扩散模型\phi,包含去噪函数\epsilon(x_t; y, t),其中有预测噪声\epsilon,噪声图像x_t,噪声等级t和文本编码y。扩散模型提供了更新\theta的梯度方向:所有的渲染图像均被推到文本相关的高概率密度区域(all rendered images are pushed to the high probability density regions conditioned on the text embedding under the diffusion prior)。具体来说,DramFusion提出了Score Distillation Sampling (SDS):

其中,w(t)是权重函数。在实际应用时,常用classifier-free guidance,可以控制text conditioning的强度。

DreamFusion使用Mip-NeRF 360和Imagen。这有两个关键限制:1)无法获得高分辨率几何和纹理;2)现有的Mip-NeRF计算开销很大。

High-Resolution 3D Generation

  • Magic3D是一个两阶段coarse-to-fine框架。

Coarse-to-fine Diffusion Priors

  • Magic3D在coarse-to-fine中,有两个不同的扩散先验。在第一阶段,本文使用eDiff-I,可以在64 x 64低分辨率情况下,计算场景模型梯度;在第二阶段,本文使用Stable Diffusion,可以在高分辨率情况下反传梯度。尽管生成了高分辨率图像,SD的计算开销是可控的,因为扩散先验是作用在z_t上,而z_t的分辨率只有64 x 64。

Scene Models

  • 在粗场景中,使用Instant NGP,NeRF可以平滑连续地处理拓扑学上的改变。
  • 在细场景中,为减少计算开销,本文使用textured 3D meshes。使用NeRF作为mesh几何的初始化,可以有效避免mesh中大拓扑变化较难学习的问题。

Coarse-to-fine Optimization

NeRF optimization

  • 与Instant NGP类似,本文用20初始化分辨率为256^3的occupancy grid,鼓励形状变化。每10 iter更新一次grid,并为可跳过的空白区域建立八叉树。在每次更新中,occupy grid降低0.6。
  • 与Instant NGP不同,本文用MLP预测normals。
  • 与DreamFusion类似,本文用MLP建模背景,输入为射线方向,预测RGB颜色。

Mesh optimization

  • 将coarse density field减去一个非零整数,产生初始SDF s_i。同时,本文海基于粗阶段的color field直接初始化了volume texture field。
  • 在优化阶段,本文用可导的光栅器将提取的surface mesh渲染为高分辨图片。对每个vertex,本文基于SDS梯度,同时优化s_i和delta_v_i。当渲染mesh为图片时,本文同时跟踪每个投影像素的3D坐标,用于在texture field中查询对应颜色,使梯度回传时同时优化texture field。
  • 当渲染mesh时,本文增加focal length,聚焦于目标细节。使用粗阶段中学习的environment map产生背景,使用可导的抗锯齿方法(antialiasing)合成前景与背景。
  • 为了鼓励表面平滑,本文对mesh上的不同相邻面的角度进行约束。

Experiments

本文在397个文本提示词上和DreamFusion进行比较。

Speed evaluation. 在8块A100上,coarse stage训练5000 iter,大概训练15分钟;fine stage训练3000 iter,大概训练25分钟。

Qualiatative comparisons

User studies. 在Amazon MTurk平台上,每个prompt由3个不同的users比较,共1191对比较。

 

Can single-stage optimization work with LDM prior?  

Coarse models vs. fine models.

Controllable 3D Generation

Personalized text-to-3D

基于Dreambooth fine-tune eDiff-I和LDM,将目标与[V]绑定。随后在计算SDS时,将[V]加入到文本提示词中。

Prompt-based editing through fine-tuning

(a)基于base prompt训练粗模型;

(b)修改base prompt,使用LDM fine-tune粗模型;

(3)基于修改的文本提示词,优化mesh。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[CVPR-23-Highlight] Magic3D: High-Resolution Text-to-3D Content Creation 的相关文章

  • 使用 Scenform 将 SceneView 加载到片段中后出现黑屏

    我正在开发一个项目 该项目将在一个片段中包含 3D 模型查看器 为了做到这一点 我决定使用 sceneform 在尝试在我的选项卡片段中显示 SceneView 后 我遇到了 SceneView 的问题 一切都是根据示例和 scenefor
  • Python openAL 3D 声音

    我刚刚开始使用 python 正在制作音频操作程序 我正在尝试在我的 python 应用程序中使用 openAL 实现 3D 声音 但我只能让它工作 这是我的 3D 声音代码 from openal loaders import load
  • 如何插值旋转?

    我有两个描述旋转的向量 起始旋转 A 和目标旋转 B 我如何最好地通过因子 F 对 A 进行插值以接近 B 当需要插值多个维度时 即产生不需要的旋转 在向量上使用简单的 lerp 不起作用 也许从旋转向量构建四元数并使用Slerp http
  • 使用相机将 3D 透视投影到 2D 屏幕上的基本渲染(无需 opengl)

    假设我有一个如下的数据结构 Camera double x y z ideally the camera angle is positioned to aim at the 0 0 0 point double angleX angleY
  • R - hist3D 序列颜色和标签问题

    所以我有一个 5 行 20 列的数据集 我正在尝试绘制一个hist3D来自plot3D包裹 dt structure c 1 1 1 3 1 2 1 0 2 1 2 1 0 1 1 0 1 0 2 2 1 1 1 1 4 4 1 1 2 3
  • 给定表面法线,找到 3D 平面的旋转

    所以我有一个由 2 个向量描述的 3D 平面 P 位于平面上的点N 平面的表面法线 我有一个非常大的扁平方形多边形 我想渲染它来代表这个平面 我可以轻松地将多边形平移到给定点 但随后我需要找到适当的旋转来应用以使表面法线实际上成为表面法线
  • CSS3“曲面”3D 变换/透视帮助

    我正在尝试为我的网站创建一种有观点的人群 它实际上是一个充满平面图像的 ul 我想创建一种 弯曲 的感觉 就像圆形的人群一样 它向内并且向内明显变小 并向末端弯曲 海报圈的例子是我能找到的最接近的http www webkit org bl
  • 如何计算逆运动学[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想知道如何使用逆运动学计算旋转角度 我计划将其用于实时 3D 动画 有人知道一些详细介绍具体解决方案的好文献吗 以下资源调查了逆运动学问题的一些流行
  • 基于 Q3DScatter 的自定义图表,QCustom3DItem 运行缓慢

    我想制作一个带条形的 3D 图表 条形颜色取决于其大小 两个都Qt 条形图和散点图类型 https doc qt io qt 5 qtdatavisualization overview html接近我正在寻找的东西 我最终创建了一个基于的
  • 编写每个三角形/面具有纯色的 GLSL 片段着色器的方法

    我有顶点和三角形数据 其中包含每个数据的颜色triangle 面 不是每个顶点 即单个顶点由多个面共享 每个面可能具有不同的颜色 我应该如何在 GLSL 中解决这个问题以获得每个的纯色分配face正在渲染 通过平均顶点相邻多边形的颜色来计算
  • 如何在SceneKit中实现逼真的景深效果?

    我正在尝试渲染具有真实景深效果的帧 我已经尝试过景深属性camera节点 但它不会产生可用的结果 是否可以切换到景深效果的最大渲染质量 性能不是一个因素 我只需要渲染一帧 用户可以等待它 SceneKit 中逼真的景深效果 在SceneKi
  • Direct3D 中的矩阵多阶

    关于在 Direct3D 中乘法矩阵以获得结果 我收到了两个相互矛盾的答案 教程确实规定从左到右相乘 这很好 但这不是我想象的方式 这是一个例子 OpenGL 从上到下阅读 GLRotatef 90 0f GLTranslatef 20 0
  • OpenGL Z 偏置(多边形偏移)限制

    我有两个共面的多边形 我尝试做 glEnable GL POLYGON OFFSET FILL glPolygonOffset 0 1 并期望其中一个明显 位于 另一个之上 这种情况直到大约 70 75 个单位之外 近剪裁平面为 1 远剪裁
  • 如何将 3D 图像输出到 3D 电视?

    我有一台 3D 电视 如果我不至少尝试让它显示我自己创作的漂亮 3D 图像 我就会逃避我的责任 作为一个极客 我之前已经完成了非常基本的 OpenGL 编程 因此我了解所涉及的概念 假设我可以为自己渲染一个简单的四面体或立方体并使其旋转一点
  • 在 Three.js 中将贝塞尔曲线转换为平面道路

    我试图根据之前计算得到的一些贝塞尔曲线在 Three js 中绘制一条弯曲的道路 问题是我找不到转换曲线序列的方法 一条从上一条曲线的末尾开始 到一个曲面 我有一个 3D 场景 其中有一些汽车 一条用飞机创建的道路 并且绘制了即将到来的道路
  • 判断一个点是否在多面体内部

    我试图确定某个特定点是否位于多面体内部 在我当前的实现中 我正在研究的方法采用我们正在寻找多面体面的数组 在本例中为三角形 但稍后可能是其他多边形 的点 我一直在尝试根据这里找到的信息进行工作 http softsurfer com Arc
  • 将大块位图转换为 3 维位图

    Problem 我需要这个大量的数据作为输入 对于基于C的arduino 这是上面示例中所需格式的大量数据 const byte bitmap 8 8 0xFF 0x81 0x81 0x81 0x81 0x81 0x81 0xFF 0x81
  • 简单的线框格式?

    我正在寻找一种用于线框模型的简单文件格式 我知道 VRML u3D 等 但这些对于我的需求来说似乎很重要 我的标准是 必须有明确的规格 要么是开放的 要么是非常完善 记录的 我只需要 想要 简单的模型 顶点和边 我不想处理面孔或物体 如果格
  • GL_CULL_FACE使所有对象消失

    我正在尝试在 openGL3 3 中创建一些简单的多边形 我有两种类型的对象 具有以下属性 对象 1 10 个顶点 按顺序在下面列出 存储在GL ARRAY BUFFER并使用GL TRIANGLE FAN v x y z w v 0 0
  • 改变for循环的顺序?

    我遇到一种情况 我需要根据用户输入以不同的顺序循环遍历 xyz 坐标 所以我是 3D 空间中的一个区域 然后是一组像这样的 for 循环 for int x 0 x lt build getWidth x for int y 0 y lt

随机推荐

  • games103 物理模拟第三节笔记补充

    矩阵求逆直接法 1 LU分解 2 LDLT分解法 3 Cholesky分解 4 QR分解 5 SVD分解 6 Jordan分解 关于LU分解 LU分解的矩阵稀疏性与矩阵A的排列顺序有关 在这个领域 matlab提供了一套较好的解决方案 LU
  • docker学习1-基本概念

    Docker jar包 环境 镜像 镜像存在docker仓库中 随用随取 无需现配环境 docker通过隔离机制 各个镜像之间互不干扰 docker比vm轻量化 每次只需运行镜像即可 镜像占内存小启动快 虚拟机启动慢 占内存较大 docke
  • oracle一个事务的完整流程分析

    author skate time 2010 09 01 在oracle客户端与服务端建立连接的 并把请求提交给oracle服务端以前分析过 参考如下 http blog csdn net wyzxg archive 2010 08 16
  • 夜莺监控V6初探

    目标 客户用产品可能是功能设计好 也可能是因为响应快稳定可靠 例如滴滴用不了用高德 券商app故障受罚 微信凌晨服务崩溃 所以稳定性建设工作价值是保障客户体验 避免资损 社会负面舆论 故障生命周期处理 围绕故障生命周期 在整个故障定位体系
  • 文件上传漏洞靶场upload-labs学习(pass11-pass15)

    Upload Labs关卡 0x00 Pass11 str ireplace复写绕过 0x01 Pass12 GET方式 00截断 0x02 Pass13 POST方式 00截断 0x03 Pass14 文件头截取判断 0x04 Pass1
  • 游戏测试和软件测试有什么区别?

    针对手游而言 游戏测试的本质是APP 所以不少手游的测试方式与APP测试异曲同工 然而也有所不同 APP更多的是具有一种工具 一款APP好不好用不重要 关键点在于实用 而游戏则具有一种玩具属性 它并不见得实用 但他要符合玩家的好恶 要能让玩
  • 华为OD机试 - 寻找相似单词(Java)

    题目描述 给定一个可存储若干单词的字典 找出指定单词的所有相似单词 并且按照单词名称从小到大排序输出 单词仅包括字母 但可能大小写并存 大写不一定只出现在首字母 相似单词说明 给定一个单词X 如果通过任意交换单词中字母的位置得到不同的单词Y
  • python3 pickle.load 读python2 文件报错, UnicodeDecodeError 和 TypeError

    pickle持久化文件用 python2 7 pickle dump产生 程序升级后用python3 6 读文件报错 UnicodeDecodeError ascii codec can t decode byte 0xc3 in posi
  • 【SVN】svn服务器访问失败【由于连接方在一段时间后没有反应】

    可以很清楚的告诉你 是由于服务器的端口未打开或者你的服务根本没有运行 环境 1 服务器windows2012 2 本机电脑win7 3 svn本地的版本和服务器的版本一致 分为以下两种情况 1 在服务器上可以进行svn的操作 2 在服务器上
  • HTTP Status 500 - Request processing failed; nested exception is java.lang.NullPointerException

    做青橙电商项目的时候 发布项目后登录发现直接报空指针异常 仔细检查代码后发现是dubbo远程框架中service远程调用失败 问题是导包倒错了 报错如下 HTTP Status 500 Request processing failed n
  • 博客第一天>>>>梦开始了

    简单的自我介绍一下哈 新码农上任三把活 gt 自我介绍 大哥大佬牛逼的人们好 我来自广西一所三本大学 当一个想要月入过万的小小码农 梦先慢慢积累 语言目标 从c开始学起 第一个月要把c语言的大概 流程做一遍 先学到会看懂一些C语言代码 其间
  • 串联型PI和并联型PI调节器的比较

    一 PI调节器的种类 图3 4 仿真波形变化情况 串联型PI调节器 1500r min 从图3 1到3 4比较可知 与并联型PI调节器相比 串联型PI调节器的超调量很小 速度环 且动态过程时间短 稳态过程的纹波也相对较小 综合可知 代入串联
  • 【运维笔记】kafka跨域通信代理

    kafka跨域通信代理 场景描述 模拟思路 模拟环境说明 基础环境 kafka版本 环境部署 基础软件安装 编写kafka的docker compose yml文件 环境验证 解决方案 Kafka通信机制 解决思路 代理配置 验证是否满足要
  • 解决python中文乱码问题

    python输出中文乱码的问题相信大家都遇到过 那么应该如何解决呢 一 修改系统变量 依次打开 设置 gt 系统 gt 关于 gt 高级系统设置 gt 环境变量 gt 新建系统变量 新变量的变量名是 PYTHONIOENCODING 变量值
  • 《Win10——如何设置开机自启动项》

    Win10 如何设置开机自启动项 1 为需要自启动的程序创建快捷方式 2 Win R输入 shell startup 按下回车键出现一个文件夹 3 将快捷方式拖入文件夹中
  • Unity Mathf的一些函数

    1 Mathf Lerp float a float b float t 1 1 官方给出的解释为 用t在a和b之间做线性差值 参数t限制在0到1之间 当t 0时返回值为a 当t 1时返回值为b 当t为0 5时返回值为a到b的中间点 1 2
  • Computed 和 Watch 的区别

    1 computed计算属性 作用 1 解决模板中放入过多的逻辑会让模板过重且难以维护的问题 例如两个数据的拼接或字体颜色的判断 2 它支持缓存 只有依赖的数据发生了变化 才会重新计算 例如模板中多次用到数据拼接可以用计算属性 只执行一次计
  • 微信小程序播放音乐并同步一次显示一行歌词

    主要是对于歌词部分的描述 gitee项目仓库地址 https gitee com manster1231 master cloud music 点个star哦 1 总体思路 先在加载页面时异步获取歌词 根据 musicId 我们可以获取到该
  • Nginx proxy_pass反向代理动态端口

    背景 某项目需要播放第三方监控视频 我方访问域名假定为 my area com 第三方的域名假定为 video other com 域名不一致就导致浏览器跨域问题无法播放 且第三方拖拖拉拉不想解决 于是只有我方使用 nginx 做反向代理来
  • [CVPR-23-Highlight] Magic3D: High-Resolution Text-to-3D Content Creation

    目录 Abstract Background DreamFusion High Resolution 3D Generation Coarse to fine Diffusion Priors Scene Models Coarse to