浅析扩散模型与图像生成【应用篇】(十一)——DDIBs

11. Dual Diffusion Implicit Bridges for Image-to-Image Translation

  该文提出一种双扩散隐式桥(Dual Diffusion Implicit Bridges, DDIBs)方法用于图像转换,其最大的特点在于处理源域图像的模型和处理目标域图像的模型是彼此分开独立的。使用源域图像训练一个扩散模型 v θ ( s ) v^{(s)}_{\theta} vθ(s),然后使用目标域图像训练另外一个模型 v θ ( t ) v^{(t)}_{\theta} vθ(t),给定一个源域图像 x ( s ) x^{(s)} x(s),首先利用 v θ ( s ) v^{(s)}_{\theta} vθ(s)将其转化为潜在特征 x ( l ) x^{(l)} x(l),然后再经过 v θ ( t ) v^{(t)}_{\theta} vθ(t)将其转化为目标域图像 x ( t ) x^{(t)} x(t)。这带来一个好处,训练过程中不需要同时使用源域和目标域图像对模型进行训练,这在一些对数据私密性要求较高的领域是十分必要的。此外,源域和目标域模型是可以相互转换的,即源域扩散模型,反过来也可以当作目标域的生成模型使用,这就能够实现从目标域向源域的转换。而且一个训练好的扩散模型可以跟任意的目标域生成模型结合,这就使得许多图像转换任务所需模型的数量是随着域的数量线性增长,而不是原本的二次方增长。还有一个重大优势,就是这个方法采用了DDIM模型中的常微分方程ODE建模方式,这就在理论上保证了转化过程具有非常好的循环一致性,即由源域图像 x ( s ) x^{(s)} x(s),生成的目标域图像 x ( t ) x^{(t)} x(t),再经过反向生成得到的伪源域图像 x ′ ( s ) x'^{(s)} x(s)与初始的源域图像 x ( s ) x^{(s)} x(s)之间仅存在一个微小的ODE求解过程中的离散化误差。最后,就是这个方法其实对于扩散模型和生成模型 v θ v_{\theta} vθ是没有什么限制的,我们可以使用各种最新的模型来进行扩散和生成。
在这里插入图片描述
  作者首先对基于分数的生成模型(SGMs)进行了回顾,提到其中的两个重要代表作SMLD(NCSN)和DDPM算法都是可以用随机微分方程SDEs来描述的,其扩散和生成过程如下 d x = f ( x , t ) d t + g ( t ) d w , d x = [ f − g 2 ∇ x log ⁡ p t ( x ) ] d t + g ( t ) d w (1) \mathrm{d} \mathbf{x}=\mathbf{f}(\mathbf{x}, t) \mathrm{d} t+g(t) \mathrm{d} \mathbf{w}, \quad \mathrm{d} \mathbf{x}=\left[\mathbf{f}-g^{2} \nabla_{\mathbf{x}} \log p_{t}(\mathbf{x})\right] \mathrm{d} t+g(t) \mathrm{d} \mathbf{w}\tag{1} dx=f(x,t)dt+g(t)dw,dx=[fg2xlogpt(x)]dt+g(t)dw(1)同时,也提到任何的扩散过程都可以通过确定性的常微分方程来表示,称之为概率流常微分方程(PF ODEs),其扩散过程表示如下 d x = [ f ( x , t ) − 1 2 g ( t ) 2 ∇ x log ⁡ p t ( x ) ] d t (2) \mathrm{d} \mathbf{x}=\left[\mathbf{f}(\mathbf{x}, t)-\frac{1}{2} g(t)^{2} \nabla_{\mathbf{x}} \log p_{t}(\mathbf{x})\right] \mathrm{d} t\tag{2} dx=[f(x,t)21g(t)2xlogpt(x)]dt(2)如果我们用 v θ = d x / d t v_{\theta}=\mathrm{d} \mathbf{x}/\mathrm{d} t vθ=dx/dt来表示参数为 θ \theta θ的一个速度场(velocity field),也就是公式(2)中方括号里的内容,则使用ODE求解由 x ( t 0 ) x(t_0) x(t0) x ( t 1 ) x(t_1) x(t1)的映射关系过程表示如下 ODESolve ⁡ ( x ( t 0 ) ; v θ , t 0 , t 1 ) = x ( t 0 ) + ∫ t 0 t 1 v θ ( t , x ( t ) ) d t (3) \operatorname{ODESolve}\left(\mathbf{x}\left(t_{0}\right) ; v_{\theta}, t_{0}, t_{1}\right)=\mathbf{x}\left(t_{0}\right)+\int_{t_{0}}^{t_{1}} v_{\theta}(t, \mathbf{x}(t)) \mathrm{d} t\tag{3} ODESolve(x(t0);vθ,t0,t1)=x(t0)+t0t1vθ(t,x(t))dt(3) t 0 = 0 , t 1 = 1 t_0=0,t_1=1 t0=0,t1=1时就表示扩散过程,而当 t 0 = 1 , t 1 = 0 t_0=1,t_1=0 t0=1,t1=0时就表示生成过程,DDIBs的扩散和生成流程如下图所示,其中求解器ODESolve本文使用的是DDIM,当然其他的求解器也是可以的。此外 v θ v_{\theta} vθ中的未知量 ∇ x log ⁡ p t ( x ) \nabla_{\mathbf{x}} \log p_{t}(\mathbf{x}) xlogpt(x)通常用一个噪声估计网络或者叫做分数估计网络 s θ s_{\theta} sθ来进行估计, s θ s_{\theta} sθ可采用带有注意力机制的UNet模型或者条件UNet模型。
