如何从零开始训练专属 LoRA 模型?4600字总结送给你!

上篇文章我分享了 47 个高质量的 Stable Diffusion 模型,这些模型都是别人训练好的,使用起来非常方便。但是如果我们要生成特定人物、物品或画风,别人的这些模型就满足不了了,这时候就需要通过训练自己的专属模型来实现。 目前 Stable Diffusion 主要有四种模型训练方法:Dreambooth、LoRA、Textual Inversion、Hypernetwork。本文主要介绍如何训练 LoRA 模型,LoRA 是一种轻量化的模型微调训练方法,是在原有大模型的基础上,对模型进行微调,从而能够生

如何从零开始训练专属 LoRA 模型?4600字总结送给你!

上篇文章我分享了 47 个高质量的 Stable Diffusion 模型,这些模型都是别人训练好的,使用起来非常方便。

但是如果我们要生成特定人物、物品或画风,别人的这些模型就满足不了了,这时候就需要通过训练自己的专属模型来实现。

目前 Stable Diffusion 主要有四种模型训练方法:Dreambooth、LoRA、Textual Inversion、Hypernetwork。本文主要介绍如何训练 LoRA 模型,LoRA 是一种轻量化的模型微调训练方法,是在原有大模型的基础上,对模型进行微调,从而能够生成特定的人物、物品或画风。该方法具有训练速度快,模型大小适中,训练摆设要求低的特点,能用少量的图片训练出想要的风格效果。

如何从零开始训练专属 LoRA 模型?4600字总结送给你!

一、训练数据集准备

这个过程主要做三件事:

训练素材处置惩罚
图像预处置惩罚
打标优化

1. 训练素材处置惩罚

首先确定你的训练主题,比如某个人物、某种物品、某种画风等。以下我就以训练这种大手大脚的画风主题为例进行讲解。

如何从零开始训练专属 LoRA 模型?4600字总结送给你!

确定好画风后,就需要准备用于训练的素材图片,素材图的质量直接决定了模型的质量,好的训练集有以下要求:

不少于 15 张的高质量图片,一样可以准备 20-50 张图;
图片主体内容清晰可辨、特征明显,图片构图简单,避免其它杂乱元素;
如果是人物照,尽可能以脸部特写为主(多角度、多表情),再放几张全身像(不同姿势、不同服装);
减少重复或相似度高的图片。

素材图准备完毕后,需要对图片做进一步处置惩罚:

对于低像素的素材图,可以用 Stable Diffusion 的 Extra 功能进行高清处置惩罚;
统一素材图分辨率,注意分辨率为 64 的倍数,显存低的可裁切为 512×512,显存高的可裁切为 768×768,可以通过 birme 网站进行批量裁切。

如何从零开始训练专属 LoRA 模型?4600字总结送给你!

2. 图像预处置惩罚

这一步的关键是对训练素材进行打标签,从而辅助 AI 进修。这里介绍两种打标签的方法:

方法一:把训练素材文件夹路径填写到 Stable Diffusion 训练模块中的图像预处置惩罚功能,勾选生成 DeepBooru,进行 tags 打标签。

如何从零开始训练专属 LoRA 模型?4600字总结送给你!

方法二:安装 tagger 标签器插件,进行 tags 打标签。

网址:https://github.com/toriato/stable-diffusion-webui-wd14-tagger

选择批量处置惩罚, 输入目次填写处置惩罚好的图片目次,树立标签文件输入目次,阈值树立为 0.3(生成尽可能多的标签来描述图片内容),开始打标签。

如何从零开始训练专属 LoRA 模型?4600字总结送给你!

3. 打标优化

预处置惩罚生成 tags 打标文件后,就需要对文件中的标签再进行优化,一样有两种优化方法:

方法一:保留全部标签

就是对这些标签不做删标处置惩罚, 直接用于训练。一样在训练画风,或想省事快速训练人物模型时使用。

优点:不用处置惩罚 tags 省时省力,过拟合的出现情况低。

缺点:风格变化大,需要输入大量 tag 来调用、训练时需要把 epoch 训练轮次调高,导致训练时间变长。

方法二:删除部分特征标签

比如训练某个特定角色,要保留蓝眼睛作为其自带特征,那么就要将 blue eyes 标签删除,以防止将基础模型中的 blue eyes 引导到训练的 LoRA 上。简单来说删除标签即将特征与 LoRA 做绑定,保留的话画面可调范围就大。

