Stable Diffusion-生成性AI的新范式

news2024/12/29 10:29:14

!

扩散模型(Stable Diffusion)现在是生成图像的首选模型。由于扩散模型允许我们以提示( prompts)为条件生成图像,我们可以生成我们所选择的图像。在这些文本条件的扩散模型中,稳定扩散模型由于其开源性而最为著名。

在这篇文章中,我们将把Stable Diffusion模型分解为构成它的各个组成部分。此外,我们还将了解稳定扩散的工作原理。

在这里插入图片描述

图1 使用Stable Diffusion从噪声中生成图像

熟悉Stable Diffusion的工作,将使我们也能理解其训练和推理的过程。在了解了Stable Diffusion的概念部分之后,我们将介绍它的不同版本和变化。

1. Stable Diffusion介绍

Latent Diffusion Model (LDM)是最初的文本-图像模型,稳定扩散模型(Stable Diffusion)是一种扩展。这意味着 "Stable Diffusion "也是一个文本-图像模型。

CompVis和RunwayML的原始开放源代码是基于Rombach等人的论文–“High-Resolution Image Synthesis with Latent Diffusion Models”。
在这里插入图片描述

图2.使用Stable Diffusion生成的戴帽子的狗的图像。

对扩散模型及其机制感到困惑吗?不要着急,本文将会使用PyTorch从头开始建立一个基本的扩散模型。

正如你现在可能已经猜到的,稳定扩散并不是唯一能生成图像的扩散模型。

在Stable Diffusion之前,有OpenAI的DALL-E 2。在这之后,谷歌发布了Imagen。这两个都是文本到图像的扩散模型。

这就提出了一个相关的问题–“稳定扩散与其他从提示语生成图像的扩散模型有何不同?”

1.1 Stable Diffusion与其他基于扩散的图像生成模型有何不同?

Stable Diffusion是在图像的潜在空间而不是在图像的像素空间工作的。
在这里插入图片描述
其他生成性扩散模型,如DALL-E 2和Imagen,在图像的像素空间上工作。这使得它们的速度变慢,而且在这个过程中,消耗了更多的内存。

自动编码器模型有助于创建这个潜在空间,它也作为模型中的噪声预测器。如果你看过之前的DDPM文章,那么你已经知道噪声预测器模型是LDM(潜伏扩散模型)中不可缺少的一部分。

在这一点上,我想到了另外几个问题。

  • UNet是稳定扩散模型中的一个组成部分/模型吗?
  • 该模型中还有其他组成部分吗?如果是的话,它们是什么?

2. Stable Diffusion模型的组成部分

我们可以将Stable Diffusion模型分解为三个主要部分:

  • 一个预先训练好的文本编码器
  • 一个UNet噪声预测器
  • 一个可变的自动编码器-解码器模型。解码器还包含一个用于生成最终高分辨率图像的Upsampler网络。
    但在训练和推理过程中,所有的组件都参与其中。在训练期间,使用编码器、UNet和预训练的文本编码器。而在推理过程中,预训练过的文本编码器、UNet和解码器都参与其中。

广义上讲,一个预训练的文本编码器将文本提示转换为embeddings。

UNet模型作为噪声预测器作用于潜在的空间信息。

自动编码器-解码器有两个任务。编码器从原始图像像素生成潜空间信息,解码器从文本条件的潜空间预测图像。

在这里插入图片描述

3. 训练 Stable Diffusion

训练Stable Diffusion模型包括三个阶段(抛开反向传播和所有数学上的东西):

  • 根据prompt创建 token embeddings。从训练的角度来看,我们将文本prompt称为标题。
  • 用embeddings对UNet进行调节。潜在空间是使用自动编码器模型的编码器部分生成的。这被称为文本条件的潜空间。
  • UNet会在潜在空间上工作。
  • 从上述步骤中,UNet预测了添加到潜空间的噪声,并试图对其进行去噪处理。

3.1 Text Encoder

一般来说,在所有的扩散模型中,Text Encoder是一个大型的预训练的transformer语言模型。
Stable Diffusion使用CLIP的预训练Text Encoder部分进行文本编码。它把提示词作为输入,并输出77×768维的 token embedding

在77个tokens,75个是来自prompt的text tokens ,1个为start token,另外1个为end token。