在这里插入图片描述
  其实讲到这里,DDIBs方法的过程和特点就已经介绍完了,下面作者又分析了其背后的理论依据,作者是从薛定谔桥问题(Schrodinger Bridges Problem,SBP)的角度来描述DDIBs的理论基础的。假设 Ω = C ( [ 0 , 1 ] ; R n ) \Omega=C\left([0,1];\mathbb{R}^{n}\right) Ω=C([0,1];Rn)是在时间[0,1]范围内 n n n维实值连续函数的路径空间, D ( p 0 , p 1 ) \mathcal{D}\left(p_{0}, p_{1}\right) D(p0,p1)是空间 Ω \Omega Ω上所有的分布集合,其在时刻 t = 0 , t = 1 t=0,t=1 t=0,t=1上的边缘分布分别为 p 0 , p 1 p_0,p_1 p0,p1。给定一个先验的参考度量 W W W,则SBP就是要寻找在 p 0 p_0 p0 p 1 p_1 p1之间随时间 t t t变化的概率最大的进化路径,也就是说从 D ( p 0 , p 1 ) \mathcal{D}\left(p_{0}, p_{1}\right) D(p0,p1)寻找一个分布使得其与参考度量 W W W之间的KL散度最小,即下式所示 P S B P : = arg ⁡ min ⁡ { D K L ( P ∥ W ) ∣ P ∈ D ( p 0 , p 1 ) } (4) P_{S B P}:=\arg \min \left\{D_{K L}(P \| W) \mid P \in \mathcal{D}\left(p_{0}, p_{1}\right)\right\}\tag{4} PSBP:=argmin{DKL(PW)PD(p0,p1)}(4)作者还解释到SBP实际上是一个带有额外熵正则项的Monge-Kantorovich (MK)最优传输问题(OT)。上面这一大段,其实我也没怎么看懂,大概的意思是SBP就是寻找一个时间跨度为 t t t,边缘分布分别为 p 0 p_0 p0 p 1 p_1 p1的概率分布 P P P。那么SBP与上面提到的SGMs又有什么关系呢?作者引用他人研究的结果证明SGMs是一种隐式的最优传输模型,对应着带有线性或退化漂移(linear or degenerate drifts)的SBP。简单理解为SGMs是退化版的SBP,是SBP的一个特例。那么用SBP来描述扩散和生成过程如下: d x = [ f + g 2 ∇ x log ⁡ Φ t ( x ) ] d t + g ( t ) d w , d x = [ f − g 2 ∇ x log ⁡ Φ ^ t ( x ) ] d t + g ( t ) d w (5) \mathrm{d} \mathbf{x}=\left[\mathbf{f}+g^{2} \nabla_{\mathbf{x}} \log \Phi_{t}(\mathbf{x})\right] \mathrm{d} t+g(t) \mathrm{d} \mathbf{w}, \quad \mathrm{d} \mathbf{x}=\left[\mathbf{f}-g^{2} \nabla_{\mathbf{x}} \log \hat{\Phi}_{t}(\mathbf{x})\right] \mathrm{d} t+g(t) \mathrm{d} \mathbf{w}\tag{5} dx=[f+g2xlogΦt(x)]dt+g(t)dw,dx=[fg2xlogΦ^t(x)]dt+g(t)dw(5)其中 Φ t , Φ ^ t {\Phi}_{t},\hat{\Phi}_{t} Φt,Φ^t为薛定谔因子,其满足 p t ( x ) = Φ t ( x ) Φ ^ t ( x ) p_{t}(\mathbf{x})=\Phi_{t}(\mathbf{x}) \hat{\Phi}_{t}(\mathbf{x}) pt(x)=Φt(x)Φ^t(x)。式中 z t = g ( t ) ∇ x log ⁡ Φ t ( x ) \mathbf{z}_{t}=g(t) \nabla_{\mathbf{x}} \log \Phi_{t}(\mathbf{x}) zt=g(t)xlogΦt(x) z ^ t = g ( t ) ∇ x log ⁡ Φ ^ t ( x ) \hat{\mathbf{z}}_{t}=g(t) \nabla_{\mathbf{x}} \log \hat{\Phi}_{t}(\mathbf{x}) z^t=g(t)xlogΦ^t(x)能够充分的表征SBP的动态变化过程,因此可以被看作是扩散和生成过程所遵循的策略。从对数似然的角度来看,当 z t , z ^ t \mathbf{z}_{t}, \hat{\mathbf{z}}_{t} zt,z^t满足以下条件时,SBP和SGMs是等价的 ( z t , z ^ t ) = ( 0 , g ( t ) ∇ x log ⁡ p t ( x ) ) (6) \left(\mathbf{z}_{t}, \hat{\mathbf{z}}_{t}\right)=\left(0, g(t) \nabla_{\mathbf{x}} \log p_{t}(\mathbf{x})\right)\tag{6} (zt,z^t)=(0,g(t)xlogpt(x))(6)当然与SGMs相似,SBP也能够推导出其对应的确定性概率流常微分方程PE ODE,如下所示 d x = [ f ( x , t ) + g ( t ) z − 1 2 g ( t ) ( z + z ^ ) ] d t \mathrm{d} \mathbf{x}=\left[\mathbf{f}(\mathbf{x}, t)+g(t) \mathbf{z}-\frac{1}{2} g(t)(\mathbf{z}+\hat{\mathbf{z}})\right] \mathrm{d} t dx=[f(x,t)+g(t)z21g(t)(z+z^)]dt其中 z \mathbf{z} z只与 x \mathbf{x} x有关,与时间 t t t无关。
  费了这么多力气,作者就想说明一点DDIBs是两个级联的薛定谔桥,分别连接了源域和潜在空间以及潜在空间和目标域。这就是该文提出方法名字的来源,双扩散隐式桥(Dual Diffusion Implicit Bridges, DDIBs)是基于去噪扩散隐式模型(Denoising Diffusion Implicit Models, DDIM)的且包含两个独立的薛定谔桥以连接数据和潜在空间分布。后面作者在一个2维图像数据集上,验证了DDIBs方法所具备的图像转换的平滑性和循环一致性,如下图所示
