如何从零开始训练专属 LoRA 模型

北京/设计爱好者/2年前/1242浏览
如何从零开始训练专属 LoRA 模型
汉拿山

LoRA 模型训练的要点:训练数据集准备、训练环境参数配置、模型训练、模型测试

上篇文章我分享了 47 个高质量的 Stable Diffusion 模型,这些模型都是别人训练好的,使用起来非常方便。但是如果我们要生成特定人物、物品或画风,别人的这些模型就满足不了了,这时候就需要通过训练自己的专属模型来实现。


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


LoRA 模型训练主要分为四步:

● 训练数据集准备

● 训练环境参数配置

● 模型训练

● 模型测试


一、训练数据集准备

这个过程主要做三件事:

● 训练素材处理

● 图像预处理

● 打标优化

1. 训练素材处理

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

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

● 不少于 15 张的高质量图片,一般可以准备 20-50 张图;

● 图片主体内容清晰可辨、特征明显,图片构图简单,避免其它杂乱元素;

● 如果是人物照,尽可能以脸部特写为主(多角度、多表情),再放几张全身像(不同姿势、不同服装);

● 减少重复或相似度高的图片。

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

● 对于低像素的素材图,可以用 Stable Diffusion 的 Extra 功能进行高清处理;

● 统一素材图分辨率,注意分辨率为 64 的倍数,显存低的可裁切为 512x512,显存高的可裁切为 768x768,可以通过 birme 网站进行批量裁切。

2. 图像预处理

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

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

方法二:安装 tagger 标签器插件,进行 tags 打标签。https://github.com/toriato/stable-diffusion-webui-wd14-tagger

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



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 这类。

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

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


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

批量打标:有时要优化等标签会比较多,可以尝试使用批量打标工具 BooruDatasetTagManagerhttps://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 后,点击连接。


① 建立训练文件夹

连接成功后,展开(一)环境配置:

● 运行初始化常量与挂载谷歌硬盘。

● 成功挂载谷歌硬盘后,在 content > drive 目录下建一个 Lora 训练文件夹,在训练文件夹中建立 input 文件夹用于放置输入数据集,建立 output 文件夹用于放置输出的训练模型。

● input 文件夹内建一个训练数据集文件夹,注意该文件夹的命名有格式要求:Repeat值_主题名,这里 Repeat 值的含义代表每张素材图的训练步数。越精细的图,Repeat 值也越高,一般二次元可以 15-30,三次元可以 50-100。

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

③ 设置训练用底模型

● modelName:可以选择环境中已经提供的模型 如 Stable-Diffusion-v1-5.safetensors。

● base_model_url:也可以选择自定义模型,在 huggingface 上搜到想要模型的地址,复制过来。


2. 训练参数配置

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


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


① 基础参数设置

基础设置

● train_data_dir:训练集输入目录,把之前建立的数据集文件夹路径复制过来,如/content/drive/MyDrive/Lora/input 。

● 底模:填入底模文件夹地址 /content/Lora/sd_model/,刷新加载底模。

● resolution:训练分辨率,支持非正方形,但必须是 64 倍数。一般方图 512x512、768x768,长图 512x768。

● 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 参数与采样配置文件,并保存配置文件。



三、模型训练

训练参数配置保存完成后,点击开始训练。


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

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

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



四、模型测试

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

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


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


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


③ 在 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 训练模型做一个规范化命名,比如 bighand_lora_v1,重新刷新 LoRA 模型列表就能加载使用啦。在实际应用中,我们可以结合 ControlNet 来使用,以提升可控性。


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

● 训练数据集准备(训练素材处理、图像预处理、打标优化)

● 训练环境参数配置(选择本地或云端训练环境、训练环境配置、训练参数配置)

● 模型训练(基于 kohya-ss 训练模型)

● 模型测试(通过 XYZ plot 测试模型)

加入「AI 绘画实验室」,共同探讨学习 AIGC 知识,在线使用 Stable Diffusion 服务:https://t.zsxq.com/0eApYMVCX
13
Report
|
30
Share
相关推荐
【2025】创意AI动画合集(一)
Homepage recommendation
内容含视频
梦核短片 | 孤独症
Homepage recommendation
内容含视频
生命起源:水之道
Homepage recommendation
内容含视频
山海志 | 荆目异兽
Homepage recommendation
内容含视频
学习
学习
学习
学习
作品收藏夹
华为丨AI病毒广告《小艺小艺》
Homepage recommendation
内容含视频
给昆仑万维AI音乐软件做的数字人
Homepage recommendation
内容含视频
南天门计划-个人AI原创短剧
Homepage recommendation
内容含视频
《集梦怪谈》系列1-8
Homepage recommendation
评论
in to comment
Add emoji
喜欢TA的作品吗?喜欢就快来夸夸TA吧!
推荐素材
You may like
相关收藏夹
学习
学习
学习
学习
作品收藏夹
Lora 训练
Lora 训练
Lora 训练
Lora 训练
作品收藏夹
AIGC教程
AIGC教程
AIGC教程
AIGC教程
作品收藏夹
AIGC工作流
AIGC工作流
AIGC工作流
AIGC工作流
作品收藏夹
学习
学习
学习
学习
作品收藏夹
大厂ai应用
大厂ai应用
大厂ai应用
大厂ai应用
作品收藏夹
大家都在看
Log in