Stable Diffusion 训练数据准备全流程
一 明确目标与数据规模
- 明确任务类型:是做人物/物体/风格的 LoRA 微调,还是做全量微调或DreamBooth(个性化主体)。不同任务对数据量与标注精细度要求不同。
- 规模建议:
- LoRA 个性化:建议15–50 张高质量、主体清晰、视角多样的图像即可起步;若数据不足,可借助云端算力与成熟脚本快速迭代。
- 风格/概念学习:尽量20–50 张以上,覆盖不同光照、构图、细节变体。
- 全量微调或复杂定制:通常需要上千至上万图文对,数据质量与一致性要求更高。
- 基础模型与分辨率匹配:
- SD 1.5:常用分辨率512×512或768×768(亦可512×768/768×512以适配横竖版)。
- SDXL:推荐更高分辨率(如1024×1024)以发挥模型能力。
- 数据质量优先于数量:模糊、过曝、低分辨率、带水印/无关元素、重复图像都应剔除;必要时先做去重与清洗。
二 目录结构与标注格式
- 文件组织(按图-文对):
- 推荐每张图配一个同名 .txt 描述文件(同目录、同文件名),便于批量读取与版本管理。
- 示例:
- data/
- custom_dataset/
- 0001.jpg
- 0001.txt
- 0002.png
- 0002.txt
- 标注方式(二选一或混合):
- 自然语言描述(Caption):更贴近通用扩散模型的训练范式,便于泛化。
- 标签式描述(Tags):如使用 WD14 Tagger 生成标签,再人工精简。
- 标注规范与结构化提示:
- 建议结构:主体 + 细节 + 场景/背景 + 风格 + 质量词。
例:a beautiful woman with long wavy brown hair, wearing a red floral dress, standing in a sun-dappled forest, soft bokeh, oil painting style, highly detailed, masterpiece, best quality。
- 一致性:同类样本保持关键词一致(如统一用 1girl/1boy)。
- 触发词(Trigger Word):学习全新概念时,给所有样本加上唯一且少见的词(如 sks_dog),推理时通过触发词激活概念;风格学习通常不需要。
- 数据集描述文件(可选):使用 JSON 清单 管理大规模数据,字段包含 img_path 与 caption,便于自定义 Dataset 加载与分布式训练。
三 图像预处理与增强
- 统一分辨率与比例:将所有图像调整到目标分辨率(如512×512),避免拉伸变形;可用中心裁剪或智能填充保持构图。
- 像素与张量规范:常见流程为将像素值归一化到[0, 1]或[-1, 1]区间,便于与预训练权重一致。
- 数据增强(轻量):常用随机水平翻转、中心裁剪等;避免强增强破坏主体特征。
- 去重与清洗:使用感知哈希(dHash)等方法去除近似重复;剔除低质、带水印/文字(非艺术主体部分)的图像。
- 标注生成与优化:
- 先用 BLIP-2 / LLaVA 生成初稿描述,再人工校对关键细节与风格词。
- 使用 WD14 Tagger 批量打标签,结合人工删改,保留必要特征、删除歧义或干扰标签。
四 数据加载与训练配置要点
- 工具与流程选择:
- 初学者与进阶用户可用 Kohya_ss GUI(图形化、参数可视化、社区成熟);
- 代码级可控方案用 Diffusers + PEFT(Hugging Face 生态,易集成与复现)。
- 关键超参(LoRA 常用起点):
- Network Dim(秩):从32/64起步;数据多或特征复杂可适当增大;
- Network Alpha:常设为 Dim 的一半(如 64/32);
- 学习率:1e-4 ~ 5e-4 常见,不稳定时降至 1e-5;
- 优化器:AdamW 8bit 或 Lion;
- 正则化技巧:开启 Caption Dropout(0.05–0.1)、Tag Dropout、Tag Shuffle,提升鲁棒性与泛化。
- 训练与资源建议:
- 12–16GB 显存:可行但需减小 batch size、开启梯度检查点等;
- 24GB 显存:更顺畅,适合中等规模数据与更高分辨率;
- 使用 混合精度(fp16) 与 分布式训练 提升效率与稳定性。
五 质量评估与常见陷阱
- 模型选择与验证:训练会得到多个检查点,使用基础模型逐一加载 LoRA,在 WebUI/ComfyUI 中测试:
- 用与训练集相似的 Prompt 验证还原度;
- 用包含触发词的 Prompt 验证概念激活;
- 用全新主体/场景测试泛化能力;
- 警惕过拟合:只对训练集“复刻”,对 Prompt 变化不敏感。
- 常见陷阱与修正:
- 分辨率不统一或拉伸变形 → 统一到目标分辨率并采用中心裁剪/填充;
- 标签/描述不一致 → 统一关键词与风格词,避免同义混用;
- 触发词冲突或缺失 → 确保训练与推理使用同一唯一触发词;
- 数据重复或低质 → 做去重与清洗,剔除模糊、带水印、无关元素样本。