在这里插入图片描述
由图a可以看出来,当图像从一种形状转换到另一种形状时,其颜色的分布情况几乎与源图像保持一致;由图b可以看出,当图像从形状A转换到B再转换回A时,两者之间几乎没有任何差别,这就显著表明了生成过程具备很好的循环一致性。
  此外,作者还利用条件扩散模型测试了DDIBs由一个源域转换到多个目标域的表现,如下图所示
在这里插入图片描述
可以看到,当源域图像(狮子,类别代号291)转化为其他多个类别时,再保留原有的吼叫姿态的同时,又能很好的兼顾目标类别的特征。

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

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

相关文章

android支持包com.android.support:support-v4 依赖树,便于分析类冲突问题

执行如下依赖分析指令可以打印依赖树 sh gradlew -q app:dependenciescom.android.support:support-v4:28.0.0 是一个非常庞大的支持库,依赖的东一比较多下面看看详情:standard_testReleaseUnitTestRuntimeClasspath - Resolved configuration for runti…

Modbus TCP协议介绍(ModbusTCP)

文章目录 理解Modbus TCP协议(Understanding Modbus TCP Protocol)简介(Introduction to Modbus TCP)历史背景(Historical Context)关键特性(Key Features) Modbus TCP协议结构&…

华为防火墙二层墙(VAN/SVI/单臂路由)

