Stable Diffusion:使用自己的数据集微调训练LoRA模型(v2.0)
  • 前言
  • 环境要求
  • 相关介绍
  • 微调训练LoRA模型
  • 下载kohya_ss项目
  • Windows
  • Linux
  • 安装kohya_ss项目
  • 运行kohya_ss项目
  • 准备数据集
  • 微调参数设置
  • 开始训练LoRA模型
  • TensorBoard查看训练情况
  • 测试训练的LoRA模型
  • 文生图(txt2img)
  • 参考

Stable Diffusion:使用自己的数据集微调训练LoRA模型(v2.0)_#大模型

Stable Diffusion:使用自己的数据集微调训练LoRA模型(v2.0)_#大模型_02

前言

  • 由于本人水平有限,难免出现错漏,敬请批评改正。

环境要求

Package                      Version            Editable project location
---------------------------- ------------------ ----------------------------------
Python                       3.10.18
absl-py                      2.3.1
accelerate                   0.25.0
aiofiles                     23.2.1
aiohappyeyeballs             2.6.1
aiohttp                      3.12.15
aiosignal                    1.4.0
albumentations               1.4.3
altair                       4.2.2
annotated-types              0.7.0
antlr4-python3-runtime       4.9.3
anyio                        4.9.0
appdirs                      1.4.4
astunparse                   1.6.3
async-timeout                5.0.1
attrs                        25.3.0
bitsandbytes                 0.43.0
certifi                      2025.7.14
charset-normalizer           3.4.2
click                        8.2.1
colorama                     0.4.6
coloredlogs                  15.0.1
contourpy                    1.3.2
controlnet_aux               0.0.10
cycler                       0.12.1
dadaptation                  3.1
diffusers                    0.25.0
docker-pycreds               0.4.0
easygui                      0.98.3
einops                       0.7.0
entrypoints                  0.4
exceptiongroup               1.3.0
fairscale                    0.4.13
fastapi                      0.112.4
ffmpy                        0.6.1
filelock                     3.18.0
flatbuffers                  25.2.10
fonttools                    4.59.0
frozenlist                   1.7.0
fsspec                       2025.7.0
ftfy                         6.1.1
gast                         0.6.0
gitdb                        4.0.12
GitPython                    3.1.45
google-pasta                 0.2.0
gradio                       4.44.1
gradio_client                1.3.0
grpcio                       1.74.0
h11                          0.16.0
h5py                         3.14.0
httpcore                     1.0.9
httpx                        0.28.1
huggingface-hub              0.20.1
humanfriendly                10.0
idna                         3.10
imagesize                    1.4.1
importlib_metadata           8.7.0
importlib_resources          6.5.2
invisible-watermark          0.2.0
Jinja2                       3.1.6
jsonschema                   4.25.0
jsonschema-specifications    2025.4.1
keras                        3.11.0
kiwisolver                   1.4.8
libclang                     18.1.1
library                      0.0.0              
lightning-utilities          0.15.0
lion-pytorch                 0.0.6
lycoris_lora                 2.2.0.post3
Markdown                     3.8.2
markdown-it-py               3.0.0
MarkupSafe                   2.1.5
matplotlib                   3.10.3
mdurl                        0.1.2
ml_dtypes                    0.5.3
mpmath                       1.3.0
multidict                    6.6.3
namex                        0.1.0
networkx                     3.4.2
numpy                        1.26.4
omegaconf                    2.3.0
onnx                         1.16.1
onnxruntime-gpu              1.17.1
open-clip-torch              2.20.0
opencv-python                4.7.0.68
opt_einsum                   3.4.0
optree                       0.17.0
orjson                       3.11.1
packaging                    25.0
pandas                       2.3.1
pathtools                    0.1.2
pillow                       10.4.0
pip                          25.1
prodigyopt                   1.0
propcache                    0.3.2
protobuf                     3.20.3
psutil                       7.0.0
pydantic                     2.10.6
pydantic_core                2.27.2
pydub                        0.25.1
Pygments                     2.19.2
pyparsing                    3.2.3
pyreadline3                  3.5.4
python-dateutil              2.9.0.post0
python-multipart             0.0.20
pytorch-lightning            1.9.0
pytz                         2025.2
PyWavelets                   1.8.0
PyYAML                       6.0.2
referencing                  0.36.2
regex                        2025.7.31
requests                     2.32.4
rich                         14.1.0
rpds-py                      0.26.0
ruff                         0.12.7
safetensors                  0.4.2
scipy                        1.11.4
semantic-version             2.10.0
sentencepiece                0.2.0
sentry-sdk                   2.34.0
setproctitle                 1.3.6
setuptools                   78.1.1
shellingham                  1.5.4
six                          1.17.0
smmap                        5.0.2
sniffio                      1.3.1
starlette                    0.38.6
sympy                        1.14.0
tensorboard                  2.19.0
tensorboard-data-server      0.7.2
tensorflow                   2.19.0
tensorflow-io-gcs-filesystem 0.31.0
termcolor                    3.1.0
timm                         0.6.12
tk                           0.1.0
tokenizers                   0.15.2
toml                         0.10.2
tomlkit                      0.12.0
toolz                        1.0.0
torch                        2.1.2+cu118
torchaudio                   2.1.2+cu118
torchmetrics                 1.8.0
torchvision                  0.16.2+cu118
tqdm                         4.67.1
transformers                 4.38.0
typer                        0.16.0
typing_extensions            4.14.1
typing-inspection            0.4.1
tzdata                       2025.2
urllib3                      2.5.0
uvicorn                      0.35.0
voluptuous                   0.13.1
wandb                        0.15.11
wcwidth                      0.2.13
websockets                   12.0
Werkzeug                     3.1.3
wheel                        0.45.1
wrapt                        1.17.2
xformers                     0.0.23.post1+cu118
yarl                         1.20.1
zipp                         3.23.0
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.
  • 106.
  • 107.
  • 108.
  • 109.
  • 110.
  • 111.
  • 112.
  • 113.
  • 114.
  • 115.
  • 116.
  • 117.
  • 118.
  • 119.
  • 120.
  • 121.
  • 122.
  • 123.
  • 124.
  • 125.
  • 126.
  • 127.
  • 128.
  • 129.
  • 130.
  • 131.
  • 132.
  • 133.
  • 134.
  • 135.
  • 136.
  • 137.
  • 138.
  • 139.
  • 140.
  • 141.
  • 142.
  • 143.
  • 144.
  • 145.
  • 146.
  • 147.
  • 148.
  • 149.
  • 150.
  • 151.
  • 152.
  • 153.
  • 154.
  • 155.
  • 156.
  • 157.
  • 158.
  • 159.
  • 160.
  • 161.
  • 162.
  • 163.

