Stable Diffusion模型训练

2025-01-07 121
Stable Diffusion

类型:人工智能

简介:基于AI的绘画生成工具,主要用于根据文本描述生成详细图像。

本教程将详细解析如何搭建Stable Diffusion模型训练环境,并指导完成模型训练的各个环节。帮助大家掌握从零开始训练Stable Diffusion模型的完整流程,帮助在实践中解决训练中可能遇到的问题并提高生成效果。

一、Stable Diffusion环境搭建

本教程以 GitHub 上的 bmaltais/kohya_ss 为例。该项目为 Windows 系统提供了一个 GUI 训练面板。如果打算进行训练,请确保设备已经安装了 Python 3.10.6 和 Git。

Stable Diffusion模型训练

启动 Powershell(管理员模式),执行以下命令以解除执行策略限制:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Set-ExecutionPolicy Unrestricted
Set-ExecutionPolicy Unrestricted
Set-ExecutionPolicy Unrestricted

然后选择“是”,关闭该窗口。

Stable Diffusion模型训练

1、启动普通 Powershell 窗口,在需要克隆仓库的路径下,执行以下命令:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
执行 accelerate config 命令时,会出现一些设置选项,依次选择:
git clone https://github.com/bmaltais/kohya_ss.git
cd kohya_ss
python -m venv venv
.\venv\Scripts\activate
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 --extra-index-url
https://download.pytorch.org/whl/cu116
pip install --use-pep517 --upgrade -r requirements.txt
pip install -U -I --no-deps https://github.com/C43H66N12O12S2/stable-diffusion-
webui/releases/download/f/xformers-0.0.14.dev0-cp310-cp310-win_amd64.whl
cp .\bitsandbytes_windows\*.dll .\venv\Lib\site-packages\bitsandbytes\
cp .\bitsandbytes_windows\cextension.py .\venv\Lib\site-
packages\bitsandbytes\cextension.py
cp .\bitsandbytes_windows\main.py .\venv\Lib\site-
packages\bitsandbytes\cuda_setup\main.py
accelerate config
执行 accelerate config 命令时,会出现一些设置选项,依次选择: git clone https://github.com/bmaltais/kohya_ss.git cd kohya_ss python -m venv venv .\venv\Scripts\activate pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116 pip install --use-pep517 --upgrade -r requirements.txt pip install -U -I --no-deps https://github.com/C43H66N12O12S2/stable-diffusion- webui/releases/download/f/xformers-0.0.14.dev0-cp310-cp310-win_amd64.whl cp .\bitsandbytes_windows\*.dll .\venv\Lib\site-packages\bitsandbytes\ cp .\bitsandbytes_windows\cextension.py .\venv\Lib\site- packages\bitsandbytes\cextension.py cp .\bitsandbytes_windows\main.py .\venv\Lib\site- packages\bitsandbytes\cuda_setup\main.py accelerate config
执行 accelerate config 命令时,会出现一些设置选项,依次选择:
git clone https://github.com/bmaltais/kohya_ss.git
cd kohya_ss
python -m venv venv
.\venv\Scripts\activate
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 --extra-index-url
https://download.pytorch.org/whl/cu116
pip install --use-pep517 --upgrade -r requirements.txt
pip install -U -I --no-deps https://github.com/C43H66N12O12S2/stable-diffusion-
webui/releases/download/f/xformers-0.0.14.dev0-cp310-cp310-win_amd64.whl
cp .\bitsandbytes_windows\*.dll .\venv\Lib\site-packages\bitsandbytes\
cp .\bitsandbytes_windows\cextension.py .\venv\Lib\site-
packages\bitsandbytes\cextension.py
cp .\bitsandbytes_windows\main.py .\venv\Lib\site-
packages\bitsandbytes\cuda_setup\main.py
accelerate config

在执行“accelerate config”后,它将询问一些设置选项。请按照以下选项依次选择:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
This machine No distributed training NO NO NO all fp16
This machine No distributed training NO NO NO all fp16
This machine No distributed training NO NO NO all fp16

30 系、40 系显卡可选择安装 CUDNN:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
.\venv\Scripts\activate
python .\tools\cudann_1.8_install.py
.\venv\Scripts\activate python .\tools\cudann_1.8_install.py
.\venv\Scripts\activate
python .\tools\cudann_1.8_install.py

二、Stable Diffusion环境更新

若需更新项目仓库,可以执行以下命令:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
git pull
.\venv\Scripts\activate
pip install --use-pep517 --upgrade -r requirements.txt
git pull .\venv\Scripts\activate pip install --use-pep517 --upgrade -r requirements.txt
git pull
.\venv\Scripts\activate
pip install --use-pep517 --upgrade -r requirements.txt

启动训练界面时,可以在 Powershell 中执行命令,或者直接双击 gui.bat 文件。当界面弹出后,直接访问指定的 URL 即可。

Stable Diffusion模型训练

Stable Diffusion模型训练

