论文阅读_扩散模型_LDM

news2024/11/26 17:21:04

英文名称: 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]
通过图像条件对数据来训练模型。其中 τθ 和 εθ 联合优化。 这种调节机制非常灵活,因为 τθ 可以由特定领域的专家网络进行参数化,τθ处理后条件入引绿色块,通过交叉注意力,作用于主干网络εθ,影响图像的生成。有效地解耦了条件模块和图像模块,即使后面加入其它条件,也不需要考虑修改绿色的主干网。

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

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

相关文章

Spring补充

一.Spring JDB 配置两个jar包 <!-- spring-jdbc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.2.2.RELEASE</version> </dependency> <!-- 阿里数据…

Python实现T检验

今天来分享一下T检验的python实现方法。 01 先来上一波概念。 1.单样本t检验&#xff0c;又称单样本均数t检验&#xff0c;适用于来自正态分布的某个样本均数与已知总体均数的比较&#xff0c;其比较目的是检验样本均数所代表的总体均数是否与已知总体均数有差别。已知总体均数…

权限提升-数据库提权-MSF-UDF提权

权限提升基础信息 1、具体有哪些权限需要我们了解掌握的&#xff1f; 后台权限&#xff0c;网站权限&#xff0c;数据库权限&#xff0c;接口权限&#xff0c;系统权限&#xff0c;域控权限等 2、以上常见权限获取方法简要归类说明&#xff1f; 后台权限&#xff1a;SQL注入,数…

PVE 8.0.4 配置记录

前言 七夕收到了媳妇送的礼物 Beelink SER 5 PRO (Ryzen 5700U), 记录打造成私人服务器的过程. 下载安装 Proxmox 8.0.4 https://www.proxmox.com/en/downloads 安装过程中修改磁盘设置: swap 分区设置为物理内存的 2 倍, 防止虚机太多内存不足 root 最大设置为 32 GB, 多了…

SpringCloud入门——微服务调用的方式 RestTemplate的使用 使用nacos的服务名初步(Ribbon负载均衡)

目录 引出微服务之间的调用几种调用方法spring提供的组件 RestTemplate的使用导入依赖生产者模块单个配置的情况多个配置的情况没加.yaml的报错【报错】两个同名配置【细节】 完整代码config配置主启动类controller层 消费者模块进行配置restTemplate配置类controller层 使用na…

云渲染对本地电脑要求高不高?对配置有要求吗?

自己本地电脑渲不动&#xff0c;又没有用过云渲染的朋友们一般都会有这样的疑问&#xff1a;云渲染对电脑要求高不高&#xff1f;需要什么样的配置才能用上云渲染&#xff1f; 其实云渲染对本地电脑的配置是完全没有要求的&#xff0c;相反它还能减轻你本地电脑的运行负担&…

Linux驱动——模块化编程

文章目录 模块化编程方法一方法二前提模块化编程模块化编程基本框架&#xff08;重要&#xff09;模块化编程的编译ubantu上操作开发板的文件系统的指令——make超级终端上的模块指令 多模块情况1情况2 传递参数传递单个参数传递数组 模块化编程 方法一 修改kconfig&#xff…

时间序列数据在工厂运营管理中的作用

工业领域中&#xff0c;数据一直扮演着不可或缺的角色&#xff0c;而时间序列数据则因其独特的特性在工厂运营管理中发挥着极其重要的作用。从揭示趋势到支持实时决策&#xff0c;时间序列数据成为工厂智能化的关键组成部分&#xff0c;以下将对时间序列数据在工厂运营管理中的…

Linux - Docker 安装使用教程

Docker 官方文档地址: Get Started | Docker 中文参考手册: https://docker_practice.gitee.io/zh-cn/ 1.什么是 Docker 1.1 官方定义 最新官网首页 # 1.官方介绍 - We have a complete container solution for you - no matter who you are and where you are on your contain…

git difftool对比差异,避免推送不相关内容

问题 在利用git进行版本管理的时候&#xff0c;经常会由于对其他不相关的代码&#xff0c;做了一些小改动&#xff0c;例如删除了一个空行&#xff0c;多了一个缩进等。 为避免将这些不相关的改动也提交到远程&#xff0c;对PR造成不必要的影响&#xff0c;可以利用git diff命…

