当前位置: 首页 > news >正文

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

相关文章:

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 CFG1.3影响1.4 SJC 2 效果 0 论文工作 对于生成任务,我们是需要有一个数据样本,让模型去学习数据分布 p ( x ) p(x) p(x…...

机械臂抓取的产业落地进展与思考

工业机械臂是一种能够模拟人类手臂动作的机械装置,具有高精度、高速度和高灵活性的特点。近年来,随着人工智能和机器人技术的快速发展,机械臂在工业生产、物流仓储、医疗护理等领域得到了广泛应用。机械臂抓取技术作为机械臂的核心功能之一&a…...

【RuoYi-Cloud项目研究】【ruoyi-auth模块】登录请求(/login)分析

文章目录 0. 网关如何处理登录请求1. Controller1.1. 获取用户信息1.2. 创建用户的token 2. Service2.1. FeignClient远程查询用户信息2.2. 验证密码 3. 何时刷新 token,如何刷新【本文重点】 本文主要是分析登录请求 /login 的过程。 调用过程是:ruoyi-…...

Git 学习笔记 | Git 项目创建及克隆

Git 学习笔记 | Git 项目创建及克隆 Git 学习笔记 | Git 项目创建及克隆创建工作目录与常用指令本地仓库搭建克隆远程仓库 Git 学习笔记 | Git 项目创建及克隆 创建工作目录与常用指令 工作目录(WorkSpace)一般就是你希望Git帮助你管理的文件夹,可以是…...

C++默认参数(实参)

在本文中,您将学习什么是默认参数,如何使用它们以及使用它的必要声明。在C 编程中,您可以提供函数参数的默认值。默认参数背后的想法很简单。如果通过传递参数调用函数,则这些参数将由函数使用。但是,如果在调用函数时…...

Datax数据同步支持SqlServer 主键自增

允许写入的SQL SET IDENTITY_INSERT table_name ON;-- 插入数据,指定主键值 INSERT INTO table_name (id, column1, column2, ...) VALUES (new_id_value, value1, value2, ...);SET IDENTITY_INSERT table_name OFF; 写入插件处理 核心类:com.alibab…...

C++开发学习笔记3

C 中枚举的使用 在C中,枚举常量(Enumeration Constants)是一种定义命名常量的方式。枚举类型允许我们为一组相关的常量赋予有意义的名称,并将它们作为一个独立的类型来使用。 以下是定义和使用枚举常量的示例: enum…...

计算机中常说的SDK是什么意思?

SDK是Software Development Kit的英文缩写,意思是软件开发包。 软件开发包中往往包含有多种辅助进行软件开发的内容,包括一些软件开发工具、文档说明、库和示例代码。这些内容能够帮助使用SDK进行软件开发的人员更好地开发程序。 SDK的作用就是简化软件…...

漏刻有时数据可视化大屏(16)数据指标KPI和柱图折线图混排

CSS样式表 /*面板*/ .pannel {width: 100%;margin-top: 30px;clear: both; }.item_l {float: left;width: 20%; /*3格60%*/margin: 0; }.item_r {float: left;width: 10%; /*4格40%*/margin: 0; }.item_child {float: left;width: 50%; }.item_child_b {float: left;width: 10…...

基于Stable Diffusion的图像合成数据集

当前从文本输入生成合成图像的模型不仅能够生成非常逼真的照片,而且还能够处理大量不同的对象。 在论文“评估使用稳定扩散生成的合成图像数据集”中,我们使用“稳定扩散”模型来研究哪些对象和类型表现得如此逼真,以便后续图像分类正确地分配…...

云计算:常用运维软件工具

目录 一、理论 1.云管理工具 2.虚拟化工具 3.容器管理工具 4.运维自动化工具 5.版本控制工具 6.配置管理工具 7.编辑器工具 8.代码质量工具 9.网络管理工具 10.数据库管理工具 11.数据中心设备管理工具 12.数据可视化工具 13.服务器管理工具 14.应用性能管理工具…...

多测师肖sir_高级金牌讲师_python的安装002

一、python安装 1、python包(我们目前学习的版本是3.7) python-3.7.3 版本 2、Python下载的官网:https://www.python.org/downloads/ 最新包:3.12 3、下载好python安装包,在新建一个python文件件,我们要…...

gin实现event stream

event stream是属于http的一种通信方式,可以实现服务器主动推送。原理于客户端请求服务器之后一直保持链接,服务端持续返回结果给客户端。相比较于websocket有如下区别: 基于http的通信方式,在各类框架的加持下不需要开发人员自己…...

pytorch中transform库中常用的函数有哪些及其用法?

在PyTorch的torchvision.transforms库中,有许多常用的图像变换函数可用于数据增强和预处理。下面列举了一些常用的函数及其用法: Resize(size): 调整图像大小为给定的尺寸。 transform transforms.Resize((256, 256))RandomCrop(size, paddingNone): 随…...

抖音手机实景无人直播间怎么搭建?

手机无人直播已成为用户直播和商家直播带货的一项热门技术趋势,为消费者提供了全新的观看体验。无人直播,顾名思义,即通过无人直播软件或数字人来进行无人直播。这一技术的广泛应用,不仅为短视频渠道带来了更丰富的玩法&#xff0…...

【新书推荐】当 Python 遇到 ChatGPT —— 自动化办公落地

文章目录 当 Python 遇到 ChatGPT:一种强大的组合1. 文本生成2. 自动翻译3. 对话生成4. 情感分析 新书推荐《Python自动化办公应用大全(ChatGPT版):从零开始教编程小白一键搞定烦琐工作(上下册)》前言内容简…...

RSA攻击:Smooth攻击

目录 前言:缘起 P-1光滑攻击 P1光滑攻击 前缀知识 Lucas-Subsquence(卢卡斯序列) 编码实现与理解 小试牛刀 [NCTF 2019]childRSA 引用 前言:缘起 Smooth攻击(光滑攻击),在最近刷题的时候总是能偶尔蹦跶到我的脑子里面。不是天天遇见它&am…...

什么是位域和位段?如何定义和使用位域?

位域(Bit Fields)是C语言中一种用于在数据结构中以位为单位对数据进行精确控制的技术。它们允许程序员将一个整数字段分割成多个更小的部分,每个部分可以存储不同的信息。位域通常在对内存节省要求高、数据压缩或硬件寄存器描述等情况下使用。…...

网络攻防备课笔记

从“踩点”到“创建后门”的攻击流程 踩点:攻击者在实施攻击前对目标进行初步的探索和调查的过程,包括收集目标的IP地址、开放的端口、服务版本、可能的漏洞等信息。 扫描:使用工具如Nmap、Masscan等对目标进行端口扫描,找出开放…...

Apache Solr9.3 快速上手

Apache Solr 简介 Solr是Apache的顶级开源项目,使用java开发 ,基于Lucene的全文检索服务器。 Solr比Lucene提供了更多的查询语句,而且它可扩展、可配置,同时它对Lucene的性能进行了优化。 安装 下载 : 下载地址解压 : tar -zxv…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

2025季度云服务器排行榜

在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...

云安全与网络安全:核心区别与协同作用解析

在数字化转型的浪潮中,云安全与网络安全作为信息安全的两大支柱,常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异,并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全:聚焦于保…...

sshd代码修改banner

sshd服务连接之后会收到字符串: SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢? 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头&#xff0c…...

篇章二 论坛系统——系统设计

目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...

TCP/IP 网络编程 | 服务端 客户端的封装

设计模式 文章目录 设计模式一、socket.h 接口(interface)二、socket.cpp 实现(implementation)三、server.cpp 使用封装(main 函数)四、client.cpp 使用封装(main 函数)五、退出方法…...

免费批量Markdown转Word工具

免费批量Markdown转Word工具 一款简单易用的批量Markdown文档转换工具,支持将多个Markdown文件一键转换为Word文档。完全免费,无需安装,解压即用! 官方网站 访问官方展示页面了解更多信息:http://mutou888.com/pro…...

Docker环境下安装 Elasticsearch + IK 分词器 + Pinyin插件 + Kibana(适配7.10.1)

做RAG自己打算使用esmilvus自己开发一个,安装时好像网上没有比较新的安装方法,然后找了个旧的方法对应试试: 🚀 本文将手把手教你在 Docker 环境中部署 Elasticsearch 7.10.1 IK分词器 拼音插件 Kibana,适配中文搜索…...