3D 生成重建004-DreamFusion and SJC :TEXT-TO-3D USING 2D DIFFUSION

3D 生成重建004-DreamFusion and SJC :TEXT-TO-3D USING 2D DIFFUSION


文章目录

      • 0 论文工作
      • 1 论文方法
        • 1.1论文方法
        • 1.2 CFG
        • 1.3影响
        • 1.4 SJC
      • 2 效果

0 论文工作

对于生成任务,我们是需要有一个数据样本,让模型去学习数据分布 p ( x ) p(x) p(x),但是对于3d的生成来说,有两个挑战:1)一个完善的很大的3d数据数据集,对比2d的扩散模型是一个几亿的图像文本对上训练的,对于3d需要更大体量的数据;2)计算量,纯3d生成的策略相比2d计算度复杂度指数增加。所以前面的3d任务都是向办法,将3d监督转换成2d监督进行,减少数据和计算的问题。当然也有基于合成数据集做3d生成的,但是其中也存在一些其他问题。随着对比学习和transformer的进步,CLIP模型第一个比较理想的双模态大模型,打通了文本和图像之间的关系。研究者将模型引入到生成任务中去辅助3d的生成,主要路线是让不同视角的视图的相似度和文本保持一个较高的相似度Janus problem 多面的问题开始出现。
在3D mesh重建002-text2meshCVPR2022将CLIP跨圈到mesh风格的生成中已经介绍过从CLIP中提取信息的方法。
在这里插入图片描述
问题的根源是2d数据中虽然隐含了丰富的3d知识,但是是有偏见的,互联网用户显然更加钟爱‘face’,在物体的生成中这个问题的确不明显,因为对于一般的物体不涉及正面还是反面问题。为了解决多面问题,研究者进行过很多探索,主要的解决思路还是两条,一个形状先验,借助形状的引导去环节这个问题,另外一个就是3D经验。前面的zero123,sparseFusion和HOLOdiffusion整体都是基于这个思路,后续单独整理,当然形状本身就是3d,只不过在使用形式上不同。
基于CLIP模型,stable diffusion、DALLE2 和IMAGEN这些文生图模型快速发展。相比于CLIP,扩散模型的文生图在图像和文本之间引入了更加紧密的关联,约束性更强。
论文dreamFusion最早通过蒸馏2d扩散模型中的信息进行文生3d的任务,随后SJC在前者的基础上进行了更详细的公式推导。
参考
3D mesh重建002-text2meshCVPR2022将CLIP跨圈到mesh风格的生成
dreaamFusion
SJC

1 论文方法

1.1论文方法

对于文生3d这样一个问题,作者采用一个随机初始化的nerf来表示一个三维物体,然后将物体渲染到图像空间,对图像加噪,放入到扩散模型,预测噪声。用预测噪声减去添加噪声作为更新方向。在代码实现过程中会用到一些前后左右上下view等关键词进行约束。
在这里插入图片描述

  上面的图是dreamfusion的整体过程。重点分析后面的实现部分。
  因为一般训练好的扩散模型在使用的过程中是直接输入文本从纯噪声中逐步回复过去,在测试阶段是没有加噪这个步骤的这里为什么是预测噪声减去添加的噪声作为梯度呢。目前的理解是这样预测图像减去输入加噪的图像是梯度二者一减就变成预测噪声-加入噪声了。但是这个地方实际存在一个小小的问题就是,默认要保证nerf的图像和加噪后的图像要保持一个相同的分布,他的梯度才有效引导,但是这里的采样实际加噪是随机的,不太能保证他们的分布吧,可能还需要细看看其中的细节。(ps理解有限)
  这里添加噪声,一个SJC的解释是out of distribution,OOD问题,因为nerf渲染的结果可能不满足预定分布还是什么,这个意思约等于为什么不是图像直接监督,另外一点就是在整体的不断迭代中增加nerf的整体性,因为我们在网络中也**设置了很高的CFG去引导扩散模型生成高确定性的内容。**实际上这个部分也可考虑从得分函数的角度理解,添加噪声就是基于score matching的考量。
参考
NeRF

1.2 CFG

  参考扩散模型基础,因为在条件生成中需要平衡条件和源得分之间的平衡,当这个系数比较小的时候,条件的影响力会降低,生成多样性较好,但是质量受影响。但是增加CFG生成的确定性增加,但是多样性受损。
在文生图的时候一般这个系数是0-10,但是在文生3d的时候设置成了100左右,就是让模型生成高度一致的内容,来保持一致性。但是只用这种方法很受限,所有论文也是用了基于nerf表示的很多次优化,来促进整体的一致性。
论文中使用的是这个形式的损失
在这里插入图片描述
但是在附录中推理他其实也是一种得分函数的形式
在这里插入图片描述
在这里插入图片描述
classifier guided diffusion在这里插入图片描述
当用一个条件去限制的时候能保证我们在一个更小的区间内进行采样。里面包含一个得分项,和一个分类项,分类项需要一直跟着扩散模型进行训练,识别不同噪声状态下的图像。相关的于要训练两个扩散模型。
基于以上一些问题,有一种CFG方法讲他们合并成一个复杂的得分函数。通过系数去控制条件得分和无条件得分之间的状态。这个系数就是dreamfusion中设置为100的系数。在stable diffusion的文生图中一般设置是3-10之间。这个系数过高就是过饱和的主要原因,之所以这么设置,是作者希望在生成的一致性和过饱和之间做个平衡。
在这里插入图片描述上面的两部分基本上是后面的条件生成的基础,比如GLIDE,stable diffusion和controlnet等。

