Stable Diffusion — AI 图像生成终极指南

2026 版 Stable Diffusion 模型全指南:安装、微调、生产部署。用 LoRA、ControlNet、进阶工作流程构建自定义 AI 图像生成器。

  • 更新于 2026-07-17

快速查看 #

Stable Diffusion 是 2026 年最广泛部署的开源图像生成框架,powering 创意工具至企业设计管道。本综合指南涵盖模型选择、LoRA/ControlNet 微调、性能优化与生产规模部署。

什么是 Stable Diffusion? #

Stable Diffusion 是一种潜 diffuse 模型,从文本描述生成高品质图像。不同于 Midjourney 或 DALL-E 等专有服务,Stable Diffusion 在您硬件上完全运行 — 实现生成控制、隐私与定制化。

核心功能 #

  • 开源:在 CreativeML Open RAIL-M 许可证下免费商业使用
  • 可定制模型:数千个社区训练的 checkpoint 可在 Hugging Face 下载
  • LoRA 微调:训练轻量适配器针对特定风格,无需全模型再训练
  • ControlNet:利用姿态、边缘、深度图等进行精确空间控制
  • Inpainting & Outpainting:编辑特定区域或扩展图像边界
  • 多 GPU 支持:跨多 GPU 扩展批量生成规模
  • API 就绪:轻松集成至 Web 应用与移动应用

diffuse 模型工作原理 #

diffuse 模型通过两阶段过程生成图像:

  1. 前向过程:逐步向图像添加噪声直至成为纯随机噪声
  2. 逆向过程:神经网络学习逐步移除噪声,从随机性重构原始图像

Stable Diffusion 的关键创新在于执行此过程于"潜空间"(压缩表示)而非像素空间,减少约 1000 倍计算需求。

安装指南 #

方案 1:自动化安装脚本(推荐) #

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
cd stable-diffusion-webui
./webui.sh

方案 2:Docker 部署 #

FROM nvidia/cuda:12.2-runtime-ubuntu22.04

RUN apt-get update && apt-get install -y \
    python3 python3-pip git wget \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app
COPY . .

RUN pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
RUN pip3 install -r requirements.txt

CMD ["python3", "webui.py", "--api"]

方案 3:Python 库安装 #

面向程序化访问无界面:

pip install diffusers transformers accelerate safetensors
from diffusers import StableDiffusionPipeline
import torch

# 加载模型
pipe = StableDiffusionPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    torch_dtype=torch.float16,
    variant="fp16"
)
pipe = pipe.to("cuda")

# 生成图像
image = pipe(
    "a photo of a cat wearing sunglasses",
    num_inference_steps=30,
    guidance_scale=7.5
).images[0]

image.save("output.png")

模型选择指南 #

模型分辨率参数最佳用途下载大小
SD 1.5512×512860M速度、兼容2 GB
SDXL Base1024×10243.5B质量、通用6.9 GB
SDXL Turbo512×5123.5B实时生成6.9 GB
SDXL Refiner1024×10243.5B图像增强6.9 GB
SD 3 Medium1024×10242.0B文本渲染6.4 GB
SD 3 Large1024×10248.0B最高质量16 GB

推荐社区模型 #

  • DreamShaper(SD 1.5):照片写实与艺术生成
  • RealVisXL(SDXL):顶级照片写实
  • DreamLike-Photo(SDXL):平衡写实与艺术风格
  • OpenFlux(SDXL):高保真建筑与产品摄影

高级技术 #

LoRA 微调 #

在自定义数据集上训练 Low-Rank Adaptation 模型:

from diffusers import StableDiffusionXLPipeline
import torch

# 加载基座模型
base_model = "stabilityai/stable-diffusion-xl-base-1.0"
pipe = StableDiffusionXLPipeline.from_pretrained(base_model, torch_dtype=torch.float16)
pipe = pipe.to("cuda")

# 加载训练好的 LoRA 适配器
lora_path = "./my-lora/checkpoint.safetensors"
pipe.load_lora_weights(lora_path, weight_name="pytorch_lora_weights.safetensors")

# 使用 LoRA 生成
image = pipe(
    prompt="a photo of my product in studio lighting",
    negative_prompt="blurry, low quality, distorted",
    num_inference_steps=25,
    guidance_scale=7.0
).images[0]

image.save("lora_output.png")

训练自己的 LoRA:

pip install accelerate diffusers transformers datasets

# 准备训练数据目录
mkdir -p ./train_data
# 将 15-30 张你的主题图片放入 train_data/

