羊衔玉 发表于 2023-2-25 13:45:20

如何提高Lora模型质量-从图片预处理入手

本帖最后由 羊衔玉 于 2023-4-9 11:59 编辑

我发现Lora训练教程中对于图像的预处理工作都忽略了,但是经过我的试验,发现图像的选择以及字幕文件的处理,对于一个Lora模型的效果是影响很大的,在一周的测试后,谈一下我对图像预处理的心得



1.图像的选择
图像的选择我也仍在探索中,简单讲下我现在选择图像的一些标准吧
什么是好的训练图像?

[*]高分辨率 - 高分辨率的图像意味着更清晰的脸部细节,他决定了你的模型“像不像”,而裁剪尺寸,我推荐512*640,这是大部分人能够训练的尺寸中效果比较好的。
[*]训练对象的视野一览无余,一个完整的人像(半身,或者全身)能够有效提高出图的质量
[*]简单的构图,避免复杂的其他因素干扰
[*]多样性 - 如果您正在训练一个人,背景/灯光/服装/面部表情/姿势变化越多越好,这意味着你生成的图像更像真实的
是什么造就了糟糕的训练图像?
[*]低分辨率 - 请勿放大训练图像或使用具有可见压缩的图像。这直接导致人物面部的崩坏,有全身照但是生成的全身图片中人脸依然崩坏原因可能是训练图像的人脸分辨率过低导致的
[*]裁剪不良 - 如果您的输入是特写镜头,则模型输出将是特写镜头,如果只有脸图,那么你只能得到脸图,或者扭曲的半身照
[*]多个人,尽量让你的人物单独出镜,裁剪或者抹掉其他人
[*]重复或高度相似,这会造成过拟合
[*]主题不是主要焦点的图像,模糊的人物会降低lora质量

2.字幕文件的生成

在许多的教程中,都使用了dreambooru风格作为字幕文件,这不是惟一的选择,事实上,BLIP和dreambooth是要按情况使用的

[*]dreambooth:他包含了更多的动漫词汇,使用tag进行标记,更适合二次元lora模型的处理,当然,对真人也有效果,需要注意进行特征tag的删减
[*]BLIP:这是一种自然语言字幕,sd是基于gpt2的,你可以相信它的语言处理能力,同时BLIP更适合处理真人模型,需要注意添加真人特征的tag

论坛内训练真人模型的比较多,我先展开讲下BLIP字幕文件的处理方法,稍后会补上dreambooth的处理方式

2.1 BLIP字幕文件的预处理工作
如下图,我们在生成字幕文件时,不再选择dreambooru,而是BLIP,其他参数不变
https://s1.ax1x.com/2023/02/25/ppSd0xK.png
图片生成后,我推荐使用BooruDatasetTagManager 进行字幕文件的处理,软件图如下:
https://s1.ax1x.com/2023/02/25/ppSwesO.png
点击Load folder,载入图像预处理文件夹,我们就可以看到下面的界面:
https://s1.ax1x.com/2023/02/25/ppSwlFA.png
这里的最左侧,是我们的预处理图像,中间是所选择的图像的字幕,右侧是文件夹中所有的字幕
我们可以看到,BLIP的字幕是描述性的,比如第一张的字幕大意为“一位身穿白色衬衫、戴着红色珠子项链的女士坐在椅子上”
这个描述是对的,但是他没有提及我们的人物特征,这就导致训练出的模型并不会很像。所以我们要加上想要突出的人物特征
在这里我提供一个常用的特征tag:
face,nose,lips,hairstyle,eyes,ears,forehead,breast
点击软件最右上角的+号,就可以把它添加到全部图像的字幕文件中,Adding Position选择TOP
https://s1.ax1x.com/2023/02/25/ppS0lBF.png
添加完成之后,我还想保留她的马尾辫,长发等发型,这个时候我们要按住Ctrl或者Shift选择多个相同发型的图片,点击中间的+号,进行批量添加tag:
https://s1.ax1x.com/2023/02/25/ppS0t91.png
最后,我们要给所有图片加上这个人物的专属tag,比如guanxiaotong,用来更好的触发人物特征。注意!这个tag要和你的预处理文件夹tag保持一致!
最后的图片tag就是这样的:
https://s1.ax1x.com/2023/02/25/ppS0rAH.png
完成后,我们点击save all change 保存更改
https://s1.ax1x.com/2023/02/25/ppS02gP.png

