用 Stable Diffusion(SD)合成数据,通常指用文生图/图生图生成带标签或可控属性的图像,用于训练、评测或增强机器学习数据集。下面按“目标 → 方法 → 实操流程 → 注意事项”给你一个可落地的指南。
一、明确你要“合成什么数据”
先想清楚用途,不同目标做法差别很大:
- 图像分类数据:每类生成大量图 + 类别标签
- 目标检测 / 分割数据:需要 bbox / mask(SD 本身不直接给,要配合控制或后处理)
- OCR / 文档数据:生成带文字的图(需特殊模型)
- 人脸 / 人体数据:需注意隐私与合规
- 工业缺陷数据:小样本扩增,用 ControlNet + 真实缺陷图
二、Stable Diffusion 合成数据的核心方法
1. 文生图(TXT2IMG)最简单
适合:分类、风格化数据
prompt:
a photo of a red sports car, sunny day, high resolution, realistic
negative_prompt:
blurry, low quality, watermark
批量改 prompt 就能合成不同类数据。
2. 图生图(IMG2IMG)做数据增强
适合:已有少量真实图,扩样
- 上传真实图
- 改 denoising strength(0.3–0.7)
- 生成相似但不同的新图
✅ 保留结构
❌ 不适合改太大
3. ControlNet(强烈推荐用于“可控合成”)
这是做结构化数据的关键。
常用 ControlNet:
- Canny:边缘控制
- Depth:深度控制
- Pose:人体姿态
- Segmentation:语义区域
例子(目标检测数据):
- 用真实图提取 Canny
- ControlNet 固定结构
- 改物体颜色 / 光照 / 背景
- 标签可复用原 bbox
4. LoRA / DreamBooth 固定对象
适合:
流程:
- 用 10–30 张图训练 LoRA
- 推理时加
- 批量换背景 / 姿态
5. 自动打标(合成 + 标签)
SD 本身不输出标签,常用方案:
- Prompt 即标签(最常用)
- BLIP / WD14 反推标签
- GroundingDINO + SAM(自动 bbox + mask)
- OCR 模型(文字图)
三、一个可复制的实操流程(示例)
场景:合成“猫的分类数据”
- 选模型:
sd_xl_base - 写 prompt 模板:
a photo of a {color} cat, {pose}, indoor, 4k
- 用脚本批量:
- 每张图存:
cat_black_sit_001.png
label: cat_black_sit
- 用 ControlNet 保证猫形态稳定(可选)
四、工具推荐(不想写代码也行)
- WebUI(AUTOMATIC1111):手动 / 脚本
- ComfyUI:可视化流水线,适合批量
- Diffusers(Python):工程化首选
- Label Studio + SD:人工校验标签
五、重要注意事项(很关键)
- 版权与合规:不要仿特定真人 / 品牌
- 域偏差:SD 图偏“美观”,和真实分布有 gap
- 混合训练:真实 + 合成效果通常最好
- 评测要分开:测试集必须是真实数据
如果你愿意,可以告诉我:
- 你是做分类 / 检测 / 分割 / OCR?
- 用 WebUI 还是代码?
- 数据领域(人脸 / 工业 / 自然图)?
我可以直接给你可用的 prompt 模板或 Python 脚本。