论文阅读_扩散模型_LDM

英文名称: High-Resolution Image Synthesis with Latent Diffusion Models
中文名称: 使用潜空间扩散模型合成高分辨率图像
地址: https://ieeexplore.ieee.org/document/9878449/
代码: https://github.com/CompVis/latent-diffusion
作者:Robin Rombach
日期: 2022-06-01
引用: 2275

1 读后感

Latent Diffusion Models (LDMs)基于潜空间的扩散模型,是目前主流的基础模型,Stable diffusion 就是基于 LDMs 原理工作的。之前的扩散模型运算都在像素层面,优化通常会消耗数百个 GPU 天,且评估和推理成本也很高。LDMs 大量自编码器的运算基于潜空间数据,降低了计算复杂度,从而大幅节省了算力,并保持了图像质量和灵活度,它让更多人可以训练模型。其应用场景包含有条件(根据文本或图像生成图像)和无条件(去噪/着色/根据涂鸦合成)的图像生成。

研究背景和动机

扩散模型是由逐层去噪的自动编码器构建的,基于似然的模型。这种模型倾向于花费过多的容量和资源对难以察觉的细节进行建模,尽管使用了重新加权的变分目标,但在 RGB 图像的高维空间中训练和生成仍需要大量计算。

LDMs 学习可以分为两个阶段:首先找到一个感知上等效但计算上更合适的空间(感知压缩);然后,在其上训练扩散模型(语义压缩)。另外,本中还通过设计架构,分离了自动编码和具体的任务,使得同一编码器可用于多个任务。

论文贡献如下:

  • 优化压缩,支持更忠实和详细的重建效果,有效构建高分辨率图像。
  • 在多种任务中,显著降低了推理成本。
  • 不需要对重建和生成能力进行微妙的加权,几乎不需要对潜在空间进行正则化。
  • 模型可以卷积方式使用并渲染约 1024x1024 像素的大而一致的图像。
  • 设计了基于交叉注意力的调节机制,实现了多模式训练模型(一个模型支持多个功能)。
  • 在github上开源了算法。

方法

明确分离压缩阶段和生成阶段有以下优势:(1) 脱离高维空间,在低维空间中的扩散模型更高效;(2) 继承了 UNet 架构的归纳偏差,这对具有空间结构(上下左右的相关性)的数据特别有效; (3) 获得通用压缩模型,其潜在空间可用于训练多种生成模型,也可用于其他下游应用。

主逻辑分成三部分,第一部分是像素空间与潜空间之间的转换,即感知图像压缩(粉色);第二部分是在潜空间操作的扩散模型(绿色);第三部分是用文本描述或其它图片作为条件,控制图像生成(白色)。

感知图像压缩

感知压缩模型由一个通过感知损失和基于 patch 的对抗目标相结合的自编码器组成。
给定 RGB 空间中的图像 x ∈ RH×W ×3,编码器 E 将 x 编码为潜在表示 z = E(x),解码器 D 从潜在表示重建图像,给出 ̃ x = D( z) = D(E(x)),其中 z ∈ Rh×w×c。编码器按因子 f = H/h = W/w 对图像进行下采样(后面实验发现,下采样在4,8,16时效果最好)。

潜空间扩散模型

扩散模型

扩散模型原理比较复杂,之后会写文章专门详述,这里只做简单介绍:

  • 有一张图x0,分多步,每步向图里加入少量噪声,图将变得越来越模糊,最后变成了一张全是噪声的图xT,将加噪操作设为q
  • 在中间过程第t步,有可能从第t步还原出第t-1步的图像,以此类推,一步一步往上倒,理论上,就能从最后一步xT还原出原图x0。将去噪操作设为p
  • 所以建模的目标是找到从t步还原第t-1步的方法,也就是对p建模。

经过简化,最终扩散模型的目标函数是:
L D M = E x , ϵ ∼ N ( 0 , 1 ) , t [ ∥ ϵ − ϵ θ ( x t , t ) ∥ 2 2 ] L_{D M}=\mathbb{E}_{x, \epsilon \sim \mathcal{N}(0,1), t}\left[\left\|\epsilon-\epsilon_{\theta}\left(x_{t}, t\right)\right\|_{2}^{2}\right] LDM=Ex,ϵN(0,1),t[ϵϵθ(xt,t)22]
这里考虑第t步,xt是第t步的加噪图像,经过训练来预测其输入 xt 的去噪变体 ε,目标是让实际值和模型预测值尽量一致,通过训练给模型调参。

潜空间的扩散模型

将作用于像素级的扩散模型转换为作为于压缩低频空间(潜空间)的扩散模型。与高维像素空间相比,该空间更适合基于似然的生成模型,因为它可以专注于数据的重要语义;且在较低维度进行训练更为高效。

