欢迎光临散文网 会员登陆 & 注册

用多个底模微调LoRA,提高LoRA泛化性

2023-06-27 21:46 作者:敲代码的柠猫  | 我要投稿

LoRA模型的泛化性是指,在模型A上训练的LoRA,拿到模型B、C、D.....上,依然能够出符合该LoRA主题的图片,甚至还能够根据这些模型的风格对图片进行合理的调整。泛化性是评价一个LoRA模型好坏的重要因素,泛化性好的LoRA可以大幅减轻大家出图的工作量。

以下是泛化性不足的一个例子:同一个雷电将军的LoRA,在Counterfeit模型上能够出正常的图,而在revAnimated模型上生成的脸质量却不太好。

雷电将军LoRA + Counterfeit模型
雷电将军LoRA + revAnimated模型

下面用我的理解来说明为什么会出现LoRA泛化性不足的问题。当前社区流行的所有模型,都是从Stable Diffusion基础模型上微调或混合而来的。微调或混合的次数越多,模型之间的权重就越疏远。这就有点像人类的亲属关系,一个人总是和近亲有很多相似点,而和远亲则不太相似。

所以,LoRA在它的底模及底模的近亲上会表现得比较好,而对底模的远亲则表现得比较差。

下面举了一个例子,由SD基础模型通过微调和混合的方式衍生出一系列模型,并最终用其中一个模型训练LoRA α,如下图所示:

LoRA α采用模型G作为底模,可以预见它将在血缘关系较近的模型G、F、D上表现不错,而在血缘关系较远的模型H、J、E上表现得比较差。

那么,如何让我们训练的LoRA α 能够很好地泛化到模型H 和模型J 中呢?我的解决方案是用模型G 和模型H 联合训练LoRA α。这样LoRA α 学到的概念必然是模型G和模型H都能识别的,并且能被它们的近亲(模型F、D、E、J等)识别,实现很好的泛化性。

实现方案:在训练阶段,将LoRA的权重分别施加给两个底模,然后使用这两个底模交替进行推理和反向传播,更新LoRA的权重。

具体实验:底模采用GhostMix v2.0,第二底模采用revAnimated v1.22,总共迭代了大约1000步。代码细节就不贴了,直接看看最终的结果吧。

单底模(GhostMix v2.0)训练LoRA,在revAnimated模型上的表现

单底模(GhostMix v2.0)训练LoRA,在revAnimated模型上的表现

双底模(GhostMix v2.0 + revAnimated v1.22)训练LoRA,在revAnimated模型上的表现

双底模(GhostMix v2.0 + revAnimated v1.22)训练LoRA,在revAnimated模型上的表现

单底模(GhostMix v2.0)训练LoRA,在Counterfeit模型上的表现

单底模(GhostMix v2.0)训练LoRA,在Counterfeit模型上的表现

双底模(GhostMix v2.0 + revAnimated v1.22)训练LoRA,在Counterfeit模型上的表现

双底模(GhostMix v2.0 + revAnimated v1.22)训练LoRA,在Counterfeit模型上的表现

单底模(GhostMix v2.0)训练LoRA,在‘啥玩意儿完犊子古风’模型上的表现

单底模(GhostMix v2.0)训练LoRA,在‘啥玩意儿完犊子古风’模型上的表现

双底模(GhostMix v2.0 + revAnimated v1.22)训练LoRA,在‘啥玩意儿完犊子古风’模型上的表现

双底模(GhostMix v2.0 + revAnimated v1.22)训练LoRA,在‘啥玩意儿完犊子古风’模型上的表现

个人点评:在第二底模(revAnimated v1.22)上的表现,双底模LoRA明显优于单底模LoRA。而在其他2个非底模模型(Counterfeit,‘啥玩意儿完犊子古风’)上,双底模LoRA表现出了稍好的泛化性能,体现在人物及衣着特征更加还原。当然,觉得追求还原更重要,还是追求风格迁移更重要,这个就看个人审美见仁见智了。

另外,GhostMix本身就是一个泛化性能很好的底模,如果换成其他底模(比如anything模型),单底模的泛化性不足的问题会更加突出,采用多底模训练的优势会更加明显。


用多个底模微调LoRA,提高LoRA泛化性的评论 (共 条)

分享到微博请遵守国家法律