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
- OriginalWhat's new in Diffusers? 🎨