公式变为:
L D M : = E E ( x ) , ϵ ∼ N ( 0 , 1 ) , t [ ∥ ϵ − ϵ θ ( z t , t ) ∥ 2 2 ] {L D M}:=\mathbb{E}_{\mathcal{E}(x), \epsilon \sim \mathcal{N}(0,1), t}\left[\left\|\epsilon-\epsilon_{\theta}\left(z_{t}, t\right)\right\|_{2}^{2}\right] LDM:=EE(x),ϵN(0,1),t[ϵϵθ(zt,t)22]
文中模型的主干 εθ 通过时间条件 UNet 实现。由于前向过程是固定的,在训练期间可以通过 E 有效地获得 zt,并且只需通过 D 即可将来自 p(z) 的样本解码到图像空间。

条件机制

扩散模型原则上能够对 p(z|y) 形式的条件分布进行建模。它通过条件去噪自动编码器 εθ(zt, t, y) 来实现,通过输入条件 y(通过文本生成图像,通过图像生成图像)控制合成过程。

具体方法是通过交叉力注意机制增强其底层 UNet 主干网,Attention(Q, K, V ),
Q = W Q ( i ) ⋅ φ i ( z t ) , K = W K ( i ) ⋅ τ θ ( y ) , V = W V ( i ) ⋅ τ θ ( y ) Q=W_{Q}^{(i)} \cdot \varphi_{i}\left(z_{t}\right), K=W_{K}^{(i)} \cdot \tau_{\theta}(y), V=W_{V}^{(i)} \cdot \tau_{\theta}(y) Q=WQ(i)φi(zt),K=WK(i)τθ(y),V=WV(i)τθ(y)
其中y是条件,φi(zt) 是 UNet 的中间表示,的WQ, WK, WV是可学习的投影矩阵。
L L D M : = E E ( x ) , y , ϵ ∼ N ( 0 , 1 ) , t [ ∥ ϵ − ϵ θ ( z t , t , τ θ ( y ) ) ∥ 2 2 ] L_{L D M}:=\mathbb{E}_{\mathcal{E}(x), y, \epsilon \sim \mathcal{N}(0,1), t}\left[\left\|\epsilon-\epsilon_{\theta}\left(z_{t}, t, \tau_{\theta}(y)\right)\right\|_{2}^{2}\right] LLDM:=EE(x),y,ϵN(0,1),t[ϵϵθ(zt,t,τθ(y))22]
通过图像条件对数据来训练模型。其中 τθ 和 εθ 联合优化。 这种调节机制非常灵活,因为 τθ 可以由特定领域的专家网络进行参数化,τθ处理后条件入引绿色块,通过交叉注意力,作用于主干网络εθ,影响图像的生成。有效地解耦了条件模块和图像模块,即使后面加入其它条件,也不需要考虑修改绿色的主干网。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WEB项目利用Eclipse打包成war包并部署在CentOS8

1、Eclipse把WEB项目打包成war包 2、Xftp上传war包到Linux中安装Tomcat的webapps目录 /usr/local/tomcat/apache-tomcat-9.0.80/webapps3、利用IP地址访问部署的项目 在CentOS中可用 ifconfig找到对应的IP地址 http://192.168.122.2:8080/CentOS-Web/index.html

对Excel表中归类的文件夹进行自动分类

