LoRA 训练实战:用 20 张照片微调专属风格模型
在 Stable Diffusion 生态中,LoRA(Low-Rank Adaptation)是一种高效模型微调技术。它无需训练整个大模型,仅通过少量图片(10-30 张)即可学习特定对象或风格,生成模型权重仅几十 MB,便于分享和部署。本文面向已有 Stable Diffusion WebUI 使用经验的进阶读者,完整演示从数据准备到模型部署的全流程。
环境准备与数据采集
推荐使用 Kohya_ss GUI 工具(基于 diffusers 和 bitsandbytes),支持 Windows/Linux。需准备:
- Python 3.10+,CUDA 11.8 以上
- 训练图片:20 张高质量照片(512x512 或 768x768 分辨率),建议主题一致(如“我的猫”、“某角色”或“特定画风”)
- 图片预处理:使用 WebUI 的 Preprocess 功能进行裁剪、去模糊,确保主体清晰
./train/
├── images/ # 训练图片(PNG/JPEG)
│ ├── cat_01.png
│ ├── cat_02.png
│ └── ...
└── caption/ # 可选:描述文本(txt 文件,每图对应)
├── cat_01.txt
└── ...
训练参数配置(核心)
LoRA 训练的关键参数对比如下,直接影响模型效果与过拟合程度:
| 参数 | 推荐值 | 说明 |
|---|---|---|
resolution | 512 | 与训练图片一致,过高易导致显存溢出 |
train_batch_size | 1-4 | 根据 GPU 显存(6GB 以上)调整 |
learning_rate | 1e-4 ~ 5e-5 | 过大导致过拟合,过小收敛慢 |
max_train_steps | 500-1500 | 20 张图推荐 1000 步,可结合 lr_scheduler 衰减 |
network_dim | 64 | LoRA 矩阵秩,128 更精细但模型体积翻倍 |
network_alpha | 32 | 缩放因子,与 dim 配合防止梯度爆炸 |
optimizer | AdamW8bit | 混合精度训练,节省显存 |
network_dim(秩)控制模型容量:64 适合简单风格(如特定色调),128 适合复杂对象(如人物面部)lr_scheduler:推荐cosine_with_restarts,在训练后期降低学习率,避免过拟合
执行训练(命令行示例)
使用 Kohya_ss 的 train_network.py 脚本,以下为最小化命令(基于 diffusers):
accelerate launch train_network.py \
--pretrained_model_name_or_path="runwayml/stable-diffusion-v1-5" \
--train_data_dir="./train/images" \
--output_dir="./output" \
--resolution=512 \
--train_batch_size=2 \
--learning_rate=1e-4 \
--max_train_steps=1000 \
--network_module="networks.lora" \
--network_dim=64 \
--network_alpha=32 \
--mixed_precision="fp16" \
--save_model_as="safetensors" \
--output_name="my_cat_style"
训练完成后,./output 目录会生成 my_cat_style.safetensors 文件(约 70-144 MB)。
模型部署与推理
将生成的 LoRA 文件放入 Stable Diffusion WebUI 的 models/Lora 目录(或 extensions/sd-webui-additional-networks 的 models 目录)。在 WebUI 中:
- 选择基础模型(与训练时一致,如 v1-5 或 SDXL)
- 在 prompt 中添加
(权重 0.8 表示融合度) - 输入描述词:
a cat sitting on a couch, - 生成图片,对比有无 LoRA 的效果差异
- 权重过高(>1.0)可能导致风格溢出或 artifacts
- 若训练集背景复杂,可添加
--shuffle_caption参数增强泛化能力
常见问题与排查
- 过拟合:训练步数过多或学习率过高 → 减少
max_train_steps至 800,或降低learning_rate至 5e-5 - 欠拟合:模型未学到特征 → 增加
network_dim至 128,或延长训练步数至 1500 - 显存不足:减小
train_batch_size至 1,或使用--gradient_accumulation_steps=2等效模拟更大 batch - 图片质量差:确保所有图片分辨率一致,主体无遮挡,背景不宜杂乱
小结
本文完整演示了使用 20 张照片微调 LoRA 风格模型的流程,覆盖环境搭建、参数配置、训练执行与推理部署。关键点在于调整 network_dim 和 learning_rate 的平衡,以及数据质量的把控。进阶用户可进一步尝试多概念 LoRA(如同时微调角色与背景),或使用 DreamBooth 结合 LoRA 进行更精细的控制。如需更深入的技术讨论,请访问 AI Explorer 联系页面。