相关介绍

  • Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
  • PyTorch 是一个深度学习框架,封装好了很多网络和深度学习相关的工具方便我们调用,而不用我们一个个去单独写了。它分为 CPU 和 GPU 版本,其他框架还有 TensorFlow、Caffe 等。PyTorch 是由 Facebook 人工智能研究院(FAIR)基于 Torch 推出的,它是一个基于 Python 的可续计算包,提供两个高级功能:1、具有强大的 GPU 加速的张量计算(如 NumPy);2、构建深度神经网络时的自动微分机制。
  • AIGC(人工智能生成内容)是指由人工智能系统创建或生成的内容。它涉及使用人工智能技术,如机器学习、自然语言处理和计算机视觉,生成各种形式的内容,包括文本、图像、视频、音乐等。
  • 稳定扩散(Stable Diffusion)是一种用于概率建模和图像处理的方法。它基于扩散过程的理论,旨在对图像进行平滑和去噪处理,同时保持重要的图像结构和细节。
  • 稳定扩散方法通过在图像上应用非线性扩散算子来实现平滑和去噪。与传统的线性扩散方法不同,稳定扩散引入了非线性项,以更好地保留图像的边缘和细节。
  • 稳定扩散的核心思想是在扩散过程中考虑梯度信息,并根据梯度大小和方向来调整扩散速度。这样可以在平滑图像的同时,有效地抑制边缘的模糊和细节的丢失。
  • 稳定扩散方法在图像去噪、边缘保持、纹理增强等方面具有广泛应用。它提供了一种平衡平滑和保持图像结构的方法,可以应用于计算机视觉、图像处理和模式识别等领域。
  • LoRA模型全称是:Low-Rank Adaptation of Large Language Models,可以理解为Stable-Diffusion中的一个插件,仅需要少量的数据就可以进行训练的一种模型。
  • LoRA模型可以用于大语言模型的微调,可以用来降低微调成本。
  • LoRA模型可以和大模型结合使用,干涉大模型产生的结果。
  • LoRA采用的方式是向原有的模型中插入新的数据处理层,从而避免了去修改原有的模型参数,从而避免将整个模型进行拷贝的情况,同时其也优化了插入层的参数量,最终实现了一种很轻量化的模型调校方法。
  • LoRA建议冻结预训练模型的权重并在每个Transformer块中注入可训练层(秩-分解矩阵)。 LoRA还可以用于Stable-diffusion中的交叉关注层,从而改善用文字生成图片的效果。
  • LoRA模型的个头都比较小,常见的都是144MB左右,使用的时候要与精简版(prund)的Stable Diffusion1.5模型配合使用。

微调训练LoRA模型

下载kohya_ss项目

Windows

Stable Diffusion:使用自己的数据集微调训练LoRA模型(v2.0)_#大模型_03

下载解压后,项目目录,如下图所示。

Stable Diffusion:使用自己的数据集微调训练LoRA模型(v2.0)_#python_04

Linux
git clone -b v24.1.7 https://github.com/bmaltais/kohya_ss.git
cd kohya_ss/
  • 1.
  • 2.

安装kohya_ss项目

  1. 打开终端并导航到所需的安装目录。
    进入kohya_ss目录:
cd kohya_ss
  • 1.
  1. 执行如下命令运行setup脚本:
# CUDA 11.8
pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements_pytorch_windows.txt -i https://mirrors.aliyun.com/pypi/simple
pip install -r requirements_windows.txt 
pip install xformers==0.0.23.post1+cu118 --index-url https://download.pytorch.org/whl/cu118

