Checkpoint模型

Checkpoint模型通过Dreambooth训练方式获得,其显著特点是生成的图片效果出色。但由于训练全新模型,其速度通常较慢,同时生成的模型文件较大,一般在几个G左右,格式多为safetensors或ckpt。

LoRA模型


LoRA是一种轻量级的模型微调方法,它基于已有的大模型进行微调,专注于输出具有固定特征的人或事物。LoRA模型在特定风格特征的生成上表现出色,训练速度快,且模型文件相对较小,通常在几十到一百多MB之间。它需要搭配大模型使用。

LoRA 的总体训练思路同 Textual Inversion 和 Hypernetwork 都是接近的(其实这一训练框架与生图框架本身就是 SD 的核心架构,各种模型训练只是在利用这一架构中各个可以微调的环节来进行某些类似插件效应的改变而已。),只是此时 loss 通过 Gradient Update 反馈的目标落在了 Diffusion Model 模块中 Q、K、V 三个矩阵本身的身上。想要了解如何训练Lora可以查看这篇文章

与 Hypernetwork 劫持并修改 Q、K、V 三矩阵输入数据的方式不同,LoRA 是直接生成属于自己风格的 Q、K、V 三矩阵作为模型(图3 中三个橙色菱形),作为对原有模型中 Q、K、V 的叠加,也可以理解为原有 Diffusion Model 模块中 Q、K、V 三矩阵的额外“插件”。

这三个橙色菱形“插件”所组成的模型文件,便是 LoRA 的模型文件了。在实际生图过程中,需要加载这个 LoRA 模型文件,并用专门的提示词公式来表达这一模型要发挥作用。于是便能影响 SD 模型的整体输出,生成我们想要的独特柯基犬图像了。

LyCROIS,英文全称 LoRA beyond Conventional methods, Other Rank adaptation Implementations for Stable diffusion. ,可以翻译为:用另一种超越常规的 Rankadaptation “秩自适应”的方法来实现 SD 稳定扩散。可以说 LyCORIS 是 LoRA 的思路的进一步扩展,是升级换代的 LoRA,通常比 LoRA 更有表现力,可以捕捉更多的训练图像的细节。LyCORIS 属于一系列类 LoRA 方法的总称,目前至少分为以下几种:Standard、LyCROIS/LoKr、LyCROIS/LoHa、LyCROIS/LoCon、LyCROIS/iA3、LyCROIS/DyLoRA、LoRA-FA。

Textual Inversion模型


Textual Inversion模型通过文本提示来训练,可将其理解为一套定制化的提示词集,专为生成固定特征的人或事物设计。这种模型在特定风格特征的生成上同样表现出色,且模型文件极小,通常只有几十KB。然而,其训练速度相对较慢,同样需要搭配大模型使用。

训练过程

  1. 首先用柯基犬的照片(若干张)作为训练图像(图1 中 training sample )生成含有某个强度级别噪点含量的噪点图(图1 中 apply noise * n );
  2. 同时生成含有某个强度低一级的噪点含量的噪点图(图1 中 apply noise * (n-1) );
  3. 然后把步骤 1 中的含有 n 级别噪点的噪点图和关键词“SKS”一同输入给 Diffusion Model ,让 Diffusion Model 进行去噪点操作,得到一个从 n 级别去除一定噪点到 n-1 级别的相对少一些噪点的图像(图1 中 Diffusion Model 模块右侧的柯基犬图)
  4. 然后把步骤 3 生成的 n-1 级别图像和步骤 2 生成的 n-1 级别图进行比较生成一个 loss (损失,即差异化描述)。(注:起初由于 text embedding 模块并不清楚 SKS 具体指的是这种特殊的柯基犬,所以会随机生成各种输出的结果,即某种随机的向量。这样的向量作为输入给 Diffusion Model 模块,自然导致 Diffusion Model 模块输出的 n-1 噪点级别的图像与步骤 2 中产生的 n-1 噪点级别的图像极为不像。但这便是训练开始的第一步,之后系统会逐渐自动调整参数,以使得这两个图像越来越相近,这便是所有模型训练的基本逻辑。)
  5. 系统自动调整参数的过程是这样的:系统把这个 loss 通过 Gradient Update 的方式反馈给 text embedding 模块,以期该模块能够根据这个差异 loss 校正针对“SKS”的输出。这样当校正后的“SKS”的输出再次输入给中间的 Diffusion Model 模块后,能够使得 Diffusion Model 输出 n-1 图像能够和步骤 2 中生成的 n-1 图像更接近。
  6. 以上过程反复多次后,text embedding 模块会逐渐地学会如何正确地解析“SKS”这个特殊词汇,以便在 text embedding 模块在输出“SKS”所代表的向量输入给 Diffusion Model 模块后,Diffusion Model 模块可以生成一个与步骤 2 提供的 n-1 图像极为相似的图像。至此,text embedding 的训练过程就结束了。

