炼了三十多炉人物lora(以及十多炉焦茶),经历了很多试错。写一篇专栏,总结与分享我的经验。这是我的c站账号https://civitai.com/user/zbw
这是一篇关于lora人物训练中,关于分concept,打标,尤其是防止concept之间融合的详细教程。
(相关资料图)
零.训练配置
训练脚本是直接从github上面直接拉的https://github.com/derriandistro/LoRA_Easy_Training_Scripts
(不知道为什么一样的训练集一样的参数用秋叶包每次都炸炉)。
云部署不会linux的可以跟着这个教程部署。(我也是跟着来的)
https://www.bilibili.com/video/av435827948/?vd_source=a3ec46f32badb5a9f89fe4d1bca09bbf
参数我没有经过很多尝试,所以这里只是放出我的训练参数,会将lora_train_command放在下面。
一.concept分类
1.对于一个人物有多个官设的情况(服装、皮肤),应分不同的concept,并打上不同的触发词,此外,chibi与nsfw(尤其是nsfw)图,也建议另外分concept。
2.对于非官设的素材,也可以另开一个concept。此类素材,可有效降低换衣的难度。
3.训练集放几张nsfw图对模型的H性能至关重要(废话),但如果nsfw的比重过大,就会出现跑正常图也总是露一块的情况。
4.大头集:素材头部差别小可以单独做一个大头集,差别大不建议。曾今的设想是单独做一个大头集,要换衣服的时候就只打大头集的触发词,但试过很多次后感觉效果不明显.
5.关于repeat:几个官设concept(也就是想打触发词的concept)中,repeat*图片数的值应尽可能相等,对于图片数较大的concept,repeat*图片数的值应稍微大一点(因为更难拟合),
对于nsfw与chibi集,repeat开6~8就可以了。
5.我自己训练集的repeat设置:
二.打标技巧
1.keep tokens简介:在训练过程中,会将txt中的tag进行随机打乱。如果将keep tokens设置为n,那前n个token的顺序在训练过程中将不会被打乱。
(秋叶包居然没有keep tokens!这也是我没用秋叶包的原因)
2.txt的本质:在每一个epoch中,(经过打乱的)txt前4个token会被当做触发词,此外的token会被当做排除集。ai会将排除集中的元素在素材中删除后,把素材的剩余部分学进前4个token中。因此,如果不开启keep tokens,txt中的每一个tag在足够多的epoch后,都将成为触发词。
有了上面两个点,我们就能解释,为什么画风训练可以打全标,而人物训练如果打全标,就会出现多触发词的情况。(在不开启keep tokens的情况下)
一种很流行的打标方式是利用tagger打标后,删除其中与人物特征密切相关的tag,并加上触发词。这样的弊端一是很难将与人物相关的tag删除干净(没删干净就有可能出现丢特征的情况),二是必须开启keep tokens(不然大概是会发生concept之间的融合的)
3.我的打标方式:由于很难将与人物相关的tag删除干净,所以我采用保留特定tag的方式。需要保留的tag,我认为只需要视角、大幅度动作以及触发词就可以了。(以前很长时间我甚至只打触发词一个tag),
我写了一个简单的py脚本进行txt批量处理,会放在下面。(可以自行添加删除白名单tag,我放进白名单的tag不是很全面)用管理员权限打开cmd后,运行py文件就可以了。
我打标的具体流程是:对于每一个concept,先用tagger打标后(可信度开0.3),再运行我的py脚本。
1.好的训练集:画风多样,视角多样,视角多样,有sfw有nsfw,有大头有全身,有upper body有full body。
素材多多益善,但太多的话(比如一个concept有上百张图)帮助也不大,此时可以提高筛选标准。
背景抠不抠无所谓。
2.利用mmd:可以利用mmd补充角度,但不建议放太多的mmd素材(最多三分之一吧,很多pmx的脸部细节实在是太少了)。
不加渲染也可以。(不嫌麻烦加点渲染更好)
四.防止concept融合的总结
由于这些内容分布得很散,所以这里单独做个总结
1.几个官设concept中,repeat*图片数的值应尽可能相等。
2.不同concept的txt之间有相同tag情况下,又没开keep tokens。
3.欠拟合也可能会导致融合。
五.补救方法
1.出现融合,可以使用添加描述的方法
是时候用我们对开源的理解做一次实验啦,以此启发后续的开源者以及让千篇一律的无趣宇宙发生一点微妙的变化!
------AIGODLINK
滚动