Stable Diffusion扩散模型 + Consistency一致性模型

1 GAN到Stable Diffusion的改朝换代

随着人工智能在图像生成,文本生成以及多模态生成等生成领域的技术不断累积,生成对抗网络(GAN)、变微分自动编码器(VAE)、normalizing flow models、自回归模型(AR)、energy-based models以及近年来大火的扩散模型(Diffusion Model)。

GAN:额外的判别器
VAE:对准后验分布
EBM基于能量的模型:处理分区函数
归一化流:施加网络约束
在这里插入图片描述

生成领域 G A N 已经有点过时, S t a b l e D i f f u s i o n 替代了他的位置 生成领域GAN已经有点过时,Stable Diffusion替代了他的位置 生成领域GAN已经有点过时,StableDiffusion替代了他的位置

  • GAN要训练俩网络,感觉难度较大,容易不收敛,而且多样性比较差,只关注能骗过判别器就得了。
  • Diffusion Model用一种更简单的方法来诠释了生成模型该如何学习以及生成,其实感觉更简单。

DALL·E2(基于CLIP多模态图像文本融合模型)、Stable Diffusion扩散模型

2 从DDPM到Stable Diffusion发展史

2.1 DDPM

Diffusion扩散模型是一类生成式模型,从随机噪声直接生成图片。[Diffusion Model DDPM: Denoising Diffusion Probabilistic Models]

思路:训练一个噪声估计模型,并将输入随机噪声还原成图片,其中噪声就是标签,还原的时候,模型根据噪声生成对应的图像

训练过程:随机生成噪声 ϵ \epsilon ϵ,经过N步将噪声逐渐扩散到输入原始图片 x 0 x_0 x0中,破坏后的图片为 x n x_n xn,学习破坏图片的预估噪声 ϵ θ ( x n , n ) \epsilon_\theta( x_n,n) ϵθ(xn,n) ,用L2 loss约束与 ϵ \epsilon ϵ 原始输入噪声的距离。

推理过程:就输入噪声,经过预估噪声模型还原成图片。
在这里插入图片描述
总结:扩散模型是怎么工作的?
训练过程: 前向扩散过程,对一张图像逐渐添加高斯噪音,直至图像变成随机噪音。
推理过程: 反向生成过程,从一个随机噪音开始逐渐去噪音,直至生成一张图像。

在这里插入图片描述

前向扩散过程重要公式
x t x_t xt是t时刻的图像分布, z i z_i zi是噪声,我们可以通过初始的分布 x 0 x_0 x0和噪声 z i z_i zi,进行N步扩散,得到最终的噪声图像 x n x_n xn
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

反向生成过程重要公式
学习到噪声预估模型 ϵ θ ( x n , n ) \epsilon_\theta( x_n,n) ϵθ(xn,n)后,随机生成一个初始噪声 x n x_n xn,通过该模型,做N步生成去噪声,恢复到 x 0 x_0 x0图片。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
UNet预测噪声 Z t Z_t Zt
在这里插入图片描述

在这里插入图片描述

Diffusion起作用的关键
隐变量模型、两个过程都是一个参数化的马尔可夫链、变分推断来进行建模和求解

2.2 Stable Diffusion

扩散模型最大的问题是它的时间成本和经济成本都极其“昂贵”。Stable Diffusion的出现就是为了解决上述问题。如果我们想要生成一张 1024 × 1024 尺寸的图像,U-Net 会使用 1024 × 1024 尺寸的噪声,然后从中生成图像。这里做一步扩散的计算量就很大,更别说要循环迭代多次直到100%。一个解决方法是将大图片拆分为若干小分辨率的图片进行训练,然后再使用一个额外的神经网络来产生更大分辨率的图像(超分辨率扩散)。

在这里插入图片描述
潜在空间(Lantent Space)
潜在空间简单的说是对压缩数据的表示。所谓压缩指的是用比原始表示更小的数位来编码信息的过程。比如我们用一个颜色通道(黑白灰)来表示原来由RGB三原色构成的图片,此时每个像素点的颜色向量由3维变成了1维度。维度降低会丢失一部分信息,然而在某些情况下,降维不是件坏事。通过降维我们可以过滤掉一些不太重要的信息你,只保留最重要的信息。

假设我们像通过全连接的卷积神经网络训练一个图像分类模型。当我们说模型在学习时,我们的意思是它在学习神经网络每一层的特定属性,比如边缘、角度、形状等……每当模型使用数据(已经存在的图像)学习时,都会将图像的尺寸先减小再恢复到原始尺寸。最后,模型使用解码器从压缩数据中重建图像,同时学习之前的所有相关信息。因此,空间变小,以便提取和保留最重要的属性。这就是潜在空间适用于扩散模型的原因。
在这里插入图片描述
Latent Diffusion
“潜在扩散模型”(Latent Diffusion Model)将GAN的感知能力、扩散模型的细节保存能力和Transformer的语义能力三者结合,创造出比上述所有模型更稳健和高效的生成模型。与其他方法相比,Latent Diffusion不仅节省了内存,而且生成的图像保持了多样性和高细节度,同时图像还保留了数据的语义结构。

