当前位置:   article > 正文

Stable-DiffusionLoRA模型训练教程

Stable-DiffusionLoRA模型训练教程

目录

1. 确定目的

2. 收集素材

3. 处理素材

4. 调整参数/开始训练

5. 测试反馈

问题汇总


1. 确定目的

在训练LoRA模型之前,我们需要首先明确自己需要训练什么类型的LoRA,有的博主将模型分成了几个大类:人物角色、画风/风格、概念、服饰、物体/特定元素等。

我只简单的划分为两类:具象类和泛化类,具象类如:一个物体、一种姿势、一种服装、一个人物、某个特定元素等都可以划归为具象类。泛化类如:某种场景、某种艺术风格、色彩风格等。

前期明确目的的训练能更好的确定要找素材的数量及选择的大模型类型,为后面的具体训练打好基础。

2. 收集素材

⚠️ 「大模型的选择」和「图片质量」都是收集素材的关键!

收集素材阶段,我们仍然按照第一步中的训练目的,分为具象类和泛化类。

具象类LoRA:数量:在具象训练中并不是素材越多越好,一般建议20张左右即可;素材要求:不同角度,不同背景,不同姿势,不同服饰,清晰无遮挡的图片

⚠️ 如果同质化的素材太多,容易造成权重的偏移。

泛化类LoRA:数量:在泛化类训练中需要素材多一些,建议50张以上

⚠️ 这种情况不需要特别在意同质化,但也切勿非常接近的素材占比过高。

3. 处理素材

从这一步起,我们会使用到上文提到的软件。处理素材主要包括统一素材尺寸、生成标签和优化标签。

a、统一素材尺寸

可以使用修改图片工具对图片尺寸进行批量处理,至少保证一边为512px,但必须是64的倍数。横竖图可放一起训练。也可以使用美图秀秀或者PS自行裁剪。

b、生成标签

我使用的是秋叶大佬提供的StableDiffusionWebUI,启动SD-训练-图像预处理。

在你的随便一个盘,建2个文件夹,我简单的命名为1和2(1文件夹放你收集好的图片素材即为「源目录」。2文件夹不需要管,等到SD自动打标完,会将打标文件和你的图片自动存放在2文件夹内,即为「目标目录」),调整宽度和高度与你的素材尺寸保持一致。

复制文件夹1和2的地址,分别粘贴到源目录和目标目录的位置。

有两种生成标签的方式:BLIP即自然语言标签,比如“1个女孩在草地上开心的跳舞”;Deepbooru即词组标签(常用),比如“1个女孩,草地,跳舞,大笑”。一般选择使用Deepbooru生成标签。

当SD界面右侧出现Preprocessing finished,就表示SD已经帮你自动打标好了。

打开刚才建的2文件夹,就可以看到图片和自动生成的标签了。txt文本中的就是SD自动打好的标签。

c、优化标签

第一次训练时我没有优化标签直接训练LoRA,最后的LoRA效果不是很理想,第二遍训练又新增了素材数量,同时优化了标签。

优化标签一般有两种方式:1)保留全部,不做删减,用此方法比较方便,但是需要用精准的关键词,才能还原想要的效果;2)删除部分特征标签,我使用的是此方法。

批量修改关键词的工具BooruDatasetTagManager,很多大佬推荐过,界面比较原始,好用的点是可以批量增删改查关键词,并且可以通过调整关键词位置来调整权重。当然你也可以使用VsCode,或者直接用txt调整都可以。

下载完后,直接双击exe文件运行,就会出现此界面。界面分为三个区域,分别是「数据集区域」「图片标签区域」「数据集内所有标签区域」。标签相关的区域右侧都有操作,可以增加、删除,翻译、上下移动标签,常用的就是这几个功能。

选中文件-读取数据集目录可导入数据集;选中界面-翻译标签,可翻译所有标签,标签可拖动上下移动,更改权重,最后全部修改完别忘记保存更改。

数据集导入后,就可以开始对照图片素材对标签进行删改,需要注意的是标签提示词的前后顺序代表着标签的权重,越靠前的标签权重也就越大,所以我们可以把想要的效果或风格标签放在前面,像背景干净这类标签尽量靠后。

标签优化方法:删减掉训练风格或者需要生成内容的相关词。比如我要生成「手绘插画」的LoRA模型,就需要保留图片素材中手绘插画风格相关的内容作为自带特征,那么就将与手绘插画相关的词语标签删除,增加触发词“shouhui或者chahua”。将“shouhui或者chahua”触发词与其风格相关的词关联,当你填写触发词后就会自带此风格。

4. 调整参数/开始训练

至此,准备工作就完成了,可以开始准备正式训练LoRA了,我使用的还是秋叶大佬的LoRA训练器SD-Trainer,选择新手训练模式。

在新手训练开始之前需要先明确几个概念:

重复次数(Repeat):每一张素材的重复次数。需要在文件夹名以【数字_名称】的方式设定,如训练集chahua重复次数10,则文件夹命名为10_chahua。训练轮数(Epoch):整个训练集按照重复次数训练一次为一轮,10轮就是10*10为每一张训练100次