二层墙只能做地址池形式的NAT。 交换机安全策略防火墙二层墙 路由器安全策略防火墙三层墙 交换机的光口是不能直接插线的,光模块,包括进和出 长距离:单模 短距离:多模 防火墙自身的ping流量需要单独配置

深度学习中不同的优化器汇总(SGD、动量、Adagrad、RMSProp、Adam)(理论、公式、代码)

本文针深度学习中不同的优化器进行了汇总,包括公式实现、代码示例、演变过程和优缺点做了较为详细的分析。 随机梯度下降(SGD) 随机梯度下降(SGD)是一种简单但极其有效的优化算法,经常用于训练各种类型的…

卷积和池化

卷积: 就是有一个卷积核,还有一个x*x的图片,卷积核大小是y*y的话,对图像做卷积就是将图片中和卷积核大小一样的部分进行运算,也就是相乘求和,有点类似算法中的滑动窗口,只不过这里是二维滑动窗…

一篇复现Docker镜像操作与容器操作

华子目录 Docker镜像操作创建镜像方式1docker commit示例 方式2docker import示例1:从本地文件系统导入示例2:从远程URL导入注意事项 方式3docker build示例1:构建镜像并指定名称和标签示例2:使用自定义的 Dockerfile 路径构建镜像…

Unity连接MySQL踩坑,问题处理记录

用的unity2021版本,MySQL是官方下载的最新版8.0.36. 安装MySQL时,过去如果安装过,一定要删干净,单纯的卸载不行,网上有很多教程。 MySQL安装完成后,将安装目录的MySql.Data.dll文件放入unity项目的Plugin…

数据运营常用的8大模型

✅作者简介:《数据运营:数据分析模型撬动新零售实战》作者、《数据实践之美》作者、数据科技公司创始人、多次参加国家级大数据行业标准研讨及制定、高端企培合作讲师。 🌸公众号:风姑娘的数字视角,免费分享数据应用相…

202447读书笔记|《围炉夜话》——多记先正格言,胸中方有主宰 闲看他人行事,眼前即是规箴

202447读书笔记|《围炉夜话》——多记先正格言,胸中方有主宰;闲看他人行事,眼前即是规箴 围炉夜话 《围炉夜话(读客三个圈经典文库)》作者王永彬。读《围炉夜话》,可以掌握君子安身立业的大智慧&#xff01…

基于大模型的复杂决策支持系统设计与实施策略

基于大模型的复杂决策支持系统设计与实施策略 1. 背景介绍 随着大数据、云计算和人工智能技术的飞速发展,决策支持系统(Decision Support System, DSS)在各个领域得到了广泛应用。传统的决策支持系统主要依赖于统计分析和专家系统&#xff…