任何生成性学习方法都有两个主要阶段:感知压缩和语义压缩。

感知压缩
在感知压缩学习阶段,学习方法必须去除高频细节将数据封装到抽象表示中。此步骤对构建一个稳定、鲁棒的环境表示是必要的。GAN 擅长感知压缩,通过将高维冗余数据从像素空间投影到潜在空间的超空间来实现这一点。潜在空间中的潜在向量是原始像素图像的压缩形式,可以有效地代替原始图像。更具体地说,用自动编码器 (Auto Encoder) 结构捕获感知压缩。 自动编码器中的编码器将高维数据投影到潜在空间,解码器从潜在空间恢复图像。

语义压缩
在学习的第二阶段,图像生成方法必须能够捕获数据中存在的语义结构。 这种概念和语义结构提供了图像中各种对象的上下文和相互关系的保存。 Transformer擅长捕捉文本和图像中的语义结构。 Transformer的泛化能力和扩散模型的细节保存能力相结合,提供了两全其美的方法,并提供了一种生成细粒度的高度细节图像的方法,同时保留图像中的语义结构。

自动编码器VAE
自动编码器 (VAE) 由两个主要部分组成:编码器和解码器。编码器会将图像转换为低维潜在表示(像素空间–>潜在空间),该表示将作为输入传递给U_Net。解码器做的事情刚好相反,将潜在表示转换回图像(潜在空间–>像素空间)。
在这里插入图片描述
U-Net
U-Net 也由编码器和解码器组成,两者都由 ResNet 块组成。编码器将图像表示压缩为较低分辨率的图像,解码器将较低分辨率解码回较高分辨率的图像。为了防止 U-Net 在下采样时丢失重要信息,通常在编码器的下采样 ResNet 和解码器的上采样 ResNet 之间添加快捷连接。
在这里插入图片描述
此外,Stable Diffusion 中的 U-Net 能够通过交叉注意力层调节其在文本嵌入上的输出。 交叉注意力层被添加到 U-Net 的编码器和解码器部分,通常在 ResNet 块之间。

文本编码器
文本编码器会将输入提示转换为 U-Net 可以理解的嵌入空间。一般是一个简单的基于Transformer的编码器,它将标记序列映射到潜在文本嵌入序列。高质量的提示(prompt)对输出质量直观重要,这就是为什么现在大家这么强调提示设计(prompt design)。提示设计就是要找到某些关键词或表达方式,让提示可以触发模型产生具有预期属性或效果的输出。
在这里插入图片描述

3 Consistency终结Diffusion

扩散模型依赖于迭代生成过程,这导致此类方法采样速度缓慢,进而限制了它们在实时应用中的潜力。

OpenAI 为了克服这个限制,提出了 Consistency Models,这是一类新的生成模型,无需对抗训练即可快速获得高质量样本。Consistency Models 支持快速 one-step 生成,同时仍然允许 few-step 采样,以权衡计算量和样本质量。它们还支持零样本(zero-shot)数据编辑,例如图像修复、着色和超分辨率,而无需针对这些任务进行具体训练。Consistency Models 可以用蒸馏预训练扩散模型的方式进行训练,也可以作为独立的生成模型进行训练。

Consistency Models 作为一种生成模型,核心设计思想是支持 single-step 生成,同时仍然允许迭代生成,支持零样本(zero-shot)数据编辑,权衡了样本质量与计算量

首先 Consistency Models 建立在连续时间扩散模型中的概率流 (PF) 常微分方程 (ODE) 之上。如下图 所示,给定一个将数据平滑地转换为噪声的 PF ODE,Consistency Models 学会在任何时间步(time step)将任意点映射成轨迹的初始点以进行生成式建模。Consistency Models 一个显著的特性是自洽性(self-consistency):同一轨迹上的点会映射到相同的初始点。这也是模型被命名为 Consistency Models(一致性模型)的原因。
在这里插入图片描述

Consistency Models 允许通过仅使用 one network 评估转换随机噪声向量(ODE 轨迹的端点,例如图 1 中的 x_T)来生成数据样本(ODE 轨迹的初始点,例如图 1 中的 x_0)。更重要的是,通过在多个时间步链接 Consistency Models 模型的输出,该方法可以提高样本质量,并以更多计算为代价执行零样本数据编辑,类似于扩散模型的迭代优化。

在这里插入图片描述
在训练方面,研究团队为 Consistency Models 提供了两种基于自洽性的方法。

  • 第一种方法依赖于使用数值 ODE 求解器和预训练扩散模型来生成 PF ODE 轨迹上的相邻点对。通过最小化这些点对的模型输出之间的差异,该研究有效地将扩散模型蒸馏为 Consistency Models,从而允许通过 one network 评估生成高质量样本。

  • 第二种方法则是完全消除了对预训练扩散模型的依赖,可独立训练 Consistency Models。这种方法将 Consistency Models 定位为一类独立的生成模型。

值得注意的是,这两种训练方法都不需要对抗训练,并且都允许 Consistency Models 灵活采用神经网络架构。

猜你喜欢

转载自blog.csdn.net/weixin_54338498/article/details/130174582