JVM-性能优化工具 MAT

一、MAT下载和安装 1、概述 MAT&#xff08;Memory Analyzer Tool&#xff09;工具是一款功能强大的]ava堆内存分析器。可以用于查找内存泄漏以及查看内存消耗情况。MAT是基于Eclipse开发的&#xff0c;不仅可以单独使用&#xff0c;还可以作为插件的形式嵌入在Eclipse中使用…

对话iPayLinks:在支付赛道,用技术创新发现出海“潮水的流向”

2023是充满变化和机遇的一年。从突飞猛进的Temu、TikTok Shop等新渠道&#xff0c;到“全托管模式”席卷整个跨境电商行业&#xff0c;以及Chat GPT等人工智能大模型的横空出世&#xff0c;都让出海每一环的从业者感受到“潮水流向的变化”。 不久前&#xff0c;7月及上半年进出…

爬虫项目(一):艺术二维码制作

《Python网络爬虫入门到实战》京东购买地址,这里讲解了大量的基础知识和实战,由本人编著: https://item.jd.com/14049708.html配套代码仓库地址:https://github.com/sfvsfv/Crawer艺术二维码制作 到知数云https://data.zhishuyun.com/services ,申请艺术二维码API,可免费…

【广州华锐互动】AR昆虫认知学习系统实现对昆虫形态的捕捉和还原

随着科技的不断发展&#xff0c;人们对自然界的认识也在不断加深。在这个过程中&#xff0c;AR&#xff08;增强现实&#xff09;技术的出现为人们带来了全新的体验方式。为此&#xff0c;广州华锐互动开发了AR昆虫认知学习系统&#xff0c;本文将为大家详细介绍这款系统的特点…

谷歌发布Gemini以5倍速击败GPT-4

在Covid疫情爆发之前&#xff0c;谷歌发布了MEENA模型&#xff0c;短时间内成为世界上最好的大型语言模型。谷歌发布的博客和论文非常可爱&#xff0c;因为它特别与OpenAI进行了比较。 相比于现有的最先进生成模型OpenAI GPT-2&#xff0c;MEENA的模型容量增加了1.7倍&#xf…

Android 中SettingsActivity(PreferenceFragmentCompat)的简单使用

如果你需要一个简单的APP设置&#xff0c;可以使用sharedPreferences进行存储&#xff0c;我们可以借助AndroidStudio快速创建一个用于设置的Activity&#xff0c;其实它是继承PreferenceFragmentCompat&#xff0c;存储方式用的就是sharedPreferences&#xff0c;只是帮我们节…

一文教你如何防御数据库渗透入侵

前言 前段时间博主在做学校内部项目的时候&#xff0c;项目需要暂时上线测试&#xff0c;没想到上线测试几天&#xff0c;MySQL 数据库数据就被恶意删除&#xff0c;但是当时我们没有太当回事&#xff0c;以为只是一次普通黑客攻击&#xff0c;恢复数据之后仍然可以正常使用。…

『 LeetCode题解 』203. 移除链表元素

题目链接 : 『 LeetCode题解 』203. 移除链表元素 https://leetcode.cn/problems/remove-linked-list-elements/ 目录 &#x1f31f;题目要求&#x1f31f;解题思路&#xff08;动图解析&#xff09;&#x1f9d0;方案一&#x1f601;方案二 &#x1f31f;代码示列 &#x1f31…

海康机器人工业相机SDK MVS安装教程

文章目录 一. 海康机器人介绍二. 工业相机客户端安装教程 一. 海康机器人介绍 海康机器人是面向全球的机器视觉和移动机器人产品及解决方案提供商&#xff0c;业务聚焦于工业物联网、智慧物流和智能制造&#xff0c;构建开放合作生态&#xff0c;为工业和物流领域用户提供服务…

低代码平台如何改变软件开发?低代码平台是否能形成新生态?

低代码平台如何改变软件开发&#xff1f;低代码平台是什么&#xff1f;低代码平台又有什么样的独特价值&#xff1f;在如今的市场环境下&#xff0c;低代码平台又能展现出怎样的生机&#xff1f; 01 什么是低代码开发平台&#xff1f; 低代码开发平台是一种更偏向于赋能技术人…