这样,BLIP字幕文件就处理完了,接下来照常训练即可
2.2 dreambooru字幕文件的预处理工作
受许多教程影响,很多人使用的是tag的字幕文件,这个就是使用dreambooru生成的字幕文件,这个字幕文件初衷是为了弥补BLIP对于动漫特征描述的不足,慢慢的也有人使用它对真人图像进行处理。
2.2.1dreambooru字幕文件的生成
https://s1.ax1x.com/2023/03/02/ppk9sr8.png
如图,选择Use deepbooru for caption,即是生成tag式的字幕文件
2.2.2 dreambooru字幕文件的处理
我们依然使用BooruDatasetTagManager 进行字幕文件的处理,但是处理方式稍有不同,这次我们将想让AI学习的tag删除
https://s1.ax1x.com/2023/03/02/ppkC8Wn.png
比如在这幅图像中,我们想要保留她的基本特征,应当删除 black_hair,lips,nose,black_hair,asian等基本特征,如果你想要保留她的发型,耳环等,你还需要删除long_hair和earrings(如果你的素材中发型非常多,我建议删除发型,这样“更像”本人,在处理二次元人物时,发型常常是需要删除的,真人的发型也能带来一定的辨识度)
注意:你不应该删除【1girl】,除非你想让她永远单独出镜,【1girl】是一个描述场景的词,而非描述人物
然后,我们为她加上专属的tag,在最前面
https://s1.ax1x.com/2023/03/02/ppkCWwD.png
批处理操作和BLIP方法相同,这里不再赘述。
最后,放几张生成图(基于Chilloutmix0.3+realistic0.7混合模型训练,Chilloutmix生成):
https://s1.ax1x.com/2023/02/25/ppS04Hg.pnghttps://s1.ax1x.com/2023/02/25/ppS0jDU.pnghttps://s1.ax1x.com/2023/02/25/ppSDueU.png
(注:如果图像产生侵权,请告知我,我将于24小时内删除)
训练方法并不唯一,只要达到效果即可,条条大路通罗马


omesa 发表于 2023-2-25 22:52:40

前几天在b站看到一个也是教预处理修改tag的

羊衔玉 发表于 2023-2-25 21:52:10

Aufheben 发表于 2023-2-25 20:44
是否可以用这个来生成一些DFL的素材?比如DFL中缺少某些角度,能不能用LoRA来补角度? ...

不是死亡角度的话或许可以

aeoluszan 发表于 2023-2-25 14:49:19

楼主使用哪种方式执行脚本的?B站有好几种,而且还有新的Lion运算模块,我都试过,貌似只有Kohya_SS的比较好用,但只要调用非官方1.5模型就会现实gbk出错。

羊衔玉 发表于 2023-2-25 15:05:15

aeoluszan 发表于 2023-2-25 14:49
楼主使用哪种方式执行脚本的?B站有好几种,而且还有新的Lion运算模块,我都试过,貌似只有Kohya_SS的比较 ...

我在云端跑的,使用的是秋叶的

werran 发表于 2023-2-25 18:12:18

训练图是越多越好吗请问

羊衔玉 发表于 2023-2-25 18:43:38

werran 发表于 2023-2-25 18:12
训练图是越多越好吗请问

不是,50-100张足够了,越多的图片意味着质量不好的图片越多,选择100个你最满意的来训练

Aufheben 发表于 2023-2-25 20:44:41

是否可以用这个来生成一些DFL的素材?比如DFL中缺少某些角度,能不能用LoRA来补角度?

dsyrock 发表于 2023-2-26 00:22:11

其实除了关键词这部分,基本上跟DFL挑选src的原则是一样的吧

aeoluszan 发表于 2023-2-26 11:22:54

根据楼主的方法训练了一晚,出来的基本都是上半身图,全身图的脸崩了

素材大概是20大头,20半身,20全身

想问问楼主,用的是什么底膜?还有没有什么好的建议?

页: [1] 2 3 4 5 6 7
查看完整版本: 如何提高Lora模型质量-从图片预处理入手