在这里插入图片描述
其他预训练的语言transformers模型,如T5BERT也可以使用。但 "Stable Diffusion "使用CLIP

3.2 UNet噪声预测器

在UNet之前,autoencoder-decoder模型的编码器部分将输入图像转换为其潜在的表示。

现在,重要的是要记住,UNET只作用于编码后的latent 空间,根本不处理原始图像像素。当然,它是以文字提示为条件的。将文本提示添加到潜空间的过程被称为文本调节(text conditioning)。

在这里插入图片描述

图5.带有 text embedding 的噪声调节

不仅仅是文本调节(text conditioning), latent information也要经过一个噪音添加步骤,如上文所述。

从所有上述信息中,UNet试图预测添加到图像中的噪声。

在这里插入图片描述
但这还不是全部。UNet的架构比这更复杂。它包含了用于残差连接Residual layers和用于将文本信息合并到图像的潜在空间的Attention layers。

在这里插入图片描述

Figure 7. Noise prediction with text conditioning in Stable Diffusion.

在合并merging步骤之后,残余块可以利用embedded信息去噪。

UNet输出一个64×64(空间)维度的张量。

3.3 Autoencoder-Decoder 模型

如前所述,Autoencoder的编码器encoder部分从原始图像中创建潜伏空间。

最后,该模型的解码器Decoder 部分负责生成最终图像。

在这里插入图片描述

图8.解码器对64×64矢量进行上采样,生成最终的512×512维图像

解码器作用于4x64x64维的向量,生成3x512x512的图像。原始的Stable Diffusion(直到2.0版)默认生成512×512维的图像。

3.4 训练Stable Diffusion的完整过程

正如最初的LDM论文中所示,整个过程可以总结为以下图片。

在这里插入图片描述
我们可以看到,首先编码器是如何将图像编码到一个潜伏空间中的(上半部分右侧红色块)。并注意到我们如何用文本、语义图或甚至图像来调节潜空间。

QKV块代表了来自Transformer模型的交叉注意力。大的绿色块显示了UNet在潜空间上的工作,以预测噪音。

4 Stable Diffusion推理–从噪声和提示中生成图像

一旦我们有了训练好的Stable Diffusion模型,生成图像就会经历一个与训练稍有不同的过程。

在推理过程中,我们最初并没有图像。相反,我们必须使用text prompt来生成一个。此外,我们不需要自动autoencoder-decoder 网络的编码器部分。这就把推理部分归结为以下内容:

  • 预训练的文本编码器text encoder。
  • UNet噪声预测器。
  • 以及autoencoder-decoder网络的解码器部分。

4.1 从prompt中生成图像的过程

我们不向图像添加噪声,而是直接从纯高斯噪声开始。然后Stable Diffusion对其进行迭代去噪,生成最终的图像。我们可以控制去噪步骤的数量,这被称为采样步骤。

如果是一个纯扩散模型(不以文本提示为条件),那么这个过程将类似于以下情况:
在这里插入图片描述
但在这里,我们有一个文本提示text prompt,而噪音需要以文本提示为条件。因此,这个过程看起来像这样:

在这里插入图片描述

图11.Stable Diffusion推理过程。

除了输入图像和编码器(我们不再需要了),其他每个组件都保持不变。

但是,我们在上面谈到了采样步骤。这在整个过程中是如何体现的呢?

这可以通过扩展UNet和展示去噪过程来更好地解释。

在这里插入图片描述
我们可以把上述过程称为反向扩散过程,因为该模型从噪声中生成了图像。

4.2 一些实际考虑的问题

下面是一些要点,以澄清关于推理阶段的几个概念:

  • 输入的提示不需要完全是75个字的长度。我们也可以提供更短和更长的提示。
  • 在推理过程中,UNet仍然会生成一个空间尺寸为64×64的图像。
  • autoencoder的解码器部分既是一个上采样器,也是一个超分辨率模型的组合。这就产生了最终的512×512的图像。
  • 从完全实用的角度来看,只要我们能负担得起GPU的内存,我们就可以生成任何分辨率的图像。

5. Stable Diffusion的不同版本

在这里,我们将讨论在众多的Stable Diffusion中一些比较显著的变化。

所有这些模型都是通过对基本的Stable Diffusion版本之一进行微调而得到的。