一样需要删掉的标签:如人物特征 long hair,blue eyes 这类。

不需要删掉的标签:如人物动作 stand,run 这类,人物表情 smile,open mouth 这类,背景 simple background,white background 这类,画幅位置等 full body,upper body,close up 这类。

优点:调用方便,更精准还原特征。

缺点:容易导致过拟合,泛化性降低。

什么是过拟合:过拟合会导致画面细节丢失、画面模糊、画面发灰、边缘不齐、无法做出指定动作、在一些大模型上表现不佳等情况。

批量打标:有时要优化等标签会比较多,可以尝试使用批量打标工具

BooruDatasetTagManager:https://github.com/starik222/BooruDatasetTagManager

二、训练情况参数摆设

训练数据集准备完毕后,开始训练情况摆设。一样有本地和云端两种训练情况:

本地训练:要求 N 卡,推荐 RTX 30 系列及以上显卡,训练情况可以用秋叶大佬的一键训练包,或者安装 Stable Diffusion WebUI 的训练插件。 https://github.com/liasece/sd-webui-train-tools
云端训练:如在 AutoDL、Google Colab 等云平台上训练,推荐 kohya-ss 训练脚本。云端训练的好处在于不占用本机资源,训练的同时还可以干其他事。

以下我以云端训练为例,介绍如何使用 Google Colab 进行云端训练情况摆设。

1. 训练情况摆设

这里推荐使用基于 kohya-ss 的训练脚本,例如: https://colab.research.google.com/github/WSH032/kohya-config-webui/blob/main/kohya_train_webui.ipynb

进入 Colab 后,点击连接。

如何从零开始训练专属 LoRA 模型?4600字总结送给你!

① 建立训练文件夹

连接成功后,展开(一)情况摆设:

运行初始化常量与挂载谷歌硬盘。
成功挂载谷歌硬盘后,在 content – drive 目次下建一个 Lora 训练文件夹,在训练文件夹中建立 input 文件夹用于放置输入数据集,建立 output 文件夹用于放置输入的训练模型。
input 文件夹内建一个训练数据集文件夹,注意该文件夹的命名有格式要求:Repeat 值_主题名,这里 Repeat 值的含义代表每张素材图的训练步数。越精细的图,Repeat 值也越高,一样二次元可以 15-30,三次元可以 50-100。

如何从零开始训练专属 LoRA 模型?4600字总结送给你!

② 运行克隆 github的库、安装依赖

③ 树立训练用底模型

modelName:可以选择情况中已经提供的模型 如 Stable-Diffusion-v1-5.safetensors。
base_model_url:也可以选择自定义模型,在 huggingface 上搜到想要模型的地址,复制过来。

如何从零开始训练专属 LoRA 模型?4600字总结送给你!

2. 训练参数摆设

展开(二)训练参数,运行启动 WebUI 来树立参数,出现 https://localhost:xxxxx/ 链接后点击打开训练参数摆设界面。

如何从零开始训练专属 LoRA 模型?4600字总结送给你!

先点击读取,完成默认参数摆设,再进行基础参数和采样参数树立。

如何从零开始训练专属 LoRA 模型?4600字总结送给你!

① 基础参数树立

基础树立

train_data_dir:训练集输入目次,把之前建立的数据集文件夹路径复制过来,如/content/drive/MyDrive/Lora/input。
底模:填入底模文件夹地址 /content/Lora/sd_model/,刷新加载底模。
resolution:训练分辨率,支持非正方形,但必须是 64 倍数。一样方图 512×512、768×768,长图 512×768。
batch_size:一次性送入训练模型的样本数,显存小推荐 1,12G 以上可以 2-6,并行数量越大,训练速度越快。
max_train_epoches:最大训练的 epoch 数,即模型会在整个训练数据集上循环训练的次数。如最大训练 epoch 为 10,那么训练过程中将会进行 10 次完整的训练集循环,一样可以设为 5-10。
network_dim:线性 dim,代表模型大小,数值越大模型越精细,常用 4~128,如果树立为 128,则 LoRA 模型大小为 144M。
network_alpha:线性 alpha,一样树立为比 Network Dim 小或者相同,通常将 network dim 树立为 128,network alpha 树立为 64。

输入树立

模型输入地址:模型输入目次,把之前建立的训练输入文件夹路径复制过来,如/content/drive/MyDrive/Lora/output
输入模型名称:可以填模型主题名,如 bighand
保存模型格式:模型保存格式,默认 safetensors

进修率树立

