【生成式AI】ProlificDreamer论文阅读

news2024/11/26 7:31:16

ProlificDreamer 论文阅读

Project指路:https://ml.cs.tsinghua.edu.cn/prolificdreamer/
论文简介:截止2023/8/10,text-to-3D的baseline SOTA,提出了VSD优化方法

前置芝士:text-to-3D任务简介

text-to-3D Problem

text-to-3D 解决的问题就是给定一段话,生成视角一致的3D场景,如果了解过这个领域的可以略过不看

在这里插入图片描述

研发路线大概是dreamfeild->dreamfusion->polificdreamer

Diffusion Model

text-to-image领域Diffusion Model很厉害,所以基本上就是Extend Diffusion Model to 3D,想看Diffusion Model简介可以看我之前的博文:

生成模型的Basic Idea就是真实图片作为随机分布,每个text是条件。

  • Diffusion Model训练出了一个条件分布 p ( x ∣ y ) p(\mathbf x|y) p(xy),x是图片,y是条件(text),其Loss Function可以表达为 L D i f f ( ϕ ) : = E x 0 ∼ q ( x 0 ) , t ∼ U ( 0 , 1 ) , ϵ ∼ N ( 0 , 1 ) [ w ( t ) ∥ ϵ ϕ ( α t x 0 + σ t ϵ ) − ϵ ∥ 2 2 ] \mathcal L_{Diff}(\phi) := \mathbb E_{x_0\sim q(x_0),t\sim \mathcal U(0,1),\epsilon \sim \mathcal N(0,1)}[w(t)\|\epsilon_\phi(\alpha_tx_0+\sigma_t\epsilon)-\epsilon\|^2_2] LDiff(ϕ):=Ex0q(x0),tU(0,1),ϵN(0,1)[w(t)ϵϕ(αtx0+σtϵ)ϵ22]

text-to-3D 基本思路

  • θ \theta θ是3D表达的参数, c c c是参数,那么3D渲染的本质是 x = g ( θ , c ) \mathbf{x}=g(\theta, c) x=g(θ,c),如果过程是可微的,称为DIP(differentiable image parameterization)
  • 对于2D, x 0 ∼ q ( x 0 ) x_0\sim q(x_0) x0q(x0)代表Sample过程,是真实图片的分布,而text-to-3D就是把Loss变成 L D i f f ( ϕ , x = g ( θ , c ) ) \mathcal L_{Diff}(\phi,\mathbf{x}=g(\theta, c)) LDiff(ϕ,x=g(θ,c)),去优化 θ \theta θ

Prolific Dreamer Basic Idea

符号

  • prolific dreamer这篇文章进一步研究,认为一个合理的3D表达也是一个分布,也就是 θ ∼ μ ( θ ∣ y ) \theta\sim \mu(\theta|y) θμ(θy)
  • 渲染出来的图片: q 0 μ ( x 0 ∣ c , y ) : = ∫ q 0 μ ( x 0 ∣ c , y ) p ( c ) d c q_0^\mu(x_0|c,y):=\int q_0^\mu(x_0|c,y)p(c)dc q0μ(x0c,y):=q0μ(x0c,y)p(c)dc
  • diffusion model渲染出来的图片: p 0 ( x 0 ∣ y ) p_0(x_0|y) p0(x0y)

优化目标

优化一个参数分布,使得它和Diffusion Model生成的结果接近(pretrained)
min ⁡ μ D K L ( q 0 μ ( x 0 ∣ y ) ∥ p 0 ( x 0 ∣ y ) ) \min_\mu D_{KL}(q_0^\mu(x_0|y)\| p_0(x_0|y)) μminDKL(q0μ(x0y)p0(x0y))

算法

Loss Function

根据上述优化目标,可以提出如下的Loss

BTW,为什么这个等号成立我是不太理解的(原论文说是KL Divergence的性质),占个坑

我认为这个步骤其实就是cover Diffusion Model的步骤, q t μ ( x t ∣ y ) : = ∫ q 0 μ ( x 0 ∣ c , y ) p t 0 ( x t ∣ x 0 ) d x 0 q_t^\mu(x_t|y):=\int q_0^\mu(x_0|c,y)p_{t0}(x_t|x_0)dx_0 qtμ(xty):=q0μ(x0c,y)pt0(xtx0)dx0,也就是给定camera,把某张图片渲染出来之后拿去上t步高斯噪声的分布,让这个分布和Diffsuion Model 第t步的图片分布尽可能接近。