三、Stable Diffusion训练流程

1、欠拟合:模型未从数据集中学习到有效信息,生成的结果变化大且不一致。

2、效果良好:模型能对训练集和非训练集中的数据都做出较为准确的预测,具有较好的泛化能力。

3、过拟合:模型对训练集有非常高的精确度,但对非训练集的预测差异大,失去泛化能力。

(一)准备训练集

训练集的图片应尽量高清,风格统一但内容形式多样(例如动作、服装、场景等)。样本数量的多少会直接影响训练效果:

Stable Diffusion模型训练

  • 样本量过少:模型可能会出现欠拟合,即无法有效学习;
  • 样本量过大:模型可能会出现过拟合,即只能应对训练集中的数据,无法处理新的或不同的数据。

(二)图片裁剪

在训练过程中,所有图片应裁剪为相同的尺寸。可以在 SD webui 界面自动裁剪图片,也可以手动裁剪。常见的尺寸为 512×512 像素。虽然较大尺寸的图片会占用更多显存,但也能捕捉到更多的细节。

Stable Diffusion模型训练

(三)图片打标

生成关键词:在训练环境或 SD webui 页面上为每张图片打标签。不同打标器可能生成不同的描述效果,可以对比不同打标器的效果。例如:

Stable Diffusion模型训练

Stable Diffusion模型训练

本义描述:一个铁匠在打铁。

Stable Diffusion模型训练

使用不同打标器的效果:

  • BLIP:一个男人在厨房里,壁炉里生着火,手里拿着锤子,另一只手也拿着锤子;
  • deepbooru:一个男孩,黑色手套,手套,室内,男人特写,衬衫,短袖,单人;
  • Tagger(WD14):一个男孩,烹饪,煎锅,男人特写,单人,手套,围裙,火,棕色鞋,黑色手套,靴子,炉子,厨房,握着,胡子,头巾,蓝色衬衫,衬衫;
  • BLIP Captioning:一个男人正在加工一块金属;
  • GIT Captioning:一幅画,画的是一个手上戴着手套、拿着锤子的铁匠;
  • 原始关键词:1boy, cooking, frying pan, male focus, solo, gloves, apron, fire, brown footwear, black gloves, boots, stove, kitchen, holding, facial hair, bandana, blue shirt, shirt
  • 合并后关键词:Smith, cooking, frying pan, male focus, solo, gloves, apron, fire, brown footwear, black gloves, boots, stove, kitchen, holding, bandana, blue shirt, shirt
  • 关键词合并:将与训练目标最相关的关键词进行合并,以简化描述。例如,若训练目标为一个有大胡子的男性,可以将“1boy, facial hair”合并为“Smith”。通过将相似或重复的描述归为一个关键词,避免过度冗余,使模型能够更加专注于关键特征。

示例:

  • 合并前:1boy, cooking, frying pan, male focus, solo, gloves, apron, fire, brown footwear, black gloves, boots, stove, kitchen, holding, facial hair, bandana, blue shirt, shirt
  • 合并后:Smith, cooking, frying pan, male focus, solo, gloves, apron, fire, brown footwear, black gloves, boots, stove, kitchen, holding, bandana, blue shirt, shirt
  • 编组:相同主题的图片可以通过关键词进行分组。例如训练目标是“Smith”,可以为 Smith 制作全图、背景图、前景图等,并根据不同的需求对其进行处理。

Stable Diffusion模型训练

(四)正则化

每张训练图片通常由“训练目标”和“其他要素”两部分组成。以 Smith 为例,训练集中的“铁匠铺、打铁、铁匠”等是模型的先验知识,可以让模型不需要重新学习这些部分,从而提高训练效率并提高泛化能力。正则化的目的是通过减少模型复杂度来增强其泛化能力。过于复杂的模型需要更多的样本来避免过拟合。

正则化标签应与训练集中的类别一致,确保图片数量相匹配。需要注意的是,正则化并非必须操作,可以根据训练集的特点和目标来决定是否使用正则化。

(五)文件路径组织

在开始训练之前,确保文件路径组织符合规范。例如,若训练目标是一个名为 Smith 的女孩,且分为 sls 和 cpc 两个子类别,则路径结构应为:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
train_girls ----○10_sls 1girl ----○10_cpc 1girl
reg_girls ----○1_1girl
train_girls ----○10_sls 1girl ----○10_cpc 1girl reg_girls ----○1_1girl
train_girls ----○10_sls 1girl ----○10_cpc 1girl
reg_girls ----○1_1girl

其中:

  • train_girls 目录下保存训练集,命名规则为“训练次数_<标识符> <类别>”,例如“10_sls 1girl”表示名为 sls 的女孩的训练集将训练 10 次;
  • reg_girls 目录下保存正则化集,命名规则为“训练次数_<类别>”,例如“1_1girl”表示该目录下的图片只包含一个女孩,不会重复使用。
  • 广告合作

  • QQ群号:4114653

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。