unet_lr:unet 进修率,默认值为 0.0001
text_encoder_lr:文本编码器的进修率,一样为 unet 进修率的十分之一 0.00001
lr_scheduler:进修率调度器,用来控制模型进修率的变化方式,一样默认。
lr_warmup_steps:升温步数,仅在进修率调度策略为“constant_with_warmup”时树立,用来控制模型在训练前逐渐增加进修率的步数,一样不动。
lr_restart_cycles:退火重启次数,仅在进修率调度策略为“cosine_with_restarts”时树立,用来控制余弦退火的重启次数,一样不动。

② 采样参数树立

Sample every n epochs:每 N 轮采样一次,一样树立为 1。
Sample every n steps:比如树立为 100,则代表每训练 100 步采样一次。
Sample prompt:采样提示词,树立之后,LoRA 训练的同时会每隔设定的步数或轮次,生成一副图片,以此来直观观察 LoRA 训练的进展。

完成训练参数树立后,点击全部参数确认、生成 toml 参数与采样摆设文件,并保存摆设文件。

如何从零开始训练专属 LoRA 模型?4600字总结送给你!

三、模型训练

训练参数摆设保存完成后,点击开始训练。

如何从零开始训练专属 LoRA 模型?4600字总结送给你!

这里的 steps 代表总训练步数。一样总训练步数不低于 1500,不高于 5000。

总训练步数=(Image 图片数量 x Repeat 每张图片训练步数 x Epoch 训练轮次)/ batch_size 并行数量。

训练完成后,模型文件会保存到树立的输入目次。比如 epoch 训练轮次树立了 5,就会得到 5 个训练好的 LoRA 模型。

四、模型测试

模型训练完成后,要对训练好的这些模型进行测试,以找出最适合的那个模型(哪个模型在哪个权重值下表现最佳)。

① 把训练好的 LoRA 模型全部放入 LoRA 模型目次 stable-diffusion-webui/models/Lora。

如何从零开始训练专属 LoRA 模型?4600字总结送给你!

② 打开 Stable Diffusion WebUI,在 Stable Diffusion 模型里先加载个模型训练时的底模,LoRA 模型里加载一个刚才训练好的 LoRA 模型,如 000001 模型,填上一些必要的提示词和参数。

如何从零开始训练专属 LoRA 模型?4600字总结送给你!

划重点:把引入的 LoRA 模型提示词,改成变量模式,如: 改成 ,NUM 变量代表模型序号,STRENGTH 变量代表权重值。

如何从零开始训练专属 LoRA 模型?4600字总结送给你!

③ 在 Stable Diffusion WebUI 页面最底部的脚本栏中调用 XYZ plot 脚本,树立模型对比参数。

划重点:其中 X 轴类型和 Y 轴类型都选择「提示词搜索/替换」Prompt S/R。

X 轴值输入:NUM,000001,000002,000003,000004,000005,对应模型序号

Y 轴值输入:STRENGTH,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1,对应模型权重值

如何从零开始训练专属 LoRA 模型?4600字总结送给你!

这样就形成了一张模型测试对比表。

如何从零开始训练专属 LoRA 模型?4600字总结送给你!

树立完毕后,点击「生成」,开始生成模型测试对比图。

如何从零开始训练专属 LoRA 模型?4600字总结送给你!

通过对比生成结果,选出表现最佳的模型和权重值。

如何从零开始训练专属 LoRA 模型?4600字总结送给你!

把选出的 LoRA 训练模型做一个规范化命名,比如 bighand_lora_v1,重新刷新 LoRA 模型列表就能加载使用啦。在实际应用中,我们可以结合 ControlNet 来使用,以提升可控性。

如何从零开始训练专属 LoRA 模型?4600字总结送给你!

最后总结下 LoRA 模型训练的要点:

训练数据集准备(训练素材处置惩罚、图像预处置惩罚、打标优化)
训练情况参数摆设(本地或云端训练情况、训练情况摆设、训练参数摆设)
模型训练(基于 kohya-ss 训练模型)
模型测试(通过 XYZ plot 测试模型)

欢迎添加作者微信共同交流探讨(备注:来自优设)

给TA打赏
共{{data.count}}人
人已打赏
应用

AI绘画实战案例!赶集直招如何用AI提高83%的出图效率?

2023-6-2 8:37:57

应用

Poe!集齐4大 AI 谈天工具的神器,再也分歧担心用不上 ChatGPT 了~

2023-6-5 6:32:36

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
搜索