跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

Stable Diffusion 微调教程:基于 Dreambooth 与 LoRA

综述由AI生成介绍如何使用 Dreambooth 和 LoRA 技术对 Stable Diffusion 模型进行微调。涵盖虚拟环境搭建、依赖安装、数据集准备、训练脚本配置及参数说明、模型缓存处理、训练执行以及推理生成代码。同时分析了训练效果不佳的原因,包括数据集质量、分辨率及 Prompt 差异等,为实际部署提供参考。

Kubernet发布于 2025/2/7更新于 2026/5/2225 浏览
Stable Diffusion 微调教程:基于 Dreambooth 与 LoRA

环境配置

首先创建并激活虚拟环境:

conda create -n sd_train python=3.9
conda activate sd_train

安装必要的库。使用 Dreambooth 对 Stable Diffusion 进行微调,需先克隆 Diffusion Model 库:

git clone https://github.com/huggingface/diffusers.git
cd diffusers
pip install -e .

进入 examples/dreambooth 目录,安装依赖包:

pip install -r requirements_sdxl.txt
pip install bitsandbytes xformers

配置 accelerate 环境:

accelerate config default

数据集准备

将用于微调的图片放入 examples/dreambooth 目录下。

训练脚本配置

编写训练脚本,主要配置模型参数、数据路径、学习率等。以下为 SDXL 版本的 Dreambooth LoRA 训练命令示例:

export MODEL_NAME="stabilityai/stable-diffusion-xl-base-1.0"
export INSTANCE_DIR="data"
export OUTPUT_DIR="lora-trained-xl"

python train_dreambooth_lora_sdxl.py \
  --pretrained_model_name_or_path=$MODEL_NAME \
  --instance_data_dir=$INSTANCE_DIR \
  --output_dir=$OUTPUT_DIR \
  --instance_prompt="a photo of youhu" \
  --resolution=1024 \
  --train_batch_size=1 \
  --gradient_accumulation_steps=4 \
  --learning_rate=1e-5 \
  --lr_scheduler="constant" \
  --lr_warmup_steps=0 \
  --max_train_steps=500 \
  --validation_prompt="youhu" \
  --validation_epochs=25 \
  --seed="0" \
  --enable_xformers_memory_efficient_attention \
  --gradient_checkpointing \
  --use_8bit_adam

参数说明:

  • --pretrained_model_name_or_path:指定预训练模型名称或路径。
  • --instance_data_dir:实例数据目录。
  • --output_dir:训练结果输出目录。
  • --instance_prompt:实例提示词,描述输入数据内容。
  • --resolution:训练分辨率。
  • --train_batch_size:训练批量大小。
  • --gradient_accumulation_steps:梯度累积步数。
  • --learning_rate:初始学习率。
  • --max_train_steps:最大训练步数。
  • --seed:随机种子。
  • 注意:Stable Diffusion 原装 VAE 可能存在数值不稳定问题,官方推荐更换 VAE 模型,但部分版本可能存在冲突,可根据实际情况选择是否启用专用 VAE。

    模型缓存处理

    由于网络限制,服务器可能无法直接从 Hugging Face 下载模型。建议在 examples/dreambooth 目录下预先建立文件夹存放模型文件,例如 stable-diffusion-xl-base-1.0,确保训练时能正确加载本地缓存。

    执行训练

    运行训练脚本:

    bash train.sh
    

    等待进度条完成即可。

    模型推理生成

    在 examples/dreambooth 目录下创建 Python 文件(如 generate.py)进行推理:

    from diffusers import DiffusionPipeline
    import torch
    
    lora_model_id = './lora-trained-xl/pytorch_lora_weights.safetensors'
    base_model_id = "./stable-diffusion-xl-base-1.0"
    
    pipe = DiffusionPipeline.from_pretrained(base_model_id, torch_dtype=torch.float16)
    pipe = pipe.to("cuda")
    pipe.load_lora_weights(lora_model_id)
    
    prompt_list = ["youhu", "ni xiao zi", "a photo of youhu"]
    
    for i, p in enumerate(prompt_list):
        image = pipe(p, num_inference_steps=50).images[0]
        image.save(f"output_{i}.png")
    

    代码说明:

    • 导入 DiffusionPipeline 和 torch。
    • 加载基础模型和 LoRA 权重。
    • 设置推理步骤为 50。
    • 遍历提示词列表生成图片并保存。

    结果与分析

    训练完成后生成的图像效果取决于多种因素。若效果不理想,常见原因包括:

    1. 训练集不足:样本数量过少。
    2. 图片差异较大:风格或主体不一致。
    3. 分辨率过低:影响细节生成能力。
    4. Prompt 差异:训练过程与验证过程的提示词不一致。
    5. VAE 选择:未使用优化的 VAE 模型可能导致色彩或细节偏差。

    建议参考高质量案例(如使用多张高清柯基图片训练),优化数据集质量和超参数配置,以获得更好的生成效果。

    目录

    1. 环境配置
    2. 数据集准备
    3. 训练脚本配置
    4. 模型缓存处理
    5. 执行训练
    6. 模型推理生成
    7. 结果与分析
    • 💰 8折买阿里云服务器限时8折了解详情
    • Magick API 一键接入全球大模型注册送1000万token查看
    • 🤖 一键搭建Deepseek满血版了解详情
    • 一键打造专属AI 智能体了解详情
    极客日志微信公众号二维码

    微信扫一扫,关注极客日志

    微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

    更多推荐文章

    查看全部
    • 开源纯粹主义与现实困境:当每一颗螺丝钉都要自由
    • Java 环境搭建与首个 Hello World 实战指南
    • web应用集成AI翻译:前端+后端完整调用示例代码分享
    • 前端开发环境配置指南:nvm、Node.js 与 npm 安装
    • OpenClaw 深度解析:AI 智能体平台的架构演进与安全挑战
    • AI 自动生成一线与二线产区标准图
    • OpenClaw 接入企业微信:API 模式与自建应用配置指南
    • C# 技术栈下 WebAPI 数据协议实战:RESTful 与 GraphQL 对比
    • Spring Cloud Gateway 微服务统一入口实战
    • C++ 虚函数与纯虚函数:深入理解多态机制
    • 金仓数据库与 InfluxDB 性能及 SQL 兼容性对比分析
    • ROS 2 DDS 中间件通信优化与 QoS 策略详解
    • 数据结构(清华大学)严蔚敏版教材
    • LLM 多智能体 AutoGen 教程 5:函数调用之避免参数捏造
    • 从零搭建可落地 AI Agent:智能体开发全流程
    • Mac 开发者指南:从零搭建 VSCode + Git + 阿里云效环境
    • Pandas 类型检查函数与 Index 类用法详解
    • Java 环境搭建与首个 Hello World 实战指南
    • Python 属性描述符:从原理到 ORM 实践详解
    • llama.cpp 实战指南:在普通 CPU 上运行大模型

    相关免费在线工具

    • 加密/解密文本

      使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

    • RSA密钥对生成器

      生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

    • Mermaid 预览与可视化编辑

      基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

    • 随机西班牙地址生成器

      随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

    • Gemini 图片去水印

      基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

    • curl 转代码

      解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online