问题背景:
首先,Fluxdev的Lora可以接入Kontext模型,但是效果非常差,网传通过模型相减再相加,强度调为1.5的方法,我测试效果也不大行,很容易造成最后出图崩坏。导致很多场景,例如产品换背景,换出来的背景有浓浓的Flux风格,很假。
但是,如果单用Kontext的参考图+结果图训练一些需要泛化性强的lora,会面临以下一些问题
1.训练集制作困难,以产品换背景为例,为了保证场景的泛化性,你需要制作N多背景不一样的输入图和结果图的素材来保证背景的多样性,需要耗费大量的精力。
2.即使你制作完了,在Kontext的训练中,你既要保证产品的控制能力,又要保证场景被训练进去,还要保证不训练过拟合(基本不可能)非常难把握训练的步数和强度。
所以我研究了一种新的训练和结合方法:用Kontext训练一个场景泛化性lora,再用kontext训练一个控制lora,二者分开训练,单独加载,可控性更强。
我使用的工具是AItoolkit,你可以用其他训练工具
使用原FLUX.DEV的Lora训练脚本,将其训练的底模换为Kontext底模路径
开启分层训练用于加速(Rank设为64没有任何依据,为测试值,纯靠感觉,不一定为最好的值)
·只训练7和20,也可以训练其他层,具体青龙有一期视频,里面有说到一些层的影响,主要是为了防止多个Lora同时加载影响最后出图的结果,Flux使用多个lora很容易糊图
·学习率我测试的值为3E-4,5000步训练,4000步就有些过拟合了,可以酌情减小
我训练的素材是王者荣耀的一些画风素材,主要是学习一些乱七八糟的飘动的特效
从结果上看,确实是学到了,并且没有造成太大的画质影响
从结果上看,这种方法确实可以,但是边界在哪,还需要测试。