Stable Diffusion扩散模型

1 GAN到Stable Diffusion的改朝换代

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

GAN:额外的判别器
VAE:对准后验分布
EBM基于能量的模型:处理分区函数
归一化流:施加网络约束
Stable Diffusion扩散模型_第1张图片

生成领域 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 ϵ 原始输入噪声的距离。

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

Stable Diffusion扩散模型_第3张图片

前向扩散过程重要公式
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
Stable Diffusion扩散模型_第4张图片
Stable Diffusion扩散模型_第5张图片Stable Diffusion扩散模型_第6张图片

反向生成过程重要公式
学习到噪声预估模型 ϵ θ ( x n , n ) \epsilon_\theta( x_n,n) ϵθ(xn,n)后,随机生成一个初始噪声 x n x_n xn,通过该模型,做N步生成去噪声,恢复到 x 0 x_0 x0图片。
Stable Diffusion扩散模型_第7张图片

Stable Diffusion扩散模型_第8张图片
Stable Diffusion扩散模型_第9张图片
UNet预测噪声 Z t Z_t Zt
Stable Diffusion扩散模型_第10张图片

Stable Diffusion扩散模型_第11张图片

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

2.2 Stable Diffusion

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

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

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

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

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

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

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

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

你可能感兴趣的:(人工智能,深度学习)