Diffusers 0.3 版本新增图像到图像、文本反转、修复、GPU 优化、Mac MPS、ONNX 支持和全新文档

TL;DR

Diffusers 0.3 带来了图像到图像生成、文本反转、实验性修复、针对普通 GPU 的内存高效推理、原生 Mac M1/M2 支持、ONNX 导出流水线以及一次全面的文档重构,大幅降低了使用 Stable Diffusion 的门槛,并激发了社区工具的热潮。


图像到图像流水线

全新的 StableDiffusionImg2ImgPipeline 允许用户提供初始图像和文本提示,以生成经过变换的图像。API 与文本到图像流水线保持一致,新增 init_image 参数以及控制原始图像保留程度的 strength 参数。示例用法:

from diffusers import StableDiffusionImg2ImgPipeline
import torch

pipe = StableDiffusionImg2ImgPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4",
    revision="fp16",
    torch_dtype=torch.float16,
    use_auth_token=True,
)

init_image = preprocess(your_image)
prompt = "A fantasy landscape, trending on artstation"
images = pipe(
    prompt=prompt,
    init_image=init_image,
    strength=0.75,
    guidance_scale=7.5,
    generator=torch.Generator().manual_seed(42),
)["sample"]

同时提供了一个可直接运行的 Space 演示,方便快速实验。


文本反转

文本反转(Textual Inversion)使得仅凭 3‑5 张个人图片即可创建新概念。用户训练一个 token 嵌入,随后可在提示中调用,生成的概念还能通过 sd-concepts-library hub 进行分享。工作流包括:

  • Navigator Colab – 浏览超过 150 个社区生成的概念。
  • Training Colab – 在自定义图像集上微调新 token。
  • Inference Colab – 使用已学习的 token 生成图像。

发布后数日内,社区贡献了超过 200 个概念。


实验性修复流水线

StableDiffusionInpaintPipeline 接受图像、二值掩码和提示,以在保留周围上下文的同时替换掩码区域。示例代码:

from diffusers import StableDiffusionInpaintPipeline

pipe = StableDiffusionInpaintPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4",
    revision="fp16",
    torch_dtype=torch.float16,
    use_auth_token=True,
).to("cuda")

images = pipe(
    prompt=["a cat sitting on a bench"] * 3,
    init_image=init_image,
    mask_image=mask_image,
    strength=0.75,
    guidance_scale=7.5,
).images

该功能标记为实验性,后续仍在持续改进中。


针对小显存 GPU 的优化

0.3 版显著降低了 VRAM 消耗;Stable Diffusion 现在仅需约 3.2 GB 显存,且速度仅下降约 10 %。关键技巧是 attention slicing,可通过以下方式启用:

from diffusers import StableDiffusionPipeline

pipe = StableDiffusionPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4",
    revision="fp16",
    torch_dtype=torch.float16,
    use_auth_token=True,
)
pipe = pipe.to("cuda")
pipe.enable_attention_slicing()

此优化让消费级 GPU 也能更容易使用扩散模型。


在 macOS (M1/M2) 上通过 PyTorch MPS 使用 Diffusers

通过 PyTorch 的 mps 设备,新增了对 Apple Silicon 的原生支持。用户只需极少代码改动,即可在 M1/M2 Mac 上运行 Stable Diffusion:

from diffusers import StableDiffusionPipeline

pipe = StableDiffusionPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4",
    use_auth_token=True,
)
pipe = pipe.to("mps")

prompt = "a photo of an astronaut riding a horse on mars"
image = pipe(prompt).images[0]

官方文档提供了性能基准和配置指南。


实验性 ONNX 导出器和流水线

基于 ONNX 的流水线 (StableDiffusionOnnxPipeline) 让模型能够在任何兼容 ONNX 的硬件上推理,包括 CPU。使用示例:

from diffusers import StableDiffusionOnnxPipeline

pipe = StableDiffusionOnnxPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4",
    revision="onnx",
    provider="CPUExecutionProvider",
    use_auth_token=True,
)

prompt = "a photo of an astronaut riding a horse on mars"
image = pipe(prompt).images[0]

同时提供了一个转换脚本 (convert_stable_diffusion_checkpoint_to_onnx.py) 用于自定义 checkpoint 的导出。


新文档发布 (v0.3.0)

一次专门的文档冲刺产出了首个完整版本的文档站点,涵盖:

  • 优化技术 – FP16、attention slicing 与 MPS 指南。
  • 训练概览 – 微调扩散模型的高层步骤。
  • 贡献指南 – 如何提交补丁和扩展。
  • API 参考 – 调度器和流水线的详细页面。

文档托管在 https://huggingface.co/docs/diffusers/v0.3.0/en/,欢迎社区贡献。


社区亮点

本次发布引发了一波基于 Diffusers 的社区项目:

  • Stable Diffusion Videos – 用于潜空间插值和提示变形的工具,提供 pip 包和 Colab notebook。
  • Diffusers Interpret – 可视化扩散步骤和 token 级别归因的可解释性套件。
  • Japanese Stable Diffusion – 在 1 亿张日文标注图片上训练的模型,捕捉文化细微差别。
  • Waifu Diffusion – 高质量动漫风格生成的微调 checkpoint。
  • Cross‑Attention Control – 通过编辑注意力图来修改提示影响、替换对象或注入风格的仓库。
  • Reusable Seeds – 演示如何复用一次生成的种子来引导另一轮生成,实现受控变化的 notebook。

参与方式

Diffusers 仓库保持开源,鼓励用户给 GitHub 项目加星、加入 Hugging Face Discord,并提交 issue 或 pull request。持续的社区贡献是库快速演进的关键。

Sources