这已经是一个非常形式化的优化目标了。接下来考虑优化手段。

Optimization

采用Wasserstein gradient flow of VSD,简单理解就是,用 {   θ   } i = 1 n \set\theta_{i=1}^n {θ}i=1n这n个参数“粒子”去模拟 μ ( θ ∣ y ) \mu(\theta|y) μ(θy),然后优化的时候就是优化每个粒子参数。

基于此,问题转化解如下的一个ODE:
在这里插入图片描述
第一项是Diffusion Model生成的带噪音的真实图片的score function,所以它由预训练好的 ϵ p r e t r a i n ( x t , t , y ) \epsilon_{pretrain}(x_t,t,y) ϵpretrain(xt,t,y)生成
第二项是渲染出来图片生成的带噪声的图片的score function,它由根据一个新网络 ϵ ϕ ( x t , t , c , y ) \epsilon_\phi(x_t,t,c,y) ϵϕ(xt,t,c,y)生成,这个网络采用LoRA 技术,微调 ϵ p r e t r a i n \epsilon_{pretrain} ϵpretrain再embedding一个c进去。

所以进一步转化:
在这里插入图片描述
并得到了如下的算法

在这里插入图片描述
在这里插入图片描述
这篇文章的做法到这里介绍完毕。

数学原理

占坑代填,孩子暂时不会泛函推不了

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于Postman如何配置随请求携带token

文章目录 一些吐槽实际应用 一些吐槽 首先吐槽一下 postman官网的文档说明,真是乱七八糟,一点都不清晰,能不能好好写用户手册啊(比如把用户都当作初始小白) 然后吐槽一下网上铺天盖地让我写js脚本应用全局access toke…

leetcode - 75. 颜色分类(java)

颜色分类 leetcode - 75. 颜色分类题目描述双指针代码演示 双指针算法专题 leetcode - 75. 颜色分类 难度 - 中等 原题链接 - 颜色分类 题目描述 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻&…

Ansys Lumerical | 米氏散射 FDTD

计算平面波激发的纳米粒子的散射和吸收截面、局部场增强和远场散射分布(Mie 散射)。将截面和远场结果与解析解进行比较,以验证仿真的准确性。(联系我们获取文章附件) 概述 纳米粒子的散射特性通常用场增强、横截面和远…

AtcoderABC223场

A - Exact PriceA - Exact Price 题目大意 高橋的钱包里只有一个或多个100日元硬币,没有其他的东西。现在给定一个金额X,需要判断是否可能存在这样的情况,使得钱包中的总金额是X日元。 思路分析 根据题目要求,钱包中只有100日元…

【Yolov5+Deepsort】训练自己的数据集(2)| 目标检测追踪 | 轨迹绘制

📢前言:本篇是关于如何使用YoloV5Deepsort训练自己的数据集,从而实现目标检测与目标追踪,并绘制出物体的运动轨迹。本章讲解的为第二部分内容:训练集的采集与划分,Yolov5模型的训练。本文中用到的数据集均为…

【C语言学习——————文件处理操作的简单介绍与讲解】

欢迎阅读新一期的c语言学习模块————文件处理操作 ✒️个人主页:-_Joker_- 🏷️专栏:C语言 📜代码仓库:c_code 🌹🌹欢迎大佬们的阅读和三连关注,顺着评论回访🌹&#…

【工作记录】mysql中实现分组统计的三种方式

前言 实际工作中对范围分组统计的需求还是相对普遍的,本文记录下在mysql中通过函数和sql完成分组统计的实现过程。 数据及期望 比如我们获取到了豆瓣电影top250,现在想知道各个分数段的电影总数. 表数据如下: 期望结果: 实现方案 主要思路是根据s…

国产芯力特Mini LIN SBC SIT1028Q应用方案,可替代TJA1028

SIT1028Q是一款内部集成高压LDO稳压源的本地互联网络(LIN)物理层收发器,可为外部ECU(Electronic Control Unit)微控制器或相关外设提供稳定的5V/3.3V电源,该LIN收发器符合LIN2.0、LIN2.1、LIN2.2、LIN2.2A、…

