Latent Diffusion Models / Stable Diffusion(LDM)

news2024/12/23 9:38:19

High-Resolution Image Synthesis with Latent Diffusion Models(CVPR 2022)
https://arxiv.org/abs/2112.10752
latent-diffusion
stable-diffusion

cross-attention(用于多模态任务)

Cross-attention vs Self-attention:Cross-attention的输入来自不同的序列,Self-attention的输入来自同序列,也就是所谓的输入不同,但是除此之外,基本一致。

假设有文本数据和图像数据:

1.文本通过一个Transformer编码器处理,输出作为查询q向量。

2.图像通过CNN处理,输出经过线性变换生成键k和值v向量。

3.计算文本查询向量q与图像键向量k的点积,得到注意力分数。

4.使用这些分数对图像的值向量v进行加权,生成最终输出。


DDPM和LDM的区别和共同点

 

LDM基本思路:【论文将这个方法称之为感知压缩(Perceptual Compression)】:在AutoEncoder的编码器 E 对图片进行压缩 ==> 然后在潜在表示空间上做diffusion操作 ==> 最后再用解码器 D 恢复到原始像素空间

回顾DDPM:Diffusion Model(DDPM)训练过程就是训练UNet预测每一步的noise,从而逐步还原原始图像。原始图像空间的Diffusion Model目标函数如下:

共同点:这里函数 \epsilon 的参数使用神经网络UNet拟合,UNet在DDPM和LDM中的作用都是预测噪声。

区别:

1. 加入Autoencoder(上图中左侧红色部分),使得扩散过程在latent space下,提高图像生成的效率;

2. 加入条件机制,能够使用其他模态的数据控制图像的生成(上图中右侧灰色部分),其中条件生成控制通过Attention(上图中间部分QKV)机制实现。


论文贡献

  • Diffusion model相比GAN可以取得更好的图片生成效果,然而该模型是一种自回归模型,需要反复迭代计算,因此训练和推理代价都很高。论文提出一种在潜在表示空间(latent space)上进行diffusion过程的方法,从而能够大大减少计算复杂度,同时也能达到十分不错的图片生成效果。
  • 相比于其它空间压缩方法,论文提出的方法可以生成更细致的图像,并且在高分辨率图片生成任务(如风景图生成,百万像素图像)上表现得也很好。
  • 论文将该模型在无条件图片生成(unconditional image synthesis), 图片修复(inpainting),图片超分(super-resolution)任务上进行了实验,都取得了不错的效果。
  • 论文还提出了cross-attention的方法来实现多模态训练,使得条件图片生成任务也可以实现。论文中提到的条件图片生成任务包括类别条件图片生成(class-condition), 文图生成(text-to-image), 布局条件图片生成(layout-to-image)。这也为日后Stable Diffusion的开发奠定了基础。

