SuperAPI AI 工具集

stable-diffusion-image-generation

设计与创作

查看项目

更新于 10-15 08:33

技能介绍

用途

本技能是一份使用 HuggingFace Diffusers 库配合 Stable Diffusion 模型生成图像的综合性指南。适用于以下场景:根据文本描述生成图像、图像到图像的转换(风格迁移、增强)、局部重绘(填充被遮罩区域)、外绘(将图像扩展到边界之外)、创建现有图像的变体,以及构建自定义图像生成工作流。

如果不需要本地 GPU,文档建议考虑替代方案:DALL-E 3(基于 API 生成)、Midjourney(艺术化风格输出)、Imagen(Google Cloud 集成)、Leonardo.ai(基于网页的创作流程)。

主要能力

  • 文生图(Text-to-Image):根据自然语言提示词生成图像。
  • 图生图(Image-to-Image):在文本引导下转换现有图像。
  • 局部重绘(Inpainting):用上下文感知内容填充被遮罩区域。
  • ControlNet:添加空间条件控制(边缘、姿态、深度等)。
  • LoRA 支持:高效微调与风格适配。
  • 多模型支持:SD 1.5、SDXL、SD 3.0、Flux。

使用方式

安装命令:

pip install diffusers transformers accelerate torch
pip install xformers  # Optional: memory-efficient attention

基础文生图示例:

from diffusers import DiffusionPipeline
import torch

# Load pipeline (auto-detects model type)
pipe = DiffusionPipeline.from_pretrained(
    "stable-diffusion-v1-5/stable-diffusion-v1-5",
    torch_dtype=torch.float16
)
pipe.to("cuda")

# Generate image
image = pipe(
    "A serene mountain landscape at sunset, highly detailed",
    num_inference_steps=50,
    guidance_scale=7.5
).images[0]

image.save("output.png")

使用 SDXL(更高质量):

from diffusers import AutoPipelineForText2Image
import torch

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

# Enable memory optimization
pipe.enable_model_cpu_offload()

image = pipe(
    prompt="A futuristic city with flying cars, cinematic lighting",
    height=1024,
    width=1024,
    num_inference_steps=30
).images[0]

架构与核心概念

Diffusers 围绕三大核心组件构建:Pipeline(编排)、Model(神经网络,含 UNet/Transformer 噪声预测、VAE 潜在编码解码、CLIP/T5 文本编码器)、Scheduler(去噪算法)。推理流程为:文本提示词经文本编码器生成文本嵌入,随机噪声在调度器控制下进入去噪循环,预测噪声后经 VAE 解码器输出最终图像。

常用 Pipeline 包括:StableDiffusionPipeline(SD 1.x/2.x 文生图)、StableDiffusionXLPipeline(SDXL 文生图)、StableDiffusion3Pipeline(SD 3.0 文生图)、FluxPipeline(Flux 文生图)、StableDiffusionImg2ImgPipeline(图生图)、StableDiffusionInpaintPipeline(局部重绘)。

调度器控制去噪过程,文档列出 EulerDiscreteScheduler(20-50 步,默认选择)、EulerAncestralDiscreteScheduler(20-50 步,更多变化)、DPMSolverMultistepScheduler(15-25 步,快速高质量)、DDIMScheduler(50-100 步,确定性)、LCMScheduler(4-8 步,非常快)、UniPCMultistepScheduler(15-25 步,快速收敛)。可通过 from_config 替换调度器以加快生成。

生成参数

关键参数包括:prompt(必填,期望图像的文本描述)、negative_prompt(要避免的内容)、num_inference_steps(默认 50,去噪步数,越多质量越好)、guidance_scale(默认 7.5,提示词遵循度,通常 7-12)、height/width(输出尺寸,8 的倍数)、generator(用于可复现的 Torch 生成器)、num_images_per_prompt(默认 1,批量大小)。可通过 torch.Generator 设置 manual_seed 实现可复现生成。

进阶功能

图生图通过 strength 参数(0-1)控制转换程度。局部重绘需提供图像与遮罩(白色为待重绘区域)。ControlNet 支持 canny(边缘图,保留结构)、openpose(姿态骨架)、depth(深度图)、normal(法线图)、mlsd(线段,建筑线条)、scribble(粗略草图)等条件类型。LoRA 适配器可加载微调风格权重,支持调整强度、多 LoRA 组合(set_adapters 设置各自权重)以及卸载。

显存优化方法包括:enable_model_cpu_offload、enable_sequential_cpu_offload、enable_attention_slicing、enable_xformers_memory_efficient_attention、enable_vae_slicing、enable_vae_tiling。模型精度可选 FP16(GPU 推荐)或 BF16(精度更好,需 Ampere+ GPU),也可单独加载自定义 VAE 等组件。批量生成支持多提示词列表或单提示词多图。

常见工作流与问题

文档给出两个工作流:高质量生成(SDXL + DPMSolverMultistepScheduler + 质量参数)和快速原型(SDXL + LCM LoRA + LCMScheduler,4 步约 1 秒生成)。常见问题处理:CUDA 显存不足时启用显存优化或降低精度;出现黑图/噪声图时检查 VAE 配置、按需绕过安全检查器、确保 dtype 一致;生成过慢时换用更快调度器或减少步数。

适用场景与限制

适用于需要在本地 GPU 环境构建自定义图像生成工作流的开发者,覆盖从快速原型到高质量出图的多种需求。限制方面:需要本地 GPU 环境(文档未提供无 GPU 的替代运行方式);部分优化(如 BF16)对 GPU 架构有要求;文档未提供具体的收费、价格或性能基准数据。

参考资源

文档:https://huggingface.co/docs/diffusers 仓库:https://github.com/huggingface/diffusers 模型库:https://huggingface.co/models?library=diffusers Discord:https://discord.gg/diffusers