How Stable Diffusion works 阅读笔记
type
status
date
Feb 21, 2024 08:16 AM
slug
summary
tags
category
icon
password
总结
名词术语
配置参数
名词/术语 | 解释 |
Seed | 影响噪声生成的种子,默认为-1,即随机 |
Sampler | 采样器 |
Steps | 迭代步数 |
CFG Scale | 全称Classifier-Free Guidance,生成模型被训练为能够在没有外部分类器的情况下生成高质量的输出。
CFG Scale可以理解为应用这种技术的强度。 |
Denoising strength | 去噪强度 |
其他术语
前向扩散(Forward diffusion)
在一张图片上叠加高斯噪声(Gaussian noise),直至变成一张毫无意义的纯噪声图。
逆向扩散(Reverse diffusion)
即前向扩散的逆向过程,对一张纯噪声图进行去噪(Denoising)处理,直至清晰可见。
去噪U-Net(denoising U-Net)
训练一个可以预测图片噪声强度的卷积神经网络(convolutional neural network, a.k.a CNN)模型。
这个模型称为U-Net,也称噪声预测器(noise predictor)。
采样(Sampling)
采样:生成拥有指定数量噪声的图片
采样器(sampler):用于采样过程的算法
采样次数(sampling steps):采样过程迭代次数
噪声调度器(noise scheduler):控制每两次采样过程间的降噪量,非线性,前期多,后期少
举例采样算法(区别在于速度、还原度、细节等)
Euler
Euler Ancestral
DDIM
DPM
DPM2
DPM++ 2M Karras
采样重复若干次后,得到最终想要的图片
条件控制(Conditioning)
对噪声预测器添加条件控制,引导其生成我们想要的结果。
有多种控制方式:
- 提示词控制(Prompts),也叫文生图(Text-to-Image)
- 分类标签(Class labels)
- 图片控制,也叫图生图(Image-to-Image)
- 局部重绘(Inpainting)
- 图像外扩展(Outpainting)
- 深度控制(Depth-to-Image)
- ControlNet(综合控制)
分词器(Tokenizer)
分词器负责把输入的单词(word)转换为数字符号(token)。
每个token的数据存储在一个大小为77的向量(vector)中。
嵌入(Embedding)
嵌入指的是将某种类型的数据(如单词、句子、图像或其他类型的输入)转换为实数向量的过程。
这些向量通常位于一个高维空间中,但经过优化后,可以映射到较低维的空间,以便于计算和可视化。Embedding 的目的是捕捉输入数据的重要特征,并以一种适合于机器学习模型处理的形式表示这些特征。
在SD中,使用了名为ViT-L的CLIP模型对图片进行嵌入处理,包含768维。
举例:输入
car
作为提示词,会生成一个包含大小为1x77x768
的token的嵌入。嵌入的意义在于,转换为向量后,可以通过数学计算测量所有token及所有维度的差距(distance)。
转换器(Transformer)
转换器指的是处理嵌入的神经网络,由多层构成,在每次迭代中引导噪声预测器生成更符合条件控制的图片。
在SD中,转换过程使用了两种注意力机制,帮助模型在处理输入数据时能关注到重要的部分。
- 自注意力(Self-attention):也称为内部注意力机制,是指模型在处理序列时,每个元素不仅仅只考虑自身的信息,还会考虑序列中其他元素的信息。这种机制使得模型能够捕捉序列内部的长距离依赖关系。用于单个序列,强调序列内部元素之间的关联。
- 交叉注意力(Cross-attention):是指模型在处理两个或多个不同序列时,使得一个序列中的元素能够关注到另一个序列中的元素。用于处理两个序列,强调不同序列之间的元素关联。
分类标签(Class labels)
Class labels是指用于分类任务中的目标变量,它们表示数据点所属的类别。在监督学习中,每个训练样本都有一个与之对应的类标签,这个标签告诉模型该样本属于哪个类别。例如,在一个图像识别任务中,每张图像都会被标记为“猫”、“狗”、“车”等类别之一。
CFG缩放值(CFG Scale Value)
分类器引导(classifier guidance, a.k.a CG):给训练集图片打上对应的分类标签。
在训练SD模型时,为了不依赖外部分类器(external classifier),使用了CFG(classifier-free guidance)技术,在没有条件分类器的情况下提高生成模型的生成质量。
在使用CFG时,CFG scale value是一个超参数,它调节模型在生成内容时使用的指导强度。更高的CFG scale值意味着模型在生成内容时会更强烈地依赖于提供的提示(如文本提示),这可能导致生成的内容更加相关和具体,但也可能增加生成重复或过度限制性内容的风险。相反,较低的CFG scale值会使模型生成更多样化的内容,但可能与给定的提示关系不大。
CFG缩放值直接影响生成结果的质量和相关性,一般介于
5.5
到7.5
之间。⭐ 潜空间(Latent space)
在RGB像素空间中,一张512x512的图片包含3x512x512维,不具备可操作性。
因此,SD使用了潜扩散模型(latent diffusion model, a.k.a LDM)进行降维数据压缩,压缩至3x64x64的潜空间,缩小了64倍。压缩为有损压缩,只记录数据的内在属性或结构。
SD的逆向扩散过程中所有相关计算都在潜空间中进行。
👉 See more at 到底什么是“Latent Space 潜空间”?
变分自动编码器(variational autoencoder, a.k.a VAE)
变分自动编码器是一种神经网络,可以:
- 把图片转换为潜空间张量(编码器)
- 把潜空间张量转换为图片(解码器)
全过程一图流
过程说明(原文):
- A tensor with latent noise is generated based on a fixed or random seed. In the case of Inpainting an image is used as a base.
- The conditionings (such as text, depth maps or class labels) are converted to embeddings vectors that store their features in multiple dimensions.
- These vectors go through the CLIP transformer that is responsible for calculating the relationships between the embeddings and their features using the cross-attention technique.
- The noise predictor (U-Net) starts the denoising process using the result of the transformer as a guide to the desired result. This process uses the sampling technique and repeats as many times as the specified number of steps.
- In this process, noise is generated by the selected sampler algorithm and subtracted from the initial tensor. This cleaner noise tensor serves as the basis for the next step until all steps are completed. The noise scheduler controls the amount of progress at each step so that it is non-linear.
- When the denoising process is finished, the tensor leaves the latent space through the VAE decoder, which is in charge of converting it into an image and thus surprising us with the result.
过程说明(个人理解后的译文):
- 根据固定或随机种子初始化一个包含随机或特定噪声的多阶潜空间张量
- 各种控制条件被转换为包含多维信息的嵌入向量
- 嵌入向量经过CLIP转换器处理,通过交叉注意力技术计算出嵌入与其特征间的关系
- 噪声预测器(U-Net)使用转换器的结果进行引导,开始对初始张量进行去噪(逆向扩散),去噪过程会重复多次
- 去噪过程中,初始张量的噪声强度会逐渐降低,上一次迭代的结果张量会作为下一次迭代的输入张量。去噪过程不是线性的,通过噪声调度器进行去噪量控制,先多后少。
- 去噪完成后,最后一次迭代的结果张量离开潜空间,通过VAE解码器转换为最终的图片