训练后产生一个 embeddings 模型文件。在实际生图阶段,需要加载这个 embeddings 模型文件,该文件会对 SD 系统中 text embedding 模块产生一个类似插件的影响(图1 中 text embedding 模块的橙色部分)。当输入给 SD 系统提示词:“A photo of SKS.” 后, text embedding 模块便解析出了特殊的 “SKS”向量给 Diffusion Model 模块,从而生成出我们想要的特殊的柯基犬图像。

VAE模型

通俗的解释来讲,VAE模型主要有2种功能:一种是滤镜(就像是PS、抖音、美图秀秀等)用到的滤镜一样,让出图的画面看上去不会灰蒙蒙的,让整体的色彩饱和度更高。另一种是微调,部分VAE会对出图的细节进行细微的调整(个人觉得变化并不明显仅会对细节处微调)。

Hypernetwork模型


Hypernetwork模型与LoRA类似,但在效果上稍逊一筹。尽管如此,它在某些场景下仍具有实用价值,并且同样需要与大模型结合使用。

Hypernetwork 的总体训练思路同 Textual Inversion 是接近的,只是此时 loss 通过 Gradient Update 反馈的目标发生了变化,从 text embedding 模块转变成了一个单独的附加的小神经网络 Hypernetwork,这个小的神经网络一般译为“超网络”(图2 中橙色虚线方框即为这个小神经网络)。

这个 Hypernetwork 超网络劫持了 Diffusion Model 模块中的三个矩阵(图2 中三个菱形块,具体来说是 U-Net 噪声预测器中的交叉注意层之前的 Q、K、V 三矩阵中的 K 和 V 矩阵),并修改了数据,使得 Diffusion Model 模块生图时发生变化。

Hypernetwork 模型训练结束后,会生成一个 Hypernetwork 模型(图2 中橙色虚线方框)。在实际生图阶段,需要加载这个 Hypernetwork 模型,并在提示词中用专门的提示词公式来表达这一模型要发挥作用,于是该模型就会对 SD 系统中 Diffusion Model 模块在生图时产生一个劫持并修改数据的效应,这样的劫持修改使得 Diffusion Model 模块生图时发生变化,从而能够让 SD 生成出我们想要的特殊的柯基犬图像。

区分

模型类型 SD主模型的作用范围 在SD-Webui中的使用方法 模型类别统称 文件扩展名 存放目录
SD基础大模型 - 属于Checkpoint模型,可独立工作,无需在提示词体现 SD-V1.5 SD-XL1.0 .safetensors .safetensors  stablediffusion-webui/models/Stable-diffusion
Textual Inversion 不影响基础模型,影响语言识别模块,在文本编码器中创建新的Embedding, 需要配合Checkpoint模型,在提示词中输入对应的Embedding词汇 Embedding .pt或.bin stabledifusion-webui/embedding
Hypernetwork 不影响基础模型,在U-Net的交叉注意模块前插入附属网络,来影响交叉注意层型工作 需要配合Checkpoint模,在提示中输入特定格式语句: <hypernet:filename:multiplier> Hypernetwork .pt或.bin stable-diffusion-webui/models/hypernetworks
LoRA / LyCORIS 调整交叉注意层的权重,形成类似模型插件的数据存储 型工作 需要配合Checkpoint模,在提示中输入特定格式语句: <lora:filename:multiplier> Lora .safetensors 或.pt stablediffusion-webui/models/Lora