经由这一段韶光的实践,目前我认为风格类的模型想要练好,紧张有以下几个难点。
风格模型难点1:数据集该当用什么可能大家认为数据集并不是主要的事,量大管饱,网络张数够多就行。这里要引入我个人的不雅观点:Lora/lycoris是在大模型的根本上,通过了算法的抽取、精简和对数据集跟大模型的双重学习、校验,把数据集的特色抽取之后,再重新构建出一个更小的模型,理解起来便是大模型和小模型是一个交集的关系。因此,为什么数据集主要?由于它在被精简过的,那么想要练出来的模型好用,数据集就必须遵照这样的原则:大体上,画风该当只管即便同等,同时该当只管即便全面。数据集画风的同等,我认为是演习成功的一半成分。
国漫风格的数据集(上)
国漫风格的数据集(下)
从上面的数据集,可以看到在网络的时候我就故意把多人(含4人以上)、物体(有些图只有物体没有人物)、单人多场景结合起来网络。
由于大模型和小模型之间的关系是交集的关系,因此想通过相同文本触发出小模型表示的风格,担保数据集的多样化十分有必要,只有这样在输入触发词/利用Lora的时候,能让机器识别到这个物体应该是若何的形态。(当然人物模型我暂时还没涉及,并不清楚人物模型是否也须要遵照这样的原则)
水彩中餐风格的图集(1)
水彩中餐风格的图集(2)
水彩中餐风格的图集(3)
风格模型难点2:图片该当怎么处理图片的处理在SD1.5-2.0的时期是必须严格要遵守512512/768768呈四方形的原则的,但到了SDXL之后,这个原则变得松动了起来,长方形的图作为演习集也没有问题,只须要知足不低于512即可,以Kohya的解释来看,更建议用户用10241024的图作为演习集,实测下来实在可以不用遵照这个规则。
图片是不用裁剪了,但是笔墨、水印等,却一定是要处理的,如果不进行处理,那么机器将会认为它是属于数据集须要被学习的一部分,大概率成品模型里无论权重加到多少,仍旧摆脱不了奇怪的“字符”样子的东西被天生。
同时,人们目前对模型标签怎么处理也呈现出几种不同的声音,有的人认为不须要打标(即图片经由裁剪和文件夹命名之后不再下一步处理直接开始演习),有人认为须要打局部标签(即图片只提取主要的特质,而其他的画面元素不须要纳入),有人认为须要打全标(即画面元素尽可能都描述出来)。
实测,打全标是能让机器学习得更好、让Lora的特质发挥得更明显的。
风格模型难点3:什么时候停滞演习网上有不少辞吐称要看loss丢失函数的值,实际上loss丢失函数很低,但不代表模型演习得好。
这是之前练的水彩风格饮料的丢失值,可以看到最低点的时候已经去到了0.03旁边
如上图示,丢失函数到了0.03,按理来说模型该当收敛得特殊好吧?可终极的结果是,想要天生和演习集风格的图,Lora的强度必须设置得特殊高,远超于1的强度。
而另一个近日落成的、同样是基于SDXL、图片张数同等、也是打全标的lycoris,终极的loss值仅到了0.08,比上面的0.03要大得多,但是模型强度在1-1.14,就能天生不错的图了。
水彩风格中餐Lycoris的试验图
同款Lycoris的不同提示词的实验图
既然loss值存在着随机性,而且对付一样平常人来说不会代码,那若何才能方便地监测着机器的学习进度呢?我个人认为保险的方法是:每1000步天生1次样图,通过样图和数据集图片的比较,能较为直不雅观地查看效果。同时,每一轮结束后也天生1次样图,通过和最近的1步数样图比拟,就能创造机器的学习有无涌现过拟合的情形。
综合上述所说,经由这几次的摸索,我创造想要“炼丹”成功,至少要知足这几个条件:1、数据集15-20张,再多就看演习的电脑有多好了;2、数据集风格必须同等或近似,否则影响模型的产出;3、打全标很有必要,但代价便是泛化性不太好。4、比较用loss值判断机器学习的进度,不如用笨一点的方法用样图来测试;5、样图的设置必须遵照是学习器的倍数的原则,否则可能涌现无法天生样图而终止练习……
2024-09-27 01:42:06 INFO prompt: masterpiece,1big bowl, chopped green onion,Chicken soup, waste train_util.py:5722paper placed in the bottom of the bowl to dissipateheat,warmlight,Chinese-food-style2024-09-27 01:42:07 INFO negative_prompt: low quality, worst quality, bad anatomy, bad train_util.py:5723composition, poor, low effortINFO height: 1200 train_util.py:5724INFO width: 1024 train_util.py:5725INFO sample_steps: 20 train_util.py:5726INFO scale: 7.5 train_util.py:5727INFO sample_sampler: euler_a train_util.py:5728INFO seed: 1 train_util.py:5730
以上便是我前几天演习的模型中设置的样图示例,个中“height”被我设置成1200,而我选择的Loha预设器必须是32的倍数才行,于是第一轮准备天生样图,生生终止……
以上便是近段韶光的阶段性总结。不过我个人还有点以为迷惑的地方:即便是利用相同的大模型、提示词、迭代步数、调度器、随机种子,Comfyui和SD天生的效果也有显著的差别,这是由于什么造成的,暂时还没想明白。
上文提到的我演习出的Lora/Lycoris 天生的图:
水彩风中餐,饺子
水彩风大馄饨
由于数据集里的标签涌现过蔬菜的品种,因此输入水果也是能画出水彩风的水果的,只是欠缺细节(泛化性不足)
我演习的民国漫画风格Lora,画多人表现力也不差