【Canvas与艺术】暗蓝网格汽车速度仪表盘

【关键点】 采用线性渐变色&#xff0c;使上深下浅的圆有凹下效果&#xff0c;使上浅下深的圆有凸起效果&#xff0c;两者结合就有立体圆钮的感觉。 【图例】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type&quo…

Java全栈课程之Linux———目录相关命令

一、绝对路径和相对路径 我们知道Linux的目录结构为树状结构&#xff0c;最顶级的目录为根目录 /。 其他目录通过挂载可以将它们添加到树中&#xff0c;通过解除挂载可以移除它们。 在开始本教程前我们需要先知道什么是绝对路径与相对路径。 绝对路径&#xff1a; 路径的写…

2015年认证杯SPSSPRO杯数学建模C题(第二阶段)荒漠区动植物关系的研究全过程文档及程序

2015年认证杯SPSSPRO杯数学建模 C题 荒漠区动植物关系的研究 原题再现&#xff1a; 环境与发展是当今世界所普遍关注的重大问题, 随着全球与区域经济的迅猛发展, 人类也正以前所未有的规模和强度影响着环境、改变着环境, 使全球的生命支持系统受到了严重创伤, 出现了全球变暖…

R语言基础入门

1.保存或加载工作空间 改变工作目录——进行文件读写&#xff0c;默认去指定文件进行操作。&#xff08;使用R时&#xff0c;最好先设定工作目录&#xff08;setwd(),getwd()&#xff09;&#xff09; setwd(“工作文件路径”)&#xff1a;建立工作目录 getwd&#xff08;&…

【STM32嵌入式系统设计与开发】——9Timer(定时器中断实验)

这里写目录标题 一、任务描述二、任务实施1、ActiveBeep工程文件夹创建2、函数编辑&#xff08;1&#xff09;主函数编辑&#xff08;2&#xff09;USART1初始化函数(usart1_init())&#xff08;3&#xff09;USART数据发送函数&#xff08; USART1_Send_Data&#xff08;&…

【论文阅读】Probabilistic Imputation for Time-series Classification with Missing Data

Probabilistic Imputation for Time-series Classification with Missing Data 论文链接&#xff1a;https://icml.cc/virtual/2023/poster/23522 作者&#xff1a;SeungHyun Kim Hyunsu Kim EungGu Yun Hwangrae Lee Jaehun Lee Juho Lee 机构&#xff1a;韩国科学技术…

突破编程_C++_面试(STL 编程 priority_queue)

1 请解释 priority_queue 在 STL 中的作用&#xff0c;并说明它与队列&#xff08;queue&#xff09;的主要区别是什么&#xff1f; priority_queue 在 STL 中的作用 priority_queue 是 STL&#xff08;Standard Template Library&#xff09;中的一个容器适配器&#xff0c;…

什么情况下 C++ 需要垃圾处理机制?

C&#xff0c;作为一种以性能和灵活性著称的编程语言&#xff0c;历来以其严谨的手动内存管理而闻名。然而&#xff0c;尽管C提供了丰富的工具如RAII&#xff08;Resource Acquisition Is Initialization&#xff09;原则、智能指针等来协助开发者有效地管理内存&#xff0c;但…

学会在 C++ 中使用变量:从定义到实践

C 变量 变量是用于存储数据值的容器。 在 C 中&#xff0c;有不同类型的变量&#xff08;使用不同的关键字定义&#xff09;&#xff0c;例如&#xff1a; int - 存储整数&#xff08;没有小数点&#xff09;&#xff0c;例如 123 或 -123double - 存储浮点数&#xff0c;带…

Python 命名规则

变量名 使用小写字母和下划线组合&#xff0c;例如&#xff1a;my_variable。 变量名应具有描述性&#xff0c;以便易于理解变量的用途。 函数名 使用小写字母和下划线组合&#xff0c;例如&#xff1a;my_function。 函数名应具有描述性&#xff0c;以便易于理解函数的功…