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 rate | 1e-4 | 人物/物体;画风可试 5e-5 |
| network dim (rank) | 16–32 | 越大表达能力越强,也越容易过拟合 |
| network alpha | dim 的一半或相等 | 常设 alpha = dim/2 |
| batch size | 1–2 | 显存允许时用 2 更稳 |
| epoch | 10–20 | 看 loss 曲线,别死记 |
| text encoder lr | 0 或很低 | 只训 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 更自然。
然后把触发词、推荐权重、适用底座、训练素材来源一起写进说明里。这些信息缺一项,别人用起来就会踩坑。
评论 0