使用Autoencoder减少需要的算力(感知压缩

为了降低训练扩散模型的算力,LDMs使用一个Autoencoder去学习能尽量表达原始image space的低维空间表达(latent embedding),这样可以大大减少需要的算力。

自编码器的方法有几个优点:

  1. 通过离开高维图像空间,获得计算效率高得多的diffusion models,因为采样是在低维空间上进行的。
  2. 利用了从其UNet架构[71]继承而来的diffusion models的归纳偏差,这使它们对具有空间结构的数据特别有效,从而减轻了对之前方法所要求的激进的、降低质量的压缩水平的需求。
  3. 得到了通用的压缩模型,其潜空间可用于训练多个生成模型,也可用于其他下游应用,如单图像片段引导的合成。

Latent Diffusion Models整体框架如上图,首先需要训练好一个自编码模型(AutoEncoder,包括一个编码器 E 和一个解码器 D )。这样一来,我们就可以利用编码器对图片进行压缩,然后在潜在表示空间上做diffusion操作,最后我们再用解码器恢复到原始像素空间即可,论文将这个方法称之为感知压缩(Perceptual Compression)。个人认为这种将高维特征压缩到低维,然后在低维空间上进行操作的方法具有普适性,可以很容易推广到文本、音频、视频等领域。

在潜在表示空间上做diffusion操作其主要过程和标准的扩散模型没有太大的区别,所用到的扩散模型的具体实现为 time-conditional UNet。但是有一个重要的地方是论文为diffusion操作引入了条件机制(Conditioning Mechanisms),通过cross-attention的方式来实现多模态训练,使得条件图片生成任务也可以实现。

下面我们针对感知压缩、扩散模型、条件机制的具体细节进行展开。

条件图像生成器

DDPM的UNet可以根据当前采样的t预测noise,但没有引入其他额外条件。但是LDM实现了“以文生图”,“以图生图”等任务,就是因为LDM在预测noise的过程中加入了条件机制,即通过一个编码器(encoder)将条件和Unet连接起来。

将条件嵌入UNet中

这里引入一个新的encoder E(这个是用于条件编码的encoder,和上面提到的用于降维的是不同的)来将条件 y 映射到 T(y)

LDM训练阶段

训练阶段每个模块之间的交互如图:

 

LDM推理阶段

一文读懂Stable Diffusion 论文原理+代码超详细解读 - 知乎

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

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

相关文章

外汇天眼:交易讲究时机,不要在这几个时间交易

每个交易者都想知道,什么时候是入场买卖的最好时机。 到底是1.1800入场呢? 还是等到1.1900? 但是,交易中不仅仅是关于从哪里入场,同样的,知道什么时候不去交易也是非常重要的。 这听起来像是一回事&#x…

python coding with ChatGPT 打卡第21天| 二叉树:最近公共祖先

相关推荐 python coding with ChatGPT 打卡第12天| 二叉树:理论基础 python coding with ChatGPT 打卡第13天| 二叉树的深度优先遍历 python coding with ChatGPT 打卡第14天| 二叉树的广度优先遍历 python coding with ChatGPT 打卡第15天| 二叉树:翻转…

网络原理 - HTTP/HTTPS(4)

HTTP响应详解 认识"状态码"(status code) 状态码表示访问一个页面的结果.(是访问成功,还是失败,还是其它的一些情况...).(响应结果如何) 学习状态码 -> 为了调试问题. 写服务器时,按照状态码的含义正确使用. 200 OK 这是最常见的状态码,表示访问成功. 抓包抓…

超详细!三款内衣洗衣机PK评测,希亦、觉飞、由利谁更胜一筹?

内衣裤作为我们日常必备的贴身衣物,所以对卫生方面的要求也比较高,但对许多人们而言,对内衣裤进行清洗是一项相当繁琐的事情,主要是因为并不能直接把内衣裤放入大型洗衣机里和其它衣服混合洗,所以大多数用户都会自己动…

不止于框架:全面深入Spring MVC,成就开发高手

介绍:Spring MVC是一个基于Java的轻量级Web框架,它实现了MVC(Model-View-Controller)设计模式。以下是对Spring MVC的详细介绍: MVC架构模式:Spring MVC遵循MVC架构模式的思想,将应用程序分为模…

几个常见的C/C++语言冷知识

当涉及到C/C语言时,有一些冷知识可能并不为人所熟知,但却可以让你更深入地理解这门古老而强大的编程语言。以下是一些有趣的C/C语言冷知识。 1. 数组的下标可以是负数 在我们日常的C语言编程中,数组是一个非常常见的数据结构。我们习惯性地使…

CSS 函数详解url、min、rgb、blur、scale、rotate、translate等

随着技术的不断进步,CSS 已经从简单的样式表发展成为拥有众多内置函数的强大工具。这些函数不仅增强了开发者的设计能力,还使得样式应用更加动态、灵活和响应式。本文将深入探讨 CSS 常见的 66 个函数,逐一剖析它们的功能和用法,一…

Linux目录:scp命令

目录 1 scp命令1.1简介1.2命令说明1.3 实例1、从本地复制的远程2、从远程复制到本地3、-r:复制目录4、 -p:保留原文件的修改时间,访问时间5、-P:指定传输数据的端口6、扩展:修改ssh默认端口 1 scp命令 1.1简介 scp 是…

如何在Shopee平台上选择爆款商品:借鉴爆款属性的有效策略

在当今激烈竞争的电商市场中,想要在Shopee平台上取得成功,卖家需要精心选择潜在的热销产品。借鉴爆款商品的属性是一种行之有效的策略,能够帮助卖家快速找到市场上的热门商品。通过分析市场趋势、竞品表现、社交媒体趋势等多方面因素&#xf…

单片机学习笔记---红外遥控(外部中断)

目录 红外遥控简介 硬件电路 基本发送与接收 NEC编码​​​​​​​ 遥控器键码 复习外部中断和定时器 红外遥控简介 红外遥控是利用红外光进行通信的设备,由红外LED将调制后的信号发出,由专用的红外接收头进行解调输出 通信方式:单工…

String字符串,FastJson常用操作方法

JSON字符串操作 1、创建配置环境 # 引入测试包testImplementation group: org.springframework.boot, name: spring-boot-starter-test, version: 2.2.6.RELEASE # 创建测试类RunWith(SpringRunner.class)SpringBootTestpublic class JsonTest {Testpublic void test(){Syste…

13.Qt 文件的读和写,样式表文件的读用

目录 前言: 技能: 内容: 1. 界面 2.信号槽 ①浏览按键 ②保存按键 ③加载样式按键 参考: 前言: 上一篇文章说明了如何弹窗选取文件并在Qlabel中显示文件内容 12.QT文件对话框 文件的弹窗选择-QFileDialog 这篇…

Gitlab CI 报错: /usr/bin/bash: line 137: kubectl: command not found

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

【 Maven 】花式玩法之多模块项目

目录 一、认识Maven多模块项目 二、maven如何定义项目的发布策略 2.1 版本管理 2.2 构建配置 2.3 部署和发布 2.4 依赖管理 2.5 发布流程 三、使用Jenkins持续集成Maven项目 四、总结 如果你有一个多模块项目,并且想将这些模块发布到不同的仓库或目标位置&…

机器学习基础(四)非监督学习的进阶探索

导语:上一节我们详细探索监督学习的进阶应用,详情可见: 机器学习基础(三)监督学习的进阶探索-CSDN博客文章浏览阅读296次,点赞13次,收藏11次。监督学习作为机器学习的一个主要分支,…

34.仿简道云公式函数实战-数学函数-PRODUCT

1. PRODUCT函数 函数使所有以参数形式给出的数字相乘并返回乘积。 2. 函数用法 PRODUCT(number1, [number2], …) 3. 函数示例 PRODUCT(数量, 单价) 4. 代码实战 首先我们在function包下创建math包,在math包下创建ProductFunction类,代码如下&…

x86与arm架构区别

前言 我们经常讨论的芯片的X86架构和ARM架构,那么他们的的区别什么呢?其实俩种都是主流的两种计算机处理器架构(CPU)架构,X86架构的CPU是PC服务器行业的老大,ARM架构的CPU则是移动端的老大。X86架构和arm架…

如何在Shopee 上选择热销商品?shopee应该在哪选品

在如今激烈竞争的电商市场中,如何通过精准的选品策略提升在Shopee平台上的销售业绩成为卖家们关注的焦点。Shopee作为一个蓬勃发展的电商平台,提供了多种资源和工具来帮助卖家做出明智的选品决策。通过深入了解这些渠道和策略,卖家们可以更好…

云服务器ECS价格表出炉——阿里云

2024年阿里云服务器租用价格表更新,云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、ECS u1实例2核4G、5M固定带宽、80G ESSD Entry盘优惠价格199元一年,轻量应用服务器2核2G3M带宽轻量服务器一年61元、2核4G4M带宽轻量服务器一年165元12个月、2核4G服…

Redis 有哪些架构模式?讲讲各自的特点

单机版模式 特点:简单 问题: 1、内存容量有限 2、处理能力有限 3、无法高可用。 主从复制 Redis 的复制(replication)功能允许用户根据一个 Redis 服务器来创建任意多个该服务器的复制品,其中被复制的服务器为主服…