稳定扩散原理

date
Dec 29, 2023
slug
sd-technology-principle-study-notes
status
Published
tags
AI
summary
学习使用 comfy UI 之前,了解稳定扩散模型相关原理的笔记
type
Post

SD 的定义

Stable Diffusion 模型是一个开源模型,由 CompVisStability AI 和 LAION 的工程师和研究人员合作创建,并在 Creative ML OpenRAIL-M 许可下发布,这意味着它可以用于商业和非商业目的。
Stable Diffusion是一种扩散模型(diffusion model)的变体,叫做“潜在扩散模型”(latent diffusion model; LDM),能够从文本描述中生成详细的图像。
机器学习中,扩散模型扩散概率模型是一类潜变量模型,是用变分估计训练的马尔可夫链。扩散模型的目标是通过对数据点在潜空间中的扩散方式进行建模,来学习数据集的潜结构。计算机视觉中,这意味着通过学习逆扩散过程训练神经网络,使其能对叠加了高斯噪声的图像进行去噪
扩散:
在物理学中,扩散只是任何事物的整体运动。(原子,能量)从较高浓度的区域到较低浓度的区域。现在想象一下,将一小滴油漆滴入一杯水中,油漆的密度将集中在一个位置,但随着时间的推移,该滴将扩散到水中直至达到平衡。如果我们能逆转这个过程不是很好吗?不幸的是,这是不可能的。但扩散模型试图拟合一个模型,其最终目标是逆转这一过程。
扩散模型:
基本思想是通过迭代前向扩散过程系统地、缓慢地破坏数据分布中的结构。然后,我们学习反向扩散过程,恢复数据结构,产生高度灵活且易于处理的数据生成模型。
扩散模型尝试通过向原始图像迭代添加噪声来重现扩散过程。我们不断添加噪声,直到图像变成纯噪声。噪声由马尔可夫事件链定义。
马尔可夫链是一种事件模型,其中每个时间步仅取决于前一个时间步。
马尔可夫链:
俄国数学家 Andrey Andreyevich Markov 研究并提出一个用数学方法就能解释自然变化的一般规律模型,被命名为马尔科夫链(Markov Chain)。马尔科夫链为状态空间中经过从一个状态到另一个状态的转换的随机过程,该过程要求具备“无记忆性 ”,即下一状态的概率分布只能由当前状态决定,在时间序列中它前面的事件均与之无关。这种特定类型的“无记忆性 ”称作马尔可夫性质。马尔科夫链认为过去所有的信息都被保存在了现在的状态下了 。比如这样一串数列 1 - 2 - 3 - 4 - 5 - 6,在马尔科夫链看来,6 的状态只与 5 有关,与前面的其它过程无关。
扩散模型定义了扩散步骤的马尔可夫链,缓慢地将随机噪声添加到数据中,然后学习反转扩散过程,从噪声中构建所需的数据样本。我们不断向图像添加噪声,直到只剩下纯粹的噪声。然后我们训练一个神经网络来消除噪音。
 
扩散模型包含以下步骤:
  • 正向扩散,逐渐将高斯噪声添加到图像中,直到它能够产生纯噪声。
  • 反向扩散,其中训练神经网络从纯噪声开始逐渐对图像进行去噪,直到模型以实际图像结束。(通过训练的扩散模型对噪声图像进行去噪以恢复原始图像(或生成其变体))。
尽管扩散模型解决了图像生成任务的主要问题,但反向去噪过程很慢,而且在像素空间中工作时会消耗大量内存。因此,由于时间和内存的限制,训练或从这些模型中获得结果就变得困难。
为了解决扩散模型的限制问题,潜在扩散模型应运而生。
潜在扩散模型(LDM) 是一种图像生成技术,其工作原理是在潜在表示空间中迭代“去噪”数据,然后将表示解码为完整图像。
 