# 运行训练
accelerate launch train_dreambooth.py \
    --pretrained_model_name_or_path="stabilityai/stable-diffusion-xl-base-1.0" \
    --instance_data_dir="./train_data" \
    --instance_prompt="a photo of my product" \
    --output_dir="./my-lora" \
    --resolution=1024 \
    --train_batch_size=1 \
    --gradient_accumulation_steps=4 \
    --learning_rate=1e-6 \
    --lr_scheduler="constant" \
    --lr_warmup_steps=0 \
    --max_train_steps=1000

ControlNet 精确构图 #

使用 ControlNet 进行空间引导:

from diffusers import ControlNetModel, StableDiffusionControlNetPipeline
import torch
from PIL import Image

# 加载 ControlNet 模型
controlnet = ControlNetModel.from_pretrained(
    "lllyasviel/control_v11p_sd15_canny",
    torch_dtype=torch.float16
)

pipe = StableDiffusionControlNetPipeline.from_pretrained(
    "runwayml/stable-diffusion-v1-5",
    controlnet=controlnet,
    torch_dtype=torch.float16
)
pipe = pipe.to("cuda")

# 准备控制图像
control_image = Image.open("pose_reference.jpg").resize((512, 512))

# 使用姿态控制生成
image = pipe(
    prompt="a person standing confidently in a business suit",
    control_image=control_image,
    num_inference_steps=30,
    guidance_scale=7.5
).images[0]

IP-Adapter 风格迁移 #

从参考图像传递风格:

from diffusers import StableDiffusionIPAdapterPipeline
import torch

pipe = StableDiffusionIPAdapterPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    ip_adapter="h94/IP-Adapter",
    torch_dtype=torch.float16
)
pipe = pipe.to("cuda")

# 使用参考图像风格
reference = Image.open("art_style_reference.jpg")

image = pipe(
    prompt="a landscape painting in this style",
    image=reference,
    num_inference_steps=25
).images[0]

生产部署 #

Flask API 服务器 #

from flask import Flask, request, jsonify
from diffusers import StableDiffusionPipeline
import torch
import io
from PIL import Image
import base64

app = Flask(__name__)

pipe = StableDiffusionPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    torch_dtype=torch.float16
)
pipe = pipe.to("cuda")

@app.route("/generate", methods=["POST"])
def generate():
    data = request.json
    prompt = data.get("prompt", "")
    negative_prompt = data.get("negative_prompt", "")
    steps = data.get("steps", 30)
    guidance = data.get("guidance", 7.5)
    
    image = pipe(
        prompt=prompt,
        negative_prompt=negative_prompt,
        num_inference_steps=steps,
        guidance_scale=guidance
    ).images[0]
    
    # 转换为 base64 JSON 响应
    buffered = io.BytesIO()
    image.save(buffered, format="PNG")
    img_str = base64.b64encode(buffered.getvalue()).decode()
    
    return jsonify({
        "image": f"data:image/png;base64,{img_str}",
        "seed": None
    })

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)

xFormers 高性能推理 #

pip install xformers
from diffusers import StableDiffusionPipeline
import torch

pipe = StableDiffusionPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    torch_dtype=torch.float16,
    use_safetensors=True
)
pipe.enable_xformers_memory_efficient_attention()  # 2-3 倍加速
pipe.to("cuda")

# 更快生成
image = pipe("a cat wearing sunglasses", num_inference_steps=20).images[0]

TensorRT 优化 #

针对 NVIDIA GPU 实现最大吞吐:

from diffusers import StableDiffusionXLPipeline
from optimum.intel import IPEXQuantizedModelForCausalLM

# 导出模型至 ONNX
pipe.export_to_onnx(
    "./model.onnx",
    fp16=True,
    device="cuda"
)

# 转换为 TensorRT 引擎
from optimum.onnxruntime import ORTModelForDiffusion
ort_model = ORTModelForDiffusion.from_pretrained("./model.onnx")

性能对比 #

配置步数每图像耗时显存使用质量
SD 1.5 + CPU5045sN/A良好
SD 1.5 + RTX 3080502s6 GB良好
SDXL + RTX 3080305s8 GB优秀
SDXL + TensorRT301.5s6 GB优秀
SDXL + 4x A100300.3s/图24 GB/卡优秀

进阶工作流程 #

图像到图像转换 #

用文本提示转换现有图像:

from diffusers import StableDiffusionImg2ImgPipeline
import torch
from PIL import Image

pipe = StableDiffusionImg2ImgPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-refiner-1.0",
    torch_dtype=torch.float16
)
pipe = pipe.to("cuda")

# 加载源图像
source = Image.open("photo.jpg").convert("RGB")

# 转换生成
result = pipe(
    prompt="convert to oil painting style",
    image=source,
    strength=0.75,
    num_inference_steps=30
).images[0]

result.save("transformed.jpg")

潜空间升频 #

先低分辨率生成再升频:

