目录
Embeddings(Textual Inversion)是什么?
这张图展示了 Stable Diffusion 模型结构及其组件,以下介绍其流程步骤和各模块名称:
Stable Diffusion流程
Stable Diffusion 模型的生成过程(也包括整个训练过程)主要由扩散过程和去噪过程组成,以下结合图和相关模块为你详细介绍:
扩散过程
- 图像编码(VAE 部分):在实际应用场景中,若有真实图像作为输入(图中左侧粉色区域 “Pixel Space” 中的图像
),会先经过 VAE 中的编码器(图中左侧粉色框中的
)。VAE 编码器将像素空间中的图像
编码成低维的潜在表示 ,随后进入潜在空间
(Latent Space,图中绿色背景的区域 )。这一步相当于把复杂的图像信息压缩提炼成关键特征要点。
- 噪声逐步添加:在潜在空间中,Scheduler(调度器,图下方蓝色框标注部分,包含 DDIM、DDPM 等算法 )发挥作用,按照既定规则对潜在表示
逐步添加噪声。随着操作步骤的推进,潜在表示逐渐转变为高度噪声化的潜在表示
,该过程即为扩散过程(图中标注 “Diffusion Process” 的箭头走向 )。在此过程中,原本图像的信息被噪声逐步干扰、打乱,潜在表示越来越趋近于纯粹的噪声状态。
去噪过程
- 文本编码:输入的文本提示词进入 CLIP text encoder(文本编码器,图中最右侧蓝色模块 )。文本编码器对文本进行处理,将其转换为语义特征表示(对应图中右侧 “Conditioning” 区域绿色框中的内容 ),这些语义特征后续将用于指导图像生成,为模型提供 “创作方向”。
- UNET 处理:高度噪声化的潜在表示
进入 UNET(去噪 U-Net
,图中间绿色背景包含 QKV 模块的部分 )。UNET 内部利用多头注意力机制(QKV,即 Query、Key、Value )对噪声化的潜在表示进行处理。同时,CLIP text encoder 输出的语义特征(对应 “Conditioning” 中的信息 )也会参与进来,进行交叉注意力(crossattention)计算,帮助模型理解文本提示与图像特征之间的关联。
- 结构辅助去噪:UNET 借助跳跃连接(skip connection)等结构,将不同层次的特征进行融合,逐步去除潜在表示中的噪声。在这个过程中,模型不断尝试恢复图像原本的特征信息,使潜在表示从高度噪声化状态逐渐还原为较为清晰的潜在表示
。
- 图像解码(VAE 部分):去噪后的潜在表示
进入 VAE 中的解码器(图中左侧粉色框中的
)。VAE 解码器将潜在表示转换回像素空间,把之前提炼并经过去噪处理的要点 “还原” 成复杂的图像
,即最终生成的图像。
- 控制生成过程
- Scheduler 作用:Scheduler 持续控制着整个去噪过程中噪声去除的节奏和方式,确保去噪过程稳定且合理地进行。
- CFG 作用:CFG(Classifier-Free Guidance,无分类器引导,图中单独蓝色框标注 )通过特殊的计算方式,增强生成图像与输入文本提示的一致性,提升生成图像的质量,使图像更好地符合文本描述的要求。
了解 Stable Diffusion 图像生成核心机制后,在 ComfyUI 工具中,模型的多样性拓宽了创作边界。Liblib 提供的 checkpoints、lora 等多种模型,基于 Stable Diffusion 架构,作用各异。下面就探究它们的原理,以及与 Stable Diffusion 的协作方式
主要包括checkpoints,lora,ControlNet,VAE(在搜索框搜索即可),Embeddings(Textual Inversion),Hypernetwork。
checkpoints
对于checkpoints,就是训练整个stable diffusion模型,包括扩散过程和去噪过程,以及对应的vae编码器,解码器,(通常情况下,训练一个checkpoints模型,至少是要训练出一个在某一个方面全面的模型出来,就好比训练出一个在某一个领域内什么会的人,如果只是训练出会一个单一技能的人,那从实现上LoRA没有区别。)
其中具体损失:是计算去噪网络预测的噪声与实际添加到潜在表示中的噪声之间的差异作为损失。例如,在某一个去噪步骤中,模型预测当前潜在表示中的噪声,然后与该步骤实际添加的噪声对比,通过反向传播更新 UNet 等相关模块的参数,让模型不断优化去噪的能力,以便能在给定文本语义信息的情况下,生成符合要求的图像。
LoRA
对于LoRA,可以形象的描述为:假设我们已经训练出一个多功能的机器人厨师(叫Checkpoints),它可以做出各种基本的菜肴。但是,如果你想让这个机器人厨师做出一些特别的、有特定风味的菜肴,比如意大利的披萨或者中国的饺子,你就需要给它一些额外的“食谱”。
- Stable Diffusion Stable Diffusion 就像是这个多功能的机器人厨师,它可以根据不同的食材(描述)做出各种各样的菜肴(图片)。它非常擅长理解你的要求,并创造出符合你描述的美味佳肴。
- LoRA 模型 LoRA 模型就像是给这个机器人厨师提供的额外“食谱”。这些“食谱”可以帮助机器人厨师学会制作一些特别的菜肴,让它的烹饪技巧更加丰富。
LoRA 位置与结构
从 Stable Diffusion 模型结构图来看,LoRA 主要作用于 UNET 模块(图中间绿色区域) 。在训练特定 LoRA 模型时,更新的参数集中在 UNET 的特定部分。具体而言,通常会在 UNET 的多头注意力机制(QKV,即 Query、Key、Value)相关模块添加 LoRA 层。原始 UNET 的大部分参数会被冻结,仅 LoRA 层的参数参与训练。
LoRA 层与原层的关系
LoRA 层与原模型中的多头注意力机制相关模块是并行关系(如下图所示蓝色为原始的,橙色部分为增加的LoRA层)。当添加 LoRA 层后,原始的注意力计算路径保持不变,LoRA 层作为新的并行路径融入其中。这种设计最大的优势在于,无需改变原模型整体架构,就能通过训练 LoRA 层对模型进行微调,大幅减少训练所需的参数数量。
LoRA 层的参数拆解
LoRA 的核心在于对参数的独特处理。其核心思想是将原本需要更新的模型参数变化量(如多头注意力机制中的权重矩阵的变化矩阵
),拆解为两个低秩矩阵
和
的乘积,即
。并且,
和
的秩远小于原矩阵
的维度。在训练过程中,只对这两个低秩矩阵进行更新训练,而原模型的大部分参数保持不变。通过这种低秩分解方式,LoRA 能以较少的计算资源和内存消耗,有效微调模型,使其适配特定任务或数据集,比如依据大量特定人物照片,训练出符合该人物特征的 LoRA 模型。
经过训练得到的 LoRA 模型,本质是一组经过优化的低秩矩阵参数集合。在推理阶段,将 LoRA 模型与 Stable Diffusion 模型拼接使用时,LoRA 层会依据输入的文本提示等信息,利用训练好的参数,对 UNET 模块的计算过程进行调整,让 UNET 在处理潜在图像表示和结合文本语义信息时,能生成契合特定需求的图像,实现对 Stable Diffusion 模型生成效果的优化与拓展。
VAE
VAE(Variational AutoEncoder)变分自编码器是一种重要的生成模型。想象一下,VAE就像一个非常聪明的画家:
编码器(Encoder): 首先,这个画家会仔细观察一幅画,并把画中的关键特征记在脑子里。这就像是把复杂的画压缩成简单的要点。
潜在空间(Latent Space): 画家脑子里记下的这些要点,就形成了一个想象空间。在这个空间里,画家可以自由组合这些特征。
解码器(Decoder): 然后,画家就可以根据脑子里的这些要点,重新画出一幅相似但又不完全一样的画。这就像是把简单的要点又还原成复杂的画作。
训练特定 VAE 时更新的参数部分
- VAE 编码器与解码器:在训练特定的 VAE 时,主要更新的是 VAE 模块(图中左侧粉色区域)中的编码器(
)和解码器(
)的参数。编码器负责将像素空间的图像转换为潜在空间的表示,解码器则是将潜在空间的表示还原为像素空间的图像。通过训练,调整这些参数可以让 VAE 更好地学习数据集中图像的特征分布,例如在处理特定风格或类型的图像(如大量美女照片数据集)时,能够更精准地进行编码和解码,提升图像重建或生成的质量。(虽然更新参数上,编码器和解码器都更新了,但在实际用途上,图生成只用到了解码器)
- 潜在空间相关参数:虽然潜在空间本身不是具体的参数,但在 VAE 训练过程中,与潜在空间分布建模相关的参数也会被更新。比如,为了使潜在空间中的向量具有良好的统计特性(如近似高斯分布),相关的变分参数会在训练中不断优化,以便生成更具多样性和合理性的图像。
当我们将单独训练好的 VAE 解码器应用到其他的 checkpoints 模型上时,会带来一系列有趣的效果。以人的图像生成为例,不同的 VAE 解码器对潜在空间表示的理解和转换方式存在差异,这会直接影响到最终生成的人物图像的质量和特征。
一方面,更换后的 VAE 解码器可能会提升图像的细节表现。比如,原本的 checkpoints 模型生成的人物图像在面部细节上可能不够清晰,而新的 VAE 解码器经过针对性训练后,能够更准确地还原潜在空间中的面部特征信息,使得生成的人物面部更加细腻、真实,如眼睛的纹理、皮肤的质感等都能得到显著改善。
另一方面,VAE 解码器的更换还可能改变图像的风格倾向。由于不同的 VAE 在训练过程中学习到了不同的图像特征分布,新的解码器可能会使生成的人物图像带有特定的风格特点。例如,某个 VAE 解码器在训练时使用了大量具有复古风格的人物图像数据集,那么当将其应用到其他 checkpoints 模型上时,生成的人物图像可能会呈现出复古的色调、服饰风格等,为图像增添独特的艺术氛围。
然而,更换 VAE 解码器也并非总是带来积极的效果。如果新的 VAE 解码器与原 checkpoints 模型的潜在空间表示不匹配,可能会导致生成的图像出现失真、扭曲等问题。比如,生成的人物身体比例失调,或者面部特征出现奇怪的变形。这是因为不同的模型在对潜在空间的编码和解码过程中,对特征的理解和映射方式存在差异,如果不进行合理的适配,就会影响图像生成的质量。
ControlNet
在 VAE 中编码器提取关键特征,而 ControlNet 接收额外的控制条件信息 ,比如输入的边缘图、人体姿态图、深度图等。这就如同一位画家在作画前,除了观察画面本身,还额外获取了一些特定的指引信息,像画面中物体的轮廓线条要求,人物的动作姿态设定等。这些控制条件信息就相当于 ControlNet 的 “输入特征”,它对这些信息进行分析和处理,提取其中关键的结构、语义等特征,为后续生成过程提供方向指引,这类似于 VAE 编码器的特征提取环节。
ControlNet 位置与结构
ControlNet 是在原 Stable Diffusion 模型基础上插入的一个额外神经网络结构。在 Stable Diffusion 模型中,它主要与 UNet(去噪网络)的中间层进行交互,同时也会间接地与 CLIP text encoder(文本编码器)协同工作。具体来说,在 UNet 处理潜在图像表示的过程中,ControlNet 会适时地插入额外的控制信号,成为图像生成过程中的 “调控器”。
内部改造细节如下图:
ControlNet 的训练过程
- 冻结原模型参数:在使用 ControlNet 进行训练时,原 Stable Diffusion 模型(包含 UNet、CLIP text encoder 等关键组件)的大部分参数会被冻结。这一操作保留了原模型在大量数据训练后所学到的丰富语义理解能力和图像生成的通用能力,例如对各种物体、场景、风格的基础认知。这样,原模型的核心知识储备得以保留,为后续的图像生成提供了坚实的基础。
- 更新自身参数:ControlNet 自身拥有独立的网络结构,包含卷积层、残差连接等组件。在训练过程中,主要更新的是 ControlNet 内部的这些参数。ControlNet 通过学习如何依据输入的控制条件(如边缘图、姿态图等)来调整原模型的生成过程,就像为原模型配备了一个专注于特定任务的 “助手”,这个 “助手” 在不改变原模型主体知识储备的前提下,学习如何利用外部控制条件来优化图像生成。
ControlNet 的参数处理与信息融合
- 控制条件特征提取:ControlNet 首先对输入的控制条件进行特征提取。例如,从姿态图中提取人体关节位置、动作走向等关键特征,从边缘图中提取物体的轮廓信息等。这些提取出来的特征代表了新的信息要求,是引导图像生成的重要依据。
- 与原模型特征融合:ControlNet 将提取的控制条件特征与 Stable Diffusion 原模型中 UNet 等模块在处理图像生成时的中间层特征进行深度融合。这种融合并非简单地分割原模型的学习内容,而是在原模型处理信息的流程中巧妙地加入新的控制信号。通过这种方式,ControlNet 引导原模型生成符合控制条件的图像,实现了新信息与原模型知识的有机整合。
ControlNet 在推理时的应用
在模型推理阶段,当输入文本提示和控制条件(如边缘图、姿态图等)后,ControlNet 会依据训练好的参数,对 UNet 的中间层特征传播和计算进行实时调整。它会平衡文本提示所传达的语义信息和额外控制条件,使得生成的图像既满足文本描述,又符合控制信号限定的条件。例如,当文本提示为 “一个在公园散步的人”,同时输入了特定的人物姿态控制图时,ControlNet 会协调 UNet 和 CLIP text encoder,确保生成的图像中人物的姿态符合姿态图的要求,同时人物所处的场景和整体氛围也与文本描述相符。
在 Stable Diffusion 模型体系中,ControlNet 主要训练和作用于以下部分:
- 中间层特征交互:ControlNet 与 UNet (去噪网络)中间层进行交互并训练。它在 UNet 处理潜在图像表示的过程中,插入额外的控制信号。比如在图像生成的去噪过程中,ControlNet 会依据输入的控制条件(如边缘图、姿态图等),调整 UNet 中间层的特征传播和计算,使得生成过程能按照指定条件进行。
- 添加额外网络结构:ControlNet 自身是一个额外的神经网络结构,训练时主要更新自身网络中的参数。该网络会学习如何将输入的控制信号与 UNet 的特征有效融合,比如通过卷积层、残差连接等操作对控制信号进行处理,再与 UNet 的特征图进行拼接或其他运算,引导生成符合特定结构或语义要求的图像。
- 与文本编码器协同:虽然 ControlNet 主要和 UNet 交互紧密,但也会间接地与 CLIP text encoder(文本编码器)协同。在训练中,它要学会平衡文本提示所传达的语义信息和额外控制条件,使得生成图像既满足文本描述,又符合控制信号限定的条件,比如根据文本 “一个在公园散步的人” 以及输入的人物姿态控制图,生成对应的图像。
LoRA,VAE和ControlNet之前的区别,结构位置这里就不做说明了
模型名称 | 实际生成效果 | 用法 |
---|---|---|
VAE(变分自编码器) | 1. 主要作用于图像的编码和解码,在图像重建和生成中,学习数据集中图像的特征分布,生成的图像具有一定的通用性和多样性,比如可以生成符合训练数据集中风格和特征的图像。 2. 单独使用 VAE 解码器时,可将潜在空间表示转换为图像,能影响图像的细节、风格倾向等,如更换训练好的 VAE 解码器可能提升图像细节或改变风格,但不匹配时也会导致图像失真 |
1. 训练时更新编码器和解码器参数,以及与潜在空间分布建模相关的变分参数,以优化对图像特征分布的学习。 2. 图像生成时,若已有潜在表示,可直接使用解码器生成图像,常用于将潜在空间中的向量转换为实际图像 |
LoRA(低秩适应) | 1. 对特定任务或数据集进行微调,如基于特定人物照片数据集训练后,能生成符合该人物特征的图像,使生成图像更贴合特定风格或主题。 2. 增强生成图像与特定输入(如特定文本提示)的相关性,在不改变原模型整体架构的基础上,通过少量参数调整提升生成效果 |
1. 训练时冻结原 UNet 大部分参数,仅更新 LoRA 层的参数,学习低秩矩阵来调整 UNet 相关模块参数。 2. 推理时,LoRA 层依据输入信息,利用训练好的参数调整 UNet 计算过程,优化生成图像 |
ControlNet | 1. 通过输入额外的控制条件(如边缘图、姿态图、深度图等),精确控制图像生成过程,生成的图像能严格按照控制条件的要求呈现特定结构或语义,如根据姿态图生成人物姿态一致的图像。 2. 平衡文本提示和控制条件,使生成图像既符合文本描述又满足控制条件限定,提升图像生成的可控性和准确性 |
1. 训练时冻结原 Stable Diffusion 模型大部分参数,更新 ControlNet 自身网络(包含卷积层、残差连接等)的参数,学习如何融合控制信号与 UNet 特征。 2. 推理时,输入文本提示和控制条件,ControlNet 根据训练好的参数调整 UNet 中间层特征传播和计算,生成符合要求的图像 |
Embeddings(Textual Inversion)是什么?
Embeddings(Textual Inversion)模型,通常在模型站上,我们可以看到embedding模型,它能够输出特定的风格。例如,它可以生成平面风格的图像,或者使画面中的人物具备某些特征,甚至让整个画面呈现特定的艺术风格。此外,embedding模型的体积通常很小,只有几KB。 你可以把它简单理解为一个提示词(prompt)的压缩包
,原本你需要很复杂的文本描述才可以达到的效果,通过 Embedding 模型都可以轻易做到,再加上他的体积很小,所以使用起来非常方便
Embeddings(Textual Inversion)模型的作用主要是 用于在图像中嵌入特定的元素特征,如画面风格、人物特点、场景特征等,从而让模型生成符合这些特征的图像。
模型类型 | LoRA 模型训练 | Checkpoint 大模型训练 | Embeddings 嵌入式训练 |
---|---|---|---|
版本及大小 | 1.5 & SDXL:100 - 400MB FLUX:600MB |
1.5:1.99 - 6GB SDXL:大于 6GB FLUX:11GB / 22GB |
1.5& SDXL:0 - 50KB,且模型数量越来越少 |
训练数据量及时长 | 30 - 50 张图,3000 步大约 10 - 20 分钟 | 300 - 500 张图,训练时长为 1 小时或一天 | 上万步,大约 1 小时 |
显存要求(支持多显卡) | 显存 > 8GB | 1.5&XL:显存 > 12GB FLUX:显存 > 16GB |
显存 > 10GB |
什么是Hypernetwork(超网络)?
Hypernetwork(超网络),就像是一个有特殊能力的助手,它可以帮助其他的神经网络变得更聪明。想象一下,你有一支足球队,每个球员都有自己的位置和技能。现在,如果有一个教练,他可以根据比赛的需要,临时给球员们一些额外的技能或建议,让球队表现得更好。Hypernetwork(超网络)在这个比喻中,就扮演了那个教练的角色。
- 调整参数:Hypernetwork(超网络)会在原有的扩散模型基础上,新建一个神经网络来调整模型的参数。这就像是给足球队的每个球员一些特殊的训练,让他们在比赛中表现得更出色。
- 效果类似:Hypernetwork(超网络)在效果上和Lora相似,都像是给球队的教练,帮助球队提升表现。
- 训练难度:Hypernetwork(超网络)的训练难度比较大,就像是找到一个能够即兴给球员们提供完美建议的教练非常难。
- 应用范围:由于训练难度大,Hypernetwork(超网络)的应用范围比较小,这就像是这种完美的教练很难找到,所以不是所有的球队都能用上。
- 逐渐被替代:因为这些原因,Hypernetwork(超网络)逐渐被Lora替代,Lora就像是一个更常见、更容易找到的教练,虽然可能不是最完美的,但是更容易训练,也更普及。