5.1 Arcane Diffusion

这种Stable Diffusion的变体在电视节目《Arcane》的图像上进行了微调。

在这里插入图片描述
在给模型提示的风格信息,就能生成对应风格的图像。

5.2 Robo Diffusion

Stable Diffusion的机器人扩散版本可以生成非常酷的机器人图像。

在这里插入图片描述

5.3 Open Journey

在这里插入图片描述
与基本的Stable Diffusion相比,这些图像更具艺术性和动态性。Openjourney模型已经在Midjourney的图像输出上进行了训练。

5.4 动漫效果

在这里插入图片描述

总结

在这篇文章中,我们介绍了稳定扩散的整个架构。除了训练和推理之外,我们还介绍了稳定扩散的实际应用效果。

正如你从这篇文章中所理解的那样,开源模型(如Stable Diffusion)让AI社区扩大了使用范围。从非常简单的角色开始,到不同艺术风格的复杂角色,这些模型让我们探索我们的创造力。此外,微调这些模型所需的计算量正在减少。几乎任何拥有非常普通的消费级GPU的人都可以微调稳定扩散模型。

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

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

相关文章

LSTM//循环神经网络的个人理解

[TOP] LSTM/循环神经网络的理解 前言自省: 作为一名已经研究深度学习网络多年的研究员,虽曾多次浅尝LSTM这种网络,但是都没有花时间对其进行深刻解读。本文只谈对LSTM在逻辑思想上的理解,不进行技术解析。 1. 经典LSTM原理图 这…

Unlimited “使用GPT-4 ”!它来了!

备注本文末尾附录注册登录过程 平台介绍: 聊天机器Chat.fore人front.ai是一为款基于人主工智能的题聊天的机器人主平台,旨在帮菜助企,业提可以高客户服务质是量和一效率。该平款台利用自然语精言处理技术和机器致学习的算法,能够自牛动排回答客,户的问题,提供个性化的服…

TensorFlow高阶API和低阶API

TensorFlow提供了众多的API,简单地可以分类为高阶API和低阶API. API太多太乱也是TensorFlow被诟病的重点之一,可能因为Google的工程师太多了,社区太活跃了~当然后来Google也意识到这个问题,在TensorFlow 2.0中有了很大的改善。本文…

Markdown常用数学公式

1 行内公式 在两个美元符号中输入公式即可。 如$Em\times c^2$ 效果: E m c 2 Em\times c^2 Emc2(注:\times是乘的意思) 2 整行公式 在四个美元符号中输入公式,如果想要给公式后面添加编号,那么在公式…

windows安装mongodb6.x并设置用户名密码

安装教程 下载安装设置账号密码利用连接工具设置配置文件重新连接 下载 官网下载地址:点击去下载 安装 这工具很好用的,页面美观,设置账号密码也必不可少,推荐勾选。 设置账号密码 利用连接工具设置 必须选择一个库 use adm…

史上最全Maven教程(三)

文章目录 🔥Maven工程测试_Junit使用步骤🔥Maven工程测试_Junit结果判定🔥Maven工程测试_Before、After🔥依赖冲突调解_最短路径优先原则🔥依赖冲突调解_最先声明原则🔥依赖冲突调解_排除依赖、锁定版本 &a…

onnx手动操作001:onnx.helper

使用onnx.helper可以进行onnx的制造组装操作: 对象描述ValueInfoProto 对象张量名、张量的基本数据类型、张量形状算子节点信息 NodeProto算子名称(可选)、算子类型、输入和输出列表(列表元素为数值元素)GraphProto对象用张量节点和算子节点组成的计算图对象ModelP…

2023年测试岗,自动化测试我该如何进阶?卷出方向...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 先编程语言打好基…

BPMN2.0 网关

