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

【生成式AI】ProlificDreamer论文阅读

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.lryc.cn/news/123551.html

相关文章:

  • C++元编程——模拟javascript异步执行
  • 【JavaEE】懒人的福音-MyBatis框架—复杂的操作-动态SQL
  • Springboot 默认路径说明
  • springboot注册拦截器与返回统一标准响应格式
  • 卷王特斯拉又全网降价了,卷死车企们
  • wiley:revision 流程
  • 【论文阅读】基于深度学习的时序预测——Pyraformer
  • 玩转IndexedDB,比localStorage、cookie还要强大的网页端本地缓存
  • RedisDesktopManager连不上redis问题解决(小白版)
  • 蓝帽杯 取证2022
  • MyBatis and or使用列表控制or条件
  • C语言刷题训练【第11天】
  • 正则表达式的使用
  • PHP 求解两字符串所有公共子序列及最长公共子序列 支持多字节字符串
  • linux内核bitmap之setbit汇编实现
  • Golang设计模式
  • leetcode151. 反转字符串中的单词
  • 【BASH】回顾与知识点梳理(十七)
  • 时序预测-Informer简介
  • 2023牛客第七场补题报告C F L M
  • Android使用kotlin+协程+room数据库的简单应用
  • Kubernetes pod调度约束[亲和性 污点] 生命阶段 排障手段
  • Matlab实现模拟退火算法(附上多个完整源码)
  • 前后端分离------后端创建笔记(03)前后端对接(上)
  • stable diffusion安装包和超火使用文档及提示词,数字人网址
  • 训练营:贪心篇
  • 四、Dubbo扩展点加载机制
  • [保研/考研机试] KY103 2的幂次方 上海交通大学复试上机题 C++实现
  • 时序预测 | MATLAB实现基于BP神经网络的时间序列预测-递归预测未来(多指标评价)
  • 组合模式(C++)