1

stable diffusion打造自己专属的LORA模型 - 王清培

 1 year ago
source link: https://www.cnblogs.com/wangiqngpei557/p/17301360.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

stable diffusion打造自己专属的LORA模型

通过Lora小模型可以控制很多特定场景的内容生成。

但是那些模型是别人训练好的,你肯定很好奇,我也想训练一个自己的专属模型(也叫炼丹~_~)。

甚至可以训练一个专属家庭版的模型(family model),非常有意思。

将自己的训练好的Lora模型放到stableDiffusion lora 目录中,同时配上美丽的封面图。

lora

(plen_me、plen_vivi,这两个是我训练的和家里人的模型~_~)

这样就可以将你的Lora模型和其他Lora模型融合使用了。

再配上Controlnet基本可以,将自己的pose+特征融入到其他任何lora模型中。

【1】
下面我们看下如何训练自己的模型。

(我的炼丹炉配置,win10+i7F+4080 )

首先,Lora模型可以通过lora-scripts 脚本进行训练。

仓库地址:https://github.com/Akegarasu/lora-scripts

找个目录拉下来,先安装sd-scripts子项目,然后安装lora-scripts项目。

(敲黑板)重点看下sd-scripts 子项目:
https://github.com/kohya-ss/sd-scripts/tree/b5c60d7d62d6bb4a174ac09327dc517fc4446523

要严格按照作者给的步骤安装。(要不然会有很多奇怪的问题)

如果顺利的话大概安装需要30min左右。(需要kexue上网应该就不用多介绍了)

【2】
接下来准备需要训练的图片。

根据最后的生成效果,要找头像清晰的,脸部轮廓清楚的,背景最好是白色的。

然后就需要我们将图片进行预处理。

先将图片放在一个文件夹里,然后定一个预处理之后的文件夹名字。

然后在stablediffusion中找到【训练】【图像预处理】模块

lora

按照说明,填入预处理图片路径和目标目录,然后选择【Deepbooru生成标签】。然后点击【Preprocess】,等处理完成。

到目标目录下,看下生成的标签信息。

lora

lora

这些标签就是训练模型的图片特征了,基本上生成出来的标签还是要check下。

如果某个重要的标签丢失,或者识别错误(girl识别成boy ~_~)会直接影响炼丹质量。

【3】
将预处理目标文件夹复制到lora-scripts脚本的主目录的train目录中。(如果没有就创建一个)

如果你有多个训练集合可以在train中创建一个目录,然后放到这个目录中。

训练自己的专属模型,需要依赖一个主模型。真人特征的模型貌似用 chilloutmix_NiPrunedFp32Fix 比较流行(这个模型很强大,你懂的!)。

模型地址:
https://huggingface.co/naonovn/chilloutmix_NiPrunedFp32Fix/tree/main

将下好的模型文件复制到lora-scripts->sd-models文件夹中。

准备工作差不多了,我们编辑下训练脚本。

lora-scripts目录中的train.ps1 脚本文件。

# Train data path | 设置训练用模型、图片
$pretrained_model = "./sd-models/chilloutmix_NiPrunedFp32Fix.safetensors" # base model path | 底模路径
$train_data_dir = "./train/test" # train dataset path | 训练数据集路径

$pretrained_model:就是我们下载的训练模型的基础模型,把名字换掉。
$train_data_dir:训练数据目录。

    # Train related params | 训练相关参数
    $resolution = "512,512" # image resolution w,h. 图片分辨率,宽,高。支持非正方形,但必须是 64 倍数。
    $batch_size = 2 # batch size
    $max_train_epoches = 20 # max train epoches | 最大训练 epoch
    $save_every_n_epochs = 2 # save every n epochs | 每 N 个 epoch 保存一次

$resolution:如果你的图片预处理的时候没有调整过,这里就保持默认。
$batch_size、$max_train_epoches:如果你的卡不是很强,这里的参数可以小一点。(这两个参数主要控制训练的次数和显存加载的张量数据集)。

    # Output settings | 输出设置
    $output_name = "meoutput" # output model name | 模型保存名称

$output_name:用默认的也行,最好自定义一个名字,避免重复生成覆盖原来模型。

保存,然后右键 【使用PowerShell运行】。

(这里还是要祈祷下,不一定能一次成功。~_~)

脚本在运行过程中会出现一些'triton'加载失败的错误。

lora

lora

但是其实不影响模型的训练(我查了下好像是windows电脑就不支持这个模块)。

这里的错误如果不能正常执行,大概率是前面敲黑板的地方你没有仔细看。

等模型训练完。(我15张图,大概跑了10min左右。)

我们看下output目录输出的模型文件。

lora

这里的模型文件保存的个数,是train.ps1脚本文件里设置的。

最后我们要通过验证这些模型准确度,选用哪一个。

将这些模型文件全部复制到

E:\stable-diffusion-webui\extensions\sd-webui-additional-networks\models\lora

对应的扩展忙碌下。
如果还没有安装 sd-webui-additional-networks 扩展,记得先到扩展中安装。

也可以直接用git地址安装(有时候这个扩展查询有点问题)
https://github.com/kohya-ss/sd-webui-additional-networks.git

然后我们测试下这几个模型哪一个不错。

顺利安装插件之后,就可以在界面上看到 【Additional Networks】功能菜单。

lora

要测试自己的模型,基础模型还是要选用我们训练的 chilloutmix_NiPrunedFp32Fix 模型。

prompt可以用自己提取的标签作为测试。

批次可以适当多点,到时候可以选择。

lora

lora

这个过程大概需要个20min左右。(可以喝点茶等待创作了~_~)。

来一起见证AI的创作吧 ~~!

lora

图片的上方是每一个模型名称,左边是特征权重,组成的一个二维表格。

lora

有点那个意思 hhh。

下面这些就有点辣眼睛了 。

lora

lora

根据自己的眼光,我们挑选一个相对比较不错的模型。

整体觉得这个模型不错,我们记下模型的名字。

lora

将这个模型复制到 E:\stable-diffusion-webui\models\Lora 目录中。

lora

可以给你的模型配上一个封面,只要文件名和模型名一样就可以了。

有了自己的专属模型,就可以结合其他lora模型一起使用了。
我们试下水墨风格。

下载lora模型:Moxin_10
下载基础模型:dalcefoPainting_3rd.safetensors

(有些基础模型在C站没有,可以到huggingface上找找,再不行github上肯定有)

lora

点开这个红色的收缩面板。

lora

刷新一下,让lora模型文件重新加载下。

然后选择我们保存的lora文件,此时这个模型的prompt设置会在文本框里。

lora

然后再选择水墨风模型 Moxin。

调整下每一个模型的权重,此时可以将我们自己的模型特征调大些。

如果没啥问题,我们就去C站找这个lora比较好的prompt拿过来用。

lora

lora

lora
这张虽然有点辣眼睛,但是特征是有了。

lora
这一张比较像我女儿 ~_~。

最后,stablediffusion+lora等AIGC属于开挂技术,我们还是要遵纪守法做一个好同志!!!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK