训练Lora经验
【数据处理相关】
- 数据要求
a.要训练人物,数据最好能包含完整的脸,如果裁剪后的图片只有半边身体或者半张脸,那么后续模型的使用中也很容易出现生成的人物跑出图片或被奇怪的东西挡住情况。
b.数据与生成的要匹配,如果训练集都是半身或者大头,那么很难还原全身高清图,指定full body也容易导致比例出错。训练集全身占数据集大多数的话,可能面部分辨率就比较低,模型很难学到清楚的面部,效果也不好。
(待补充) - webui自动打标后,可以用BooruDatasetTagManager对标签tag进行手动批量增删。
增删依据是:
删除的tag会被固化在模型当中。被标注的tag不会被LoRA模型记住,训练中LoRA会把没被标注的tag当做默认元素,例如一个人戴眼镜,如果不把眼镜tag删掉,那么模型生成这个人的时候就会默认戴眼镜,即眼镜和这个人物已绑定。因此,删去要保留的tag,留下不需要的。如果不删去,调用模型的时候就要输入大量tag。整合成少量的tag后,调用方便,更精准还原角色特征。但删去太多容易导致过拟合,泛化性也会降低,会导致生成的画面非常固化。
另外,将与训练目标相关的要保留的tag都删去后,还要在每个标签文件中第一个位置添加一个不存在的标签(触发词)用于调度你训练的lora模型。这样在使用时不仅要导入LoRA模型,还要输入触发词才能输出想要的结果。
- 训练数据的文件夹要命名成X_tag。
x代表每张图片的重复次数,tag自定义一个和训练目标相关的词。x要参考所用图片数量、训练epoch计算出合适的值。
【模型训练相关】
【参数】
- batch_size
Batch_size 代表了同时送进去训练的数据量,理论上是应该第一个被确定的超参数。当数量为1时,等同于随机梯度下降法(SGD)。只要显存不大,能多大就多大(迫真)。
较大的batch size往往会导致训练速度更快(每个epoch的iteration数小),内存占用更大,但收敛得慢(需要更多epoch数)。
较小的batch size往往会导致训练速度更慢(每个epoch的iteration数大),内存占用更小,但收敛得快(需要更少epoch数)。
batch_size = 2^n时计算速度更快
2. base_model
底模型。
二次元选择novelai,训练三次元选择sd1.5,训练人物服装chilloutmix。也可以选择其他模型。
使用 SD2.x based model 时,需要勾选 v2 参数。
- clip_skip
跳过某些层的输出,起与 CFG 类似的作用。
通常三次元选1,二次元选2。 - network_dimension
特征维度,当需要学习的内容复杂时,维度应当更高。
模型文件的大小也是据此决定,当 network_dimension = 128 时,输出文件大小为 144 MB,dim=32时,大小为36MB。
该参数不是越高越好。维度提升时有助于学会更多细节,但模型收敛速度变慢,需要的训练时间更长,也更容易过拟合。高分辨率训练集通常需要更高的维度。 - alpha
alpha 被推荐设置为 network_dimension 的一半 - steps
不是一个可设置的参数, 计算方式:true_step = epochs * num_img*X / batch_size。
比如,你训练 8个 epochs,图片文件夹 10_dogs,里面有 50 张狗的图片。意味着重复10次,每个epoch 训练 500
steps。如果你的 batch_size = 4,还要除以 4,实际每个 epochs 只有 125steps。8 个 epochs 后
steps 是 1000。
(待补充)
生图经验
1.如果某次generate得到的图效果好,可以点击下方绿色,得到上次生成的seed值,用这个seed值继续generate出类似风格的图片
2.prompt规则
- 靠前的权重大、权重逐步减小。
- prompt实际的“权重”应该是相对的,用更多的prompt,每一个的权重会降低。因此有必要减少不必要的prompt使用。
- 生图时的prompt应遵守与tag一致的一定顺序,一种可参考的顺序是:
- 主题:1boy, 1girl, aka(自定义的人物标签)
- 风格、视角、质量: photorealistic,best quality,masterpiece, ultra high res, full body shot, from side,
- 动作: sitting, standing, looking at viewer…
- 主要属性(服装、头发等): short brown hair, long hair, pale pink dress with dark edges,
- 次要属性: 光效这些
- 背景、其他杂物
可参考资料:
新手指南 | AiDraw (novelai.dev)