学习嵌入式系统的推荐步骤:

C语言:作为基础中的基础,选择一本常用的C语言教材,并注意通过实践编写习题、编译运行代码来加深理解。动手实践是非常重要的。 微机原理与接口技术:这本教材将帮助你了解CPU的基本结构、工作原理以及与外设的交互。虽然开始可能有…

手把手教你如何从零开始搭建自己的鞋店商城

对于不懂技术的新手来说,建立一个鞋店商城可能会显得有些困难。然而,现在有一些方便易用的网站建设平台可以帮助您快速搭建一个鞋店商城。本文将介绍乔拓云网的建站教程,让您轻松完成建站。 步骤1:注册乔拓云网账号并登录 首先&a…

苹果Mac像Windows一样使用

一、将磁盘访问设置的像Windows一样: 1.1、点击任务栏第一个按钮打开“访达”,点击菜单栏上的访达-偏好设置: 1.2、勾选“硬盘”,这样macOS的桌面上就会显示一个本地磁盘,之后重命名为磁盘根,相当于window…

Token 失效退出至登录页面

1. 在登录页面,调用登录的接口后,直接写上当前时间,保存在本地 代码: // 点击登录login(form) {this.$refs[form].validate((valid) > {if (valid) {this.$API.Login(this.form).then((res) > {// console.log(res, "1…

专注于创意设计,为您的小程序和网站建设带来更多的可能性

随着移动互联网的快速发展,越来越多的企业开始关注小程序和网站建设,以此来拓展业务和提升品牌形象。 在这个领域中,创意设计扮演着关键的角色。它不仅可以帮助企业打造独特的形象和品牌,还能够提高用户体验和购买决策的效率。 因…

C语言每日一题:15:寻找峰值。

题目链接 思路一: 思路二: int findPeakElement(int* nums, int numsLen ) {// write code hereint left0;int rightnumsLen-1;int* curnums;int mid0;//特殊情况判断两个值,单增和单减if(cur[0]>cur[1]){return 0;}if(cur[numsLen-1]>…

PROFINET转DeviceNet网关普通网线能代替profinet吗

捷米JM-DNT-PN这款神器,连接PROFINET和DeviceNet网络,让两边数据轻松传输。 这个网关不仅从ETHERNET/IP和DEVICENET一侧读写数据,还可以将缓冲区数据交换,这样就可以在两个网络之间愉快地传递数据了!而且,…

找不到msvcr120.dll,无法继续执行代码,怎么修复?

当msvcp120.dll文件丢失或找不到时,会导致无法运行使用C编写的程序。这可能是由于以下原因导致的: 1.删除或移动文件:如果你不小心删除了或移动了msvcp120.dll文件,你将无法找到它并加载它,从而导致程序无法正常运行。…

护肤品种草软文怎么写?教你几招写作技巧

护肤品种草软文以独特的方式将产品的优势和特点传递给消费者,从而引导消费者购买。然而,随着护肤品市场的竞争日益激烈,如何写出一篇高质量的护肤品种草软文已经成为了很多品牌方和企业方的难题。本文伯乐网络传媒将从多个角度教你如何写出一…

学习C语言的好处:

基础编程语言:C语言是其他编程语言的基础,学习C语言可为后续学习打下坚实基础,广泛应用于嵌入式系统、操作系统、网络协议等。 简单易学:C语言语法简单易懂,适合初学者。只需文本编辑器和编译器,即可开始编…

μCOS-Ⅲ+GD32_SysTick与PendSV中断管理配置浅解

μCOS-ⅢGD32_SysTick与PendSV中断管理配置浅解 GD32移植μCOS-Ⅲ时,需要特别关注的两个与系统相关的且非常重要的中断,一个是提供OS系统时基的滴答定时器(SysTick_Handler中断),另一个是跟任务调度有关的(PendSV_Handler中断),成…

常见的数据结构:树Tree

目录 1.概念 1.1 满二叉树 1.2 完全二叉树 1.3 平衡二叉树 2.遍历方式 2.1 先序遍历 2.2 中序遍历 2.3 后序遍历 2.4 层序遍历 1.概念 原理:一种特殊的数据结构,每个节点有零个或多个子节点;没有父节点的节点称为根节点;每…