pip install gradio_client -i https://mirrors.aliyun.com/pypi/simple --no-deps	
pip install httpx -i https://mirrors.aliyun.com/pypi/simple --no-deps
pip install tqdm -i https://mirrors.aliyun.com/pypi/simple --no-deps
pip install PyYAML -i https://mirrors.aliyun.com/pypi/simple
pip install gradio==4.44.1 -i https://mirrors.aliyun.com/pypi/simple
pip install pydantic==2.10.6 -i https://mirrors.aliyun.com/pypi/simple
pip install -e ./sd-scripts
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

如果没有报错,则安装成功。

运行kohya_ss项目

在Windows上,在终端中运行它,命令如下:

python kohya_gui.py --listen 127.0.0.1 --server_port 7860
  • 1.

Stable Diffusion:使用自己的数据集微调训练LoRA模型(v2.0)_#大模型_05

运行成功后,可在浏览器输入http://127.0.0.1:7860/打开,如下图所示。

Stable Diffusion:使用自己的数据集微调训练LoRA模型(v2.0)_#python_06

注:详细使用教程可查阅此项目中的README.md文件

准备数据集

在kohya_ss项目下,创建一个train目录,具体内容如下:

Stable Diffusion:使用自己的数据集微调训练LoRA模型(v2.0)_#aigc_07

Stable Diffusion:使用自己的数据集微调训练LoRA模型(v2.0)_#aigc_08

  • images : 训练图片和对应的TXT标注文件所在文件夹。
  • logs:保存训练记录的文件夹
  • models:模型保存路径
  • images目录还有一个子目录,比如本文这里是50_Anime,50表示50个steps,会直接影响训练的步数和效果,Anime表示图片相关主题描述。

微调参数设置

  • 本文预训练模型使用的是v1-5-pruned-emaonly.safetensors
  • Stable Diffusion:使用自己的数据集微调训练LoRA模型(v2.0)_#python_09

开始训练LoRA模型

Stable Diffusion:使用自己的数据集微调训练LoRA模型(v2.0)_#stable diffusion_10

Stable Diffusion:使用自己的数据集微调训练LoRA模型(v2.0)_#stable diffusion_11

Stable Diffusion:使用自己的数据集微调训练LoRA模型(v2.0)_#stable diffusion_12

Stable Diffusion:使用自己的数据集微调训练LoRA模型(v2.0)_#aigc_13

Stable Diffusion:使用自己的数据集微调训练LoRA模型(v2.0)_#stable diffusion_14

Stable Diffusion:使用自己的数据集微调训练LoRA模型(v2.0)_#aigc_15

训练完成后,会在models文件夹里生成一个.safetensors模型文件

Stable Diffusion:使用自己的数据集微调训练LoRA模型(v2.0)_#大模型_16

TensorBoard查看训练情况

在页面上,点击Start TensorBoard,打开网址http://127.0.0.1:6006,即可查看。

Stable Diffusion:使用自己的数据集微调训练LoRA模型(v2.0)_#大模型_17

Stable Diffusion:使用自己的数据集微调训练LoRA模型(v2.0)_#大模型_18

Stable Diffusion:使用自己的数据集微调训练LoRA模型(v2.0)_#大模型_19

测试训练的LoRA模型

测试模型,需要使用到Stable Diffusion WebUI项目,具体安装方法,可查阅 Stable Diffusion:在服务器上部署使用Stable Diffusion WebUI进行AI绘图(v2.0)

  1. 将kohya_ss/train/20250812/models目录里的Anime_bs1_epoch50_fp16.safetensors模型文件分别拷贝到stable-diffusion-webui项目里的stable-diffusion-webui/models/Lora目录下。

Stable Diffusion:使用自己的数据集微调训练LoRA模型(v2.0)_#aigc_20

  1. 在stable-diffusion-webui目录下,使用命令在终端中运行它,命令如下:
python launch.py --listen --enable-insecure-extension-access --port 7860
  • 1.

Stable Diffusion:使用自己的数据集微调训练LoRA模型(v2.0)_#aigc_21

运行成功后,可在浏览器输入http://127.0.0.1:7860/打开,如下图所示。

Stable Diffusion:使用自己的数据集微调训练LoRA模型(v2.0)_#stable diffusion_22

  1. 使用自己训练的LoRA模型
文生图(txt2img)
<lora:Anime_bs1_epoch50_fp16.safetensors:1>1boy, bandages, black background, black jacket, blue eyes, gojou satoru, hand up, jacket, jujutsu kaisen, looking at viewer, male focus, parted lips, s0311 tre, short hair, simple background, solo, twitter username, upper body, white hair, wind
  • 1.

Stable Diffusion:使用自己的数据集微调训练LoRA模型(v2.0)_#大模型_02

参考

[1] https://github.com/bmaltais/kohya_ss.git
[2] https://github.com/AUTOMATIC1111/stable-diffusion-webui
[3] https://github.com/camenduru/stable-diffusion-webui
[4] https://www.kaggle.com/code/camenduru/stable-diffusion-webui-kaggle
[5]
[6] https://zhuanlan.zhihu.com/p/620583928