1.3影响

这是一个影响力很强的论文,在讨论部分作者提出了一些未来的看法。这就是发生在差不多半年左右的事情。
1)过饱和跟CFG有关,后面的ProlificDreamer在这个基础上做了推广,一定程度缓解这个问题
2)这项将2D观测结果“提升”到3D世界的任务本质上是模糊的,并可能受益于更健壮的3D先验。实际上就是一致性的问题,后面的3dfuse ,zero123,sparseFusion,holodiffuion等等工作都围绕这一点。
3)论文在附录里面证明了这也是一种得分函数形式,SJC进一步推理验证优化部分细节。
4)提到分辨率问题,后面有magic3d跟进
5)后续从2d扩散模型去蒸馏信息进行3d任务的算法层出不穷,整体上都是受到这篇论文的启发。

1.4 SJC

虽然dreamFusion效果很好但是当时并不开源,SJC在他的基础上直接基于得分函数论证了OOD问题,为什么不直接输入渲染图像进入扩散模型去降噪,然后提出一个扰动平均得分,通过几个点的优化方向的均值作为整体方向。

2 效果

dreamfusion

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

目前制造企业生产计划现状是什么?有没有自动化排产系统?

大家都知道,人的指挥中心是大脑,大脑对我们的发出各种各样的指令,告诉我们:“手”做什么事情,“眼睛”看什么地方,“耳朵”听什么声音,然后再将摸到的、看到的、听到的信息传递给大脑&#xff0…

大数据学习(1)-Hadoop

&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博>主哦&#x…

网络安全(骇客)—技术学习

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高; 二、则是发展相对成熟入…

Rust专属开发工具——RustRover发布

JetBrains最近推出的Rust集成开发工具——RustRover已经发布,官方网站:RustRover: Rust IDE by JetBrains JetBrains出品过很受欢迎的开发工具IntelliJ IDEA、PyCharm等。 RustRover优势 Rust集成环境,根据向导可自动下载安装rust开发环境提…

2023.10.10

运算符重载 类外函数实现&#xff1a; #include <iostream>using namespace std;class Good {//算数friend const Good operator*(const Good &L,const Good &R);friend const Good operator(const Good &L,const Good &R);friend const Good operator…

机器学习、深度学习相关的项目集合【自行选择即可】

【基于YOLOv5的瓷砖瑕疵检测系统】 YOLOv5是一种目标检测算法&#xff0c;它是YOLO&#xff08;You Only Look Once&#xff09;系列模型的进化版本。YOLOv5是由Ultralytics开发的&#xff0c;基于一阶段目标检测的概念。其目标是在保持高准确率的同时提高目标检测的速度和效率…

Android 内存泄漏分析思路和案例剖析

分析思路 内存泄漏是指 Android 进程中&#xff0c;某些对象已经不再使用&#xff0c;但被一些生命周期更长的对象引用&#xff0c;导致其占用的内存资源无法被GC回收&#xff0c;内存占用不断增加的一种现象&#xff1b;内存泄漏是导致我们应用性能下降、卡顿的一种常见因素&…

epoll 定时器

参考&#xff1a; Linux下使用epoll监听定时器-CSDN博客 但是这个用的是gettimeofday。 本人使用的是 #include <stdlib.h> #include<stdio.h> #include <sys/timerfd.h> #include <sys/epoll.h> #include <unistd.h> #include <sys/time.…

库存管理方法有哪些?

本文将为大家讲解&#xff1a;库存管理方法有哪些&#xff1f; 库存管理是企业运营中的核心环节&#xff0c;它涉及到货物的采购、存储、销售和配送。有效的库存管理可以确保企业有足够的货物满足客户的需求&#xff0c;同时避免库存积压和浪费。为了达到这个目标&#xff0c;…

洛谷100题DAY7

31.P1636 Einstein学画画 此题为欧拉通路&#xff0c;必须要满足奇点的个数为0或2个 奇点&#xff1a;度数&#xff08;入度出度&#xff09;为奇数的点 如果奇点为2个或者0个就可以直接一笔化成 eg. 我们发现奇数点个数每增加2个就多一笔 #include<bits/stdc.h> us…

Navicat定时任务

Navicat定时任务 1、启动Navicat for MySQL工具&#xff0c;连接数据库。 2、查询定时任务选项是否开启 查询命令&#xff1a;SHOW VARIABLES LIKE ‘%event_scheduler%’; ON表示打开&#xff0c;OFF表示关闭。 打开定时任务命令 SET GLOBAL event_scheduler 0; 或者 SET G…

解决yolo无法指定显卡的问题,实测v5、v7、v8有效

方法1 基本上这个就能解决了&#xff01;&#xff01;&#xff01; 在train.py的最上方加上下面这两行&#xff0c;注意是最上面&#xff0c;其次指定的就是你要使用的显卡 import os os.environ[CUDA_VISIBLE_DEVICES]6方法2&#xff1a; **问题&#xff1a;**命令行参数指…