先把便宜的台阶走完
这里有一个梯子,跳到最顶上一级既费钱又费时间。
- 先把提示词写好。 模型本来就认识这个概念时,改文字是零成本的。
- 给它一张图。 参考图、结构图或首帧,能在不动任何权重的前提下把外观搬过去。
- 训一个 LoRA。 小、便宜、算力一小时以内,而且可逆,因为它是叠加在任意兼容底模之上的。
- 微调整个模型。 完整 DreamBooth 或重写一份大模型。慢且贵,只有在 LoRA 已经试过且不够用时才值得。
大多数觉得自己需要训练的人,其实需要的是第二步。诚实的检验标准是:一张好的参考图能不能带你走完八成路程。如果能,剩下那两成很少值得开一次训练。
几个词分别指什么
checkpoint model(大模型 / 底模) 是完整的一整套权重,也就是大家说的那种几 GB 的 stable diffusion checkpoint 文件。微调它,产出的还是一个这样的文件。
DreamBooth 是教特定主体的方法:用一个罕见 token 当它的名字,再加上类别图,防止新知识把整个类别吞掉。
textual inversion 学的是嵌入而不是权重,等于造一个新词,指向模型已经会的东西。
LoRA 训练的是低秩调整矩阵而不是全部权重,所以它体积小、还能叠加。
结果好坏由素材决定
训练在很大程度上是个数据问题,而它的失败方式是可预测的。
- 多样性是硬要求。 每张图光线都一样,模型学会的就是那套光;背景都一样,它学会的就是那个背景。
- 分辨率和清晰度比张数重要。 拿放大过的、发虚的图去训,教出来的就是发虚。
- 标注要一致。 主体用一个罕见标识符,描述变化的部分,不要去描述不变的部分。
- 删掉近似重复。 视频里连续几帧实际上就是同一张图重复多次,而重复正是过拟合的起点。
怎么看出过拟合与欠拟合
过拟合的样子是:主体是对的,但被冻住了。永远是那个四分之三侧脸、那套打光,训练集的背景冒出来一块,提示词一样也搬不动。欠拟合正好相反:主体只有一半像,标识符表现得像个普通形容词。
判断这两者,要在训练过程中的多个存档点上都出图,而不是只看最后一版。模型微调本质是个实验过程,最好的那一轮往往不是最后一轮。