在操作过程中也同样要考虑具象类和泛化类不同来调整参数,具象类需要在每一轮提高次数以求精准度;泛化类就降低次数提高轮数,不需要那么精准,一轮轮去训练。新手训练模式下,我们只需要调整这几个参数即可。

进入新手模式后,需要选择训练LoRA使用的大模型

底模文件路径,选择你要训练LoRA使用的大模型,直接点击右侧的小文件夹选择即可。

训练数据集路径:在选择这一步之前,需要现在sd/lora-scripts-v1.7.3/train这个文件夹下建一个文件夹,比如我建的叫“chahua”,再打开“chahua”文件夹在里面建一个“数字_英文名”的文件夹,将之前打标好的图和标签一起复制到“数字_英文名”的文件中(如训练chahua重复次数16,则文件夹命名为16_chahua。)

修改分辨率(之前数据集的尺寸是多少,这里就用多少)保存设置:保存模型的名称修改成你想要的名称

点击开始训练,就可以在终端看到它正在疯狂训练中...这个时间会比较久,慢慢等待就好。

当出现“训练完成”字样后,表明你的LoRA模型已经初步完成了训练,我是晚上开着电脑自己跑的,用时9小时……初步训练完LoRA模型,我们就可以对LoRA进行测试,来验证我们的LoRA训练成果,以及了解这个LoRA的最佳参数。

在sd/lora-scriipts-v1.7.3/output文件夹中就可以看到我们生成的LoRA模型了,因为我设置的是2步保存一个Lora模型,16步,所以有8个LoRA的阶段稿。(没有数字的这个是最后的LoRA)

5. 测试反馈

通过测试我们可以对比大模型、不同阶段LoRA、迭代步数、采样方法等生图效果,从而帮助我们对比生成的模型,选择更好的LoRA模型。

a、loss图

每次训练的loss图都是独一无二的,loss曲线只是参考,重点要观察loss逐步降低的状态,loss越低,拟合度就会越高,过低也有可能会过拟合,需要找到合理值,可以通过loss值来选择几个训练好的lora模型进行xyz序列图测试,从而选择更好的Lora模型。

b、xyz序列图

xyz序列图是一个参考值,能看出不同权重对LoRA的影响,以及过拟合,欠拟合的程度。需要多生图去测试加深对模型的判断。

我是用xyz序列图进行反馈:在使用之前需要先给Stable-Diffusion安装一个插件AdditionalNetworks,这个插件可以帮助我们测试多个LoRA不同权重的效果。安装成功后,会有图片所示部分。

虽然在训练模型前已经选定了大模型,但我还是会根据LoRA的类型,选择不同的大模型进行跑图测试,选择更多合适的大模型。

在SD的脚本中选择“xyz图表”,X轴类型选择“大模型”,选择电脑中有的合适的大模型,点击生成即可。

这样就可以横向对比,哪个大模型出图效果更好,更适合此LoRA。

选定了大模型后,我们可以测试几个LoRA在多少权重下生图效果最好。

首先需要把已经训练好的LoRA模型从output文件夹(sd/lora-scriipts-v1.7.3/output)复制出来,放到文件夹(sd-webui-aki/extensions/sd-webui-additionalnetworks/models/lora)中,刷新后就可以在SD中看到你训练的8个模型。

选择xyz图表,X轴类型选择附加模型1,X轴值选择生成的8个LoRA模型;Y轴类型选择附加模型权重1,Y轴值可以自行填写,我是按照从0-1的权重进行对比的。

通过生成的xyz测试图,就可以对比看到哪个LoRA模型在多少权重下生成的效果是最好的。最终就可以选定我们的LoRA模型终稿。

同样的,也可以用此方法来测试不同采样方式哪种效果更好。

甚至迭代步数等很多参数都可以通过xyz的对比进行确认,xyz有非常多的参数可以对比,感兴趣的可以自己跑跑试试。

至此一整套我自己生成LoRA的方法已经汇总整理完毕,没有实践之前也感觉困难重重,但是真的做起来,就感觉没有那么难了,再整理成文章,就又感觉更清晰了一些。下面是我在炼丹中遇到的一些问题和我的解决方法。

问题汇总

1. 页面文件太小,无法完成操作的报错

这应该是虚拟内存不足的情况。win电脑设置-系统-系统信息-高级系统设置,系统属性-高级-性能-设置-高级-虚拟内存-更改,增加虚拟内存即可。

2. Additionalnetworks选择模型显示“无”

这个问题首先需要看看你的LoRA模型是不是放在正确的文件夹中,正确的地址应该是sd-webui-aki/extensions/sd-webui-additionalnetworks/models/lora,如果位置正确,仍然报错,可以尝试先在Additional Networks中选择一个LoRA,然后在去xyz轴中删去不需要的LoRA。

万分感谢原作者。原文:Stable-DiffusionLoRA模型训练教程(新手篇)|LoRA训练个人经验总结与复盘 - 知乎

另一篇文章:https://lan861698789.blog.csdn.net/article/details/135407694

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/443204
推荐阅读
相关标签
  

闽ICP备14008679号