网关(gateway)用于控制执行的流向(或者按BPMN 2.0的用词:执行的“标志(token)”)。网关可以消费(consuming)与生成(generating)标志。 网关用其中带有图标的菱形表示。 排他网关 排他网关(exclusive gateway)(也叫异或网关 XOR gateway,或者更专业的,基于数据…

怎么把pdf压缩的小一点 这3种方式都很简单

在日常工作中,我们常常会遇到PDF文件太大无法上传的情况。这种情况在通过聊天工具传输工作PDF文件资料或在发送附件邮件时尤为常见。如果你也遇到过类似的问题,那么怎么把pdf压缩的小一点?网上的方法虽然很多但是查找起来也是非常费心费力的。…

【正点原子Linux连载】第三章 RKMedia编译和使用 摘自【正点原子】ATK-DLRV1126系统开发手册

第三章 RKMedia编译和使用 5.1 RKMedia编译 Rkmedia是RK官方封装一层简易的API,把RGA、MPP、RKNN等等这些接口封装成高级的接口。在SDK官方的源码目录下,运行以下命令进行跳转: cd external/rkmedia/examples/ ls 运行命令结果如下所示&…

激光雷达“进阶战”:谁在引领新风向?

激光雷达正进入新的发展阶段。 高工智能汽车注意到,伴随激光雷达在2022年第一波小规模前装导入,市场正尝试向中端车型渗透,以逐步迈向快速增长期。在这一阶段,谁能解决成本可控、性能提升的难题,同时帮车企用好激光雷…

鸟哥的Linux私房菜——基础学习篇(第三版) (6-10章)

基础学习篇 第六章 :Linux 的档案权限与目录配置第七章 :档案与目录管理第八章 :Linux 磁盘与文件系统管理第九章 :文件与文件系统的压缩与打包第十章 :Vim程序编辑器 第六章 :Linux 的档案权限与目录配置 …

浅述 国产仪器仪表 6121A 音频分析仪

6121A是具有音频信号产生和音频信号分析功能的测试仪器,适用于语音性能测试和音频功放测试等领域,满足电台、移动通信、音响设备和水声通信设备对频响、谐波失真和信噪比等指标的测试需求,是音频信号性能测试的常备仪器。 6121A音频分析仪具…

Hadoop2.x集群搭建(centos7、VMware、finalshell)

第一章 Hadoop集群安装 1.1 集群规划 集群规划规划操作系统Mac、Windows虚拟软件Parallels Desktop(Mac)、VMWare(Windows)虚拟机主机名: c1, IP地址: 192.168.10.101主机名: c2, IP地址: 192.168.10.102主机名: c3, IP地址: 192.168.10.103软件包上传路径/root/softwares软件…

持续集成下接口自动化测试实践

目录:导读 引言 接口自动化测试工具介绍 接口自动化测试在持续集成中的运用 小结 引言 目前很多持续集成项目都需要执行接口层的测试,当你了解其基本概念,理解了接口协议、如何传参、测试原理后,无需 掌握程序语言&#xff0…

【MySQL高级】——目录结构数据库和文件系统的关系

一、目录结构 <1> 主要目录结构 find / -name mysql<2> 数据库文件目录 目录&#xff1a;/var/lib/mysql/ 配置方式&#xff1a;show variables like ‘datadir’; <3> 相关命令目录 目录&#xff1a;/usr/bin&#xff08;mysqladmin、mysqlbinlog、my…

软件著作权申请流程待发放多久就能到已发放拿到纸质证书?

软件著作权申请一般有两种途径 1、代理 代理机构有加急通道&#xff0c;软件著作权交件后最快20-30工作日内出&#xff0c;待发放到已发放只要3工作日拿到就可以邮寄纸质证书给你了。 2、版权中心官网自己登记 流程比较缓慢&#xff0c;而且最要命的是&#xff0c;证书是用邮…

数据划分方法简述:数据离散化和均值标准差分级法(含python代码)

文章目录 1 问题缘起2. 数据离散化等距离散等频离散聚类离散其他 3. 均值标准差分级 1 问题缘起 在数学建模中&#xff0c;我经常遇到这样一个问题&#xff1a; 在某一步中&#xff0c;需要把数据分成好几个类别或者是按照数据大小分级划分。 放到一维数据中形象一点解释就是…

InstructGPT原理讲解及ChatGPT类开源项目

InstructGPT原理讲解及ChatGPT类开源项目 Generative Pre-Trained Transformer&#xff08;GPT&#xff09; 是OpenAI的提出的生成式预训练语言模型&#xff0c;目前已经发布了GPT-1、GPT-2、GPT-3和GPT-4&#xff0c;未来也将发布GPT-5。 最近非常火的ChatGPT是基于Instruct…