本专栏将用具体例子向你展示三种打标方式(全标、删去人物特征、只保留唤起标签)在lora人物训练中不同的效果,并给出各自的优缺点。同时你也会看到正则化对人衣分离的作用。最后我会给出推荐的训练方式。
注意,我是开启keep token和打乱标签的,lion优化器
关键词:LoRA模型、打标方式、正则化、训练方式、心得
参考:
全文2550字,如果你想看证明过程就慢慢看,会有具体图片例子
如果你只想得到结论,直接拉到最后的总结部分(但我相信如果你不看图片,可能理解的不是那么好)
看完这篇专栏大概5分钟,训练、测试、得出结论,最后写专栏却要好几天。
如果你能看到最后,觉得有用,不要忘了结尾的约定。
如果觉得没用,很抱歉我浪费了你的时间,你可以给我留言改进的意见或者指出我的错误。
测试模型、训练集、正则化集、tag文件、train.sh文件、xyz图我稍后会上传,请留意评论区
专栏里的XYZ图如果看不清楚,右键图片在新标签页打开, 删除最后一个@及后面的所有字,就是原图了
阿慈谷日步美是 Nexon 发行的游戏《蔚蓝档案》及其衍生作品中的登场角色。
其通常形象为背着佩洛洛风格背包的金发双马尾JK少女
在此次实验中,我使用8张图片做为训练集;测试了在合理参数设置下,三种打标方式及全标+正则化的训练成品。
(一)训练集展示(仅8张)
(二)参数
我一共训练了7组模型,先给出基础参数:
(三)prompt:naifu起手式+以下组合
全标:全都有
删特征:人物被删去,其他保留
仅唤起:人物被删去;衣服(除了shoes,school uniform,bag被保留外)被删去;其余保留
其中在keep token = 3作用下,第一栏(hifumi,girl,solo)成为唤起词
(四)模型:
其中最后一列的all_plus已经有点过拟合了,接下来的分析我不会提到它,放哪里给大家做个对比
下面的XYZ图按这个顺序从左到右排序,重点分析前3列(三种打标)和第4/5列(正则化)
(五)模型测试(prompt测试)
5.1 唤醒词 测试
可以看到在开启keep token时,三种打标在一定程度上都完成了唤起;
考察面部还原、胸前蝴蝶结:
易调用性: 仅唤起 > 删特征 > 全标
其中正则化还未完全拟合,(如果仅使用唤起词,其还原程度,在拟合后,理论上应该是弱于全标的)
5.2 唤起+人物 测试
可以看到还原程度: 仅唤起(实际上是过拟合了) > 删特征 > 全标
考察对人物的还原,全标 和 删特征 均满足了要求。
但是请注意,我并未输入衣服tag,但是 仅唤起 直接把JK还原了,这意味着 仅唤起 已经过拟合了。
同时,也可以大胆推断,在未过拟合的情况下,全标 和 删特征 是可以完成换衣的,也就是在不使用正则化的情况下具有一定程度的泛化性。(在5.4中被证明)
泛化性(换装能力):全标>删特征>仅唤起
5.3 人物+衣服 测试
可以看到在 人物+衣服 的 prompt 下,无明显差别(除了正则化还未拟合)
5.4 泛化 测试 (仅人物+full body+swimsuit)
可以看到 仅唤起 已经不可避免的过拟合,换装失败;其余的均很好完成了换装。
这证明了5.2的结论:在未过拟合的情况下,全标 和 删特征 是可以完成换衣的,也就是在不使用正则化的情况下具有一定程度的泛化性。
泛化性(换装能力):全标>删特征>仅唤起
5.5 仅衣服 测试
注意,这个测试是重点,直接反应了泛化性的差距。
可以看到 仅唤起、删特征、全标,人物均不同程度受到了衣服tag的影响(仅唤起的人物几乎已是日富美;全标受影响最小),只有正则化最好的完成了人物与衣服的剥离。
泛化能力:正则化>>全标>删特征>>仅唤起
不要觉得正则化还原的衣服不像,那是因为8epoch的正则化模型还未拟合,下面是一张14epoch已经拟合的正则化图片(仅衣服tag)
也就是说,如果你有多concept互换衣服的需求,或者训练衣服的需求,是一定要用正则化的
5.6 全标 测试(细节测试)
这个也是重要指标,这里只考察对非人物细节的学习,如枪和佩洛洛背包的还原
细节能力:正则化≈>全标>删特征>仅唤起
还是那句话,不要觉得图里正则化的背包不像,那是因为还没拟合。
过拟合风险:仅唤起>>删特征>全标>正则化
拟合能力(对人物的学习速度/出成品速度):全标≈=仅唤起≈=删特征>>正则化
(正则化处理不好脸部还原会有难度,这个在大训练集中特别明显)
细节能力(非人物细节,如光环,绣肩,佩洛洛背包,画风等):正则化≈>全标>删特征>仅唤起
还原性(人物+衣服/全标;拟合后):无明显差别
易调用性: 仅唤起 > 删特征 > 全标>>正则化
换装能力(不过拟合情况):正则化>全标≈>删特征>>仅唤起
泛化能力:正则化>>全标>删特征>>仅唤起
训练容易程度(包括训练集准备、tag处理,调参来避免欠/过拟合):全标≈>删特征>仅特征≈=正则化(小训练集)>>>正则化(大训练集)
同时,如果有多concept互换衣服的需求,或者训练衣服的需求,总之如果想把人物和服装分离,是一定要用正则化的
为什么删特征会略比全标难呢?因为删特征最好给点脸部特写,而且特征tag最好删干净了,不然会丢特征。
为什么仅特征更难?因为必须 一定 要保证相关tag删干净了,同时它太容易过拟合了,而且细节的学习要给很多特写。
为什么正则化最难,因为如果参数没调好,训练集和正则化的比重没弄好,拟合是有难度难度(特别是大训练集);这往往需要一定的经验。
小训练集耗时相对少(试错空间大),脸部拟合也不是太难(给特写),同时也面临过拟合的困扰,所以用正则化是不错的选择。这也是我最开始推荐使用正则化的原因,因为当时我的训练集较小,每个concept只有30张左右。
但是最近有人和我反应大训练集用正准化效果不佳,这是因为
大训练集使用正则化一定要谨慎!因为脸部拟合有难度,而且耗时会大幅增加!
如果你非要用,控制比重在5%~10%以下,同时要给脸部特写!
建议:
新手训练自用的 单角色 模型直接全标完事。(还原又好,细节又好,还能换装,泛化好,拟合风险又小,真是有够爽的)
稍微熟练后可尝试删特征。(删特征训练的特写和tag处理具体教程,下下周可能我会讲,看有没有空)
熟练掌握调参和训练集、tag处理后,有发布易调用模型的需求,仅唤起。
有极强的泛化需求,或者有分离服装需求,可以用正则化。(还是那句话,大训练集有难度,推荐小训练集用)
最后只放一张图(我的模型没炼好,这个8张训练集的我不满意XD)
你看完这篇专栏只要5分钟,我训练、测试、得出结论最后编写专栏要好几天。
所以觉得本专栏对你有用的,或者图片好看的,不妨点个三连、分享吧。
by Happy_WSH