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): 随…...
抖音手机实景无人直播间怎么搭建?
手机无人直播已成为用户直播和商家直播带货的一项热门技术趋势,为消费者提供了全新的观看体验。无人直播,顾名思义,即通过无人直播软件或数字人来进行无人直播。这一技术的广泛应用,不仅为短视频渠道带来了更丰富的玩法࿰…...
【新书推荐】当 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…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
