LoRA 训练听起来是件门槛很高的事,实际跑通一次之后会发现,难点不在算力,在数据集和打标。参数反而好办——就那么几个,社区里也有稳定的经验区间。

先明确:你要的是「学一个人」还是「学一种风格」

这两件事的训练策略不一样。

目标图片量打标重点过拟合表现
特定人物/角色15–30 张触发词代表这个人,其余特征不标换任何提示词都出这张脸
特定画风30–80 张不写具体内容,只写风格描述所有图都变成这个画风,内容不受控
特定物体/道具10–20 张触发词代表物体,背景要多样物体只出现在训练时的背景里

新手最常见的错误是:想学一个人,结果连他的衣服、背景、光照一起学了。换场景就崩。

数据集:多样性比数量重要

20 张同一角度、同一光照、同一背景的图,训出来的 LoRA 只会复现那个角度。反过来,15 张不同角度、不同光照、不同表情的图,泛化能力明显更好。

建议的覆盖维度:

  • 角度:正面、侧面、四分之三侧、背面(至少各一张)
  • 景别:特写、半身、全身
  • 光照:顺光、侧光、逆光、室内、室外
  • 表情:中性、微笑、其他(不要全是同一个表情)

分辨率建议统一到 1024×1024 或 768×768,且不要用带水印、带文字的图。模型会把这些也学进去。

打标:触发词的正确用法

核心原则一句话:触发词负责「这个人是谁」,其余标签负责「这张图里还有什么」。

❌ 每张都写:mychar, 1girl, long blue hair, red eyes, white dress
   → 模型会认为「蓝发红眼白裙」是 mychar 的固有属性,换衣服就崩

✅ 写成:mychar, 1girl, white dress, standing, indoor
   → mychar 只代表身份,服装和场景由其他词控制

但这里有个矛盾:如果完全不给外观描述,模型怎么知道 mychar 长什么样?答案是——它从图片本身学。打标的作用是告诉模型哪些是该忽略的变量,不是告诉它长什么样。

所以外观的固有特征(发色、瞳色)如果每张图都一样,可以不标;如果每张图都不同(比如换了发型),就必须标出来,否则模型会混乱。

关键超参

参数常用值说明
learning rate1e-4人物/物体;画风可试 5e-5
network dim (rank)16–32越大表达能力越强,也越容易过拟合
network alphadim 的一半或相等常设 alpha = dim/2
batch size1–2显存允许时用 2 更稳
epoch10–20看 loss 曲线,别死记
text encoder lr0 或很低只训 UNet 通常更稳

「text encoder 学习率设 0」是个很实用的默认值。它意味着只训练 UNet 部分,触发词靠 CLIP 原本的语义空间去挂靠。这样训练快、不容易把文本编码器带歪。

怎么判断过拟合

最直接的测试:拿训练好的 LoRA,换五个完全不同的场景提示词。

1. mychar, standing on a beach, sunset
2. mychar, sitting in a cafe, reading
3. mychar, close-up portrait, studio lighting
4. mychar, full body, snow mountain
5. mychar, wearing armor, fantasy background

如果五张图的脸或服装高度一致、背景也被拉回训练时的场景,就是过拟合。如果五张图里 mychar 都稳定出现,但服装、场景、光照跟着提示词变,就是健康的。

另一个信号:不写触发词,随便生成一张图,看会不会莫名其妙出现训练对象。会,就是过拟合太严重。

补救办法:减 epoch、降 dim、或者降低 LoRA 使用权重。已经训过头的话,权重降到 0.6 往往能救回来一部分。

数据集的合规问题,得单独说

训练素材的来源决定了这个 LoRA 能不能公开分发。

  • 自己拍摄/绘制:没问题,可以分发。
  • 自己用 AI 生成的图:多数平台允许,但要注意生成平台的使用条款。
  • 他人作品(含同人图):风险最高。用于个人学习尚且有争议,公开分发基本等于侵权。
  • 真人照片:涉及肖像权,未经同意训练并分发,法律风险明确。

这不是道德说教,是实际会遇到的问题——社区里因为训练素材被投诉而下架的例子不少。

训练完之后

LoRA 训完先别急着发布。同一段提示词,分别用权重 0.6 / 0.8 / 1.0 各出一张,看哪个区间最稳。很多时候 0.8 比 1.0 更自然。

然后把触发词、推荐权重、适用底座、训练素材来源一起写进说明里。这些信息缺一项,别人用起来就会踩坑。