潜在空间:
两个不同颜色的椅子和一个桌子,我们会说这两个椅子更相似,什么使这两个椅子图像“更相似”?椅子具有明显的特征(即靠背,无抽屉,两腿之间的连接)。通过学习边缘,角度等的图案,这些都可以被我们的模型“理解”。这样的特征被包装在数据的潜在空间表示中。因此,随着维数的减少,与每个图像截然不同的“外部”信息(即椅子颜色)从我们的潜在空间表示中被“去除”,因为只有每个图像的最重要特征都存储在潜在空间表示中。 结果,随着我们减小尺寸,两把椅子的表示变得越来越不清晰,越来越相似。如果我们想象它们在空间中,它们将“紧密”在一起。
通过将扩散过程应用于较低维度的“潜在”空间,而不是使用实际的像素空间,潜在扩散可以减少内存和计算时间。在潜在扩散中,模型被训练以生成图像的潜在(压缩)表示。
 

SD的结构

 
notion image
整体来说,用户输入一个指令,SD 可以生成一张图片。
notion image
 
拆解来说,分为三步:
  1. 文本编码器:将文本转换为机器可以识别的数字组
  1. 图像信息生成器:根据此向量对一个随机噪声图像进行去噪,产生一个结果(可以进行多次)
  1. 图像解码器:将向量结果解码为图像
 
简单来说,用户输入一个提示命令,机器将根据此命令,在潜在空间中将随机图像去噪成符合命令的图片。
所有图像都存在于一个充满噪声的图像中,AI 只是去除了不必要的部分。
 
 
潜在扩散模型由三个部分组成:
  • 变分自编码器(VAE)(图像解码器)
  • 图像信息生成器
  • 文本编码器(CLIP)
 
  1. 文本编码器(CLIP
CLIP是由OpenAI提出的多模态预训练算法,通过一个超大的图像-文本数据集,训练了一个图像编码器和一个文本编码器。它们可以提取文本和图片的特征向量。如果是相关的文本和图片,编码后的特征向量应该是相似的,如果是不相关的文本和图片,编码后的特征向量应该是不相似的。
SD使用CLIP(Constastive Language-Image Pretraining 恒定式语言转图像预训练集)里面的文本编码器,将用户的 prompt 转换为特征向量,这些向量会和现实中存在的图片存在相关性。
 
  1. 图像信息生成器
CLIP 转化的prompt向量和一个随机噪声向量,会在一个去噪器里,一直循环去噪,相当于一直雕刻,直到雕刻出想要的图像。
 
去噪器中主要有一个噪声预测器,输入为随机初始化的噪声图像(如图像尺寸4×4)、文本提示(Prompt)的词向量特征、当前去噪步骤编号。其核心功能是预测出当前噪声图像中需去除的噪声成分。步骤编号的输入使模型能动态调整预测策略(如不同步骤采用不同的噪声强度)
 
  1. 结合Prompt词向量噪声图像,预测包含「文本相关噪声+基础噪声」的混合噪声图B
  1. 仅基于噪声图像(无文本条件),预测基础噪声图C
  1. D = B - C。D对应需要剔除的与文本无关的冗余噪声
  1. 分类器无关引导(Classifier-Free Guidance, CFG),将文本相关噪声D乘以CFG系数(通常7-15),再叠加回基础噪声C,生成修正噪声图E = C + (D × CFG)。系数放大文本引导效果:CFG=0时完全忽略Prompt,CFG增大则增强文本控制力,但过高会导致图像失真
  1. 初始噪声图A减去修正噪声图E,生成更清晰的图像。此过程循环执行(如50步),逐步「雕刻」出符合Prompt语义的图像。每次迭代的噪声预测器为同一模型,依靠步骤编号控制去噪强度[citation:1]。
 
  1. 自编码器Vae(Variational AutoEncoder)
VAE模型由编码器和解码器两个部分组成,但在扩散模型的使用中我们只使用解码器。
在潜在扩散训练过程中,我们用编码器将512的图像转换为大小为64的低维潜在图像表示,用于正向扩散过程。这些编码版本的图像被称为潜在变量
解码器将潜在变量重新转换为图像。我们使用VAE解码器将逆扩散过程生成的去噪潜在因子转化为图像。在后半截推断过程中,我们只需要使用VAE解码器将去噪图像转化为实际图像。
 

2024 - 2025 © 张静