首先把excel表另存为.txt文件(注意:刚开始可能是ANSI格式,需要转成UTF-8格式);再新建一个.txt文件,重命名成.bat文件(注意:直接创建的如果是是UTF-8格式,最好转成ANSI格式&#xff0…

VSCode连接服务器

Pycharm连接服务器参考我的另一篇文章Pycharm远程连接服务器_pycharm进入服务器虚拟环境终端_Jumbo星的博客-CSDN博客 本质上Pycharm和VSCode都只是IDE,没有什么好坏之分。但是因为Pycharm连接服务器(准确来说是部署)需要买professional。而…

Lesson5-1:OpenCV视频操作---视频读写

学习目标 掌握读取视频文件,显示视频,保存视频文件的方法 1 从文件中读取视频并播放 在OpenCV中我们要获取一个视频,需要创建一个VideoCapture对象,指定你要读取的视频文件: 创建读取视频的对象 cap cv.VideoCapt…

关于大模型参数微调的不同方法

Adapter Tuning 适配器模块(Adapter Moudle)可以生成一个紧凑且可扩展的模型;每个任务只需要添加少量可训练参数,并且可以在不重新访问之前任务的情况下添加新任务。原始网络的参数保持不变,实现了高度的参数共享 Pa…

ChatGPT 实现动态地图可视化展示

地图可视化分析有许多优点和好处: 1.直观理解:地图可视化使得复杂的数据更易于理解。通过地图可视化,人们可以直观地看到地理位置、地区之间的关系以及空间分布的模式。 2.提高决策效率:地图可视化可以帮助决策者快速理解和解释数据,从而提高决策效率。 3.高效的数据整…

OpenCV(八):图像二值化

目录 1.固定值二值化 2.自适应阈值二值化 3.Android JNI完整代码 1.固定值二值化 固定阈值二值化是OpenCV中一种简单而常用的图像处理技术,用于将图像转换为二值图像。在固定阈值二值化中,像素值根据一个预定义的阈值进行分类,大于阈值的…

jupyter常用的方法以及快捷键

选中状态 蓝色 按enter 进入编辑状态 编辑状态 绿色 按Esc 进入选中状态 Code模式运行是运行代码 Markdown模式运行是进入预览状态 - - - 是文本格式的一种精简的语法形式 Raw NBConvert 是默认文本状态 - - - 输入什么样 展示什么样 Y - - - 切换code模式 M - - - 切换Markdo…

C++:日期类

学习目标: 加深对四个默认构造函数的理解: 1.构造函数 2.析构函数 3.拷贝构造 4.运算符重载 实现功能 1.比较日期的大小 2.日期-天数 3.前/后置,-- 这里基本会使用运算符重载 定义一个日期类 class Date { public://1.全缺省参数的构造函数Da…

C++面试题(期)-数据库(二)

目录 1.3 事务 1.3.1 说一说你对数据库事务的了解 1.3.2 事务有哪几种类型,它们之间有什么区别? 1.3.3 MySQL的ACID特性分别是怎么实现的? 1.3.4 谈谈MySQL的事务隔离级别 1.3.5 MySQL的事务隔离级别是怎么实现的? 1.3.6 事…

qt creater11 翻译国际化教程教程:

先出效果图。 闲聊几句:qt这个翻译很方便,能直接导出项目里所有文字。 具体步骤如下: 在Qt中,我们可以使用QTranslator类来实现多语言切换。以下是一般步骤: 1. 在你的源代码中,所有需要翻译的字符串都…

【Linux】JumpServer 堡垒机远程访问

文章目录 前言1. 安装Jump server2. 本地访问jump server3. 安装 cpolar内网穿透软件4. 配置Jump server公网访问地址5. 公网远程访问Jump server6. 固定Jump server公网地址 前言 JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。JumpS…

工服穿戴检测算法 工装穿戴识别算法

工服穿戴检测算法 工装穿戴识别算法利用yolo网络模型图像识别技术,工服穿戴检测算法 工装穿戴识别算法可以准确地识别现场人员是否穿戴了正确的工装,包括工作服、安全帽等。一旦检测到未穿戴的情况,将立即发出警报并提示相关人员进行整改。Yo…

命令行编译VS工程

先输入以下命令,因为命令出错了,就会弹出帮助,如下: "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe" /help 反正就是Microsoft Visual Studio 的安装路径。 帮助界面如下&#xff1a…

【强化学习】贝尔曼公式 - bellman equation

return作用 还是用这个迷宫游戏说。 首先明确,不撞墙到终点比撞墙到终点好。路径越短到终点越好。 不撞墙到终点比撞墙到终点好。你可以把撞墙这个reward设置成负数,不撞墙设置成0。那么在最终return进行累加的时候,不撞墙的return就会大。路…

Qt+C++桌面计算器源码

程序示例精选 QtC桌面计算器源码 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<QtC桌面计算器源码>>编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 学习与…

数学建模--非多项式拟合法的Python实现

目录 1.算法异同区别 2.算法核心步骤 3.算法核心代码 4.算法效果展示 1.算法异同区别 #*************************************************************************************************************# 方法区别探究 1.对于多项式拟合你需要大致知道这些点的分布&#xf…

Mycat教程+面试+linux搭建

目录 一 MyCAT介绍 二 常见的面试题总结 三 linux下搭建Mycat 一 MyCAT介绍 1.1. 什么是MyCAT&#xff1f; 简单的说&#xff0c;MyCAT就是&#xff1a; 一个彻底开源的&#xff0c;面向企业应用开发的“大数据库集群” 支持事务、ACID、可以替代Mysql的加强版数据库 一个可…

QEMU 啓動gdb 調試

背景 上一章介紹了如何使用QEMU 運行RISC-V 程序, GDB 作爲強大的代碼調試工具,對軟件開發至關重要,本章介紹如何啓動GDB 調試 CSDNhttps://mp.csdn.net/mp_blog/creation/editor/132522853 開啓GDB 服務 QEMU 啓動時添加-s參數, 代碼啓用本地GDB 服務, 默認端口號爲1234.…

Matlab(变量与文本读取)

目录 1.变量&#xff08;数据&#xff09;类型转换 1.1 字符 1.2 字符串 1.3 逻辑操作与赋值 2.Struct结构体数组 2.1函数的详细介绍&#xff1a; 2.1.1 cell2struct 2.1.1.1 垂直维度转换 2.1.1.2 水平维度转换 2.1.1.3 部分进行转换 2.1.2 rmfield 2.1.3 fieldnames(查…