from diffusers import StableDiffusionUpscalePipeline

upscale_pipeline = StableDiffusionUpscalePipeline.from_pretrained(
    "stabilityai/stable-diffusion-x4-upscaler",
    torch_dtype=torch.float16
)
upscale_pipeline = upscale_pipeline.to("cuda")

# 升频低分辨图像
low_res = Image.open("lowres.png")
upscaled = upscale_pipeline(
    prompt="high quality, detailed, 4k",
    image=low_res
).images[0]

upscaled.save("upscaled.png")

批量生成与网格布局 #

from diffusers import AutoPipelineForText2Image
import torch
from PIL import Image

pipeline = AutoPipelineForText2Image.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    torch_dtype=torch.float16
)
pipeline = pipeline.to("cuda")

prompts = [
    "a sunset over mountains",
    "a city skyline at night",
    "an underwater coral reef",
    "a forest in autumn"
]

images = []
for prompt in prompts:
    img = pipeline(prompt, num_inference_steps=25).images[0]
    images.append(img)

# 创建网格
grid_size = int(len(images) ** 0.5)
width, height = images[0].size
grid = Image.new("RGB", (width * grid_size, height * ((len(images) + grid_size - 1) // grid_size)))

for i, img in enumerate(images):
    row = i // grid_size
    col = i % grid_size
    grid.paste(img, (col * width, row * height))

grid.save("generation_grid.png")

负面提示工程 #

提升输出质量的负面提示技巧:

# 通用质量提升器
generic_negative = """
low quality, blurry, noisy, jpeg artifacts, 
poorly drawn, deformed, ugly, duplicate, 
mutilated, extra fingers, mutated hands, 
poorly drawn hands, poorly drawn face, mutation
"""

# 摄影专用负面
photography_negative = """
cartoon, anime, illustration, painting, 
drawing, sketch, 3d render, plastic
"""

# 产品摄影
product_negative = """
background clutter, text, watermark, logo, 
person, people, animal, insect, car, vehicle
"""

image = pipe(
    prompt="professional product shot of wireless headphones",
    negative_prompt=product_negative,
    num_inference_steps=30,
    guidance_scale=7.5
).images[0]

与替代方案对比 #

功能Stable DiffusionMidjourneyDALL-E 3Imagen 3
开源
自托管
免费版无限$10/月有限GCP 信用
自定义训练
ControlNet
Inpainting
API 访问完全控制仅 DiscordOpenAI APIVertex AI
隐私全面控制仅云端仅云端仅云端

常见问题 #

Q1:我需要什么 GPU 才能运行 Stable Diffusion? #

最小需求:4GB 显存 NVIDIA GPU(RTX 3050 以上)。推荐:8GB+ 显存(RTX 3060 12GB 性价比极佳)。SDXL 至少 8GB,12GB 推荐。AMD GPU 可用但需 ROCm 设置。

Q2:能否无 GPU 运行 Stable Diffusion? #

可以,但图像生成速度显著慢。现代 CPU 预计每张图像 30-60 秒 vs GPU 2-5 秒。考虑使用 --medvram--lowvram 标志降低显存使用。

Q3:如何训练自己的自定义模型? #

使用 Kohya_ss 等工具训练自定义 checkpoint 或 LoRA。需要 15-30 张高质量主题图片。RTX 3090/4090 上训练通常 2-4 小时。

Q4:Stable Diffusion 可用于商业使用吗? #

SD 1.5 与 SDXL 在 CreativeML Open RAIL-M 许可证下允许商业使用。始终核查任何社区训练模型的具体许可证,部分可能有额外限制。

Q5:Stable Diffusion 质量如何与 Midjourney 对比? #

最近的 SDXL 与 SD3 模型在许多质量指标上匹配甚至超越 Midjourney v6,尤其在照片写实与文本渲染方面。最大优势是完全控制权 — 可在品牌视觉身份上微调,Midjourney 不允许。

Q6:SD 1.5 与 SDXL 有什么区别? #

SD 1.5 使用 512×512 分辨率与 860M 参数,更快更兼容扩展。SDXL 使用 1024×1024 分辨率与 3.5B 参数,产出更高质量但需更多显存。SDXL 也使用双文本编码器提升提示理解。

Q7:如何缩短生成时间? #

使用 xFormers 实现内存高效注意力、将模型量化至 FP16 或 INT8、启用 Torch.compile CUDA 图形,或改用 SDXL Turbo 只需 1-4 步即可生成图像。

资源 #

准备构建自己的 AI 图像生成平台?探索我们精选的生产级 Stable Diffusion 部署与自定义模型训练指南。加入社区获取最新 AI 工具的每周更新。

📦 出现在以下合集中

💬 留言讨论