Diffusers用于图像、视频和音频生成先进的扩散模型


🤗 Diffusers 是一个首选库,其中包含先进的预训练扩散模型,可用于生成图像、音频,甚至分子的 3D 结构。无论您是在寻找简单的推理解决方案,还是训练自己的扩散模型,🤗 Diffusers 都是一个模块化工具箱,可同时支持这两种需求。我们的库在设计时注重可用性而非性能简单而非易用 以及可定制性而非抽象性

🤗 Diffusers 提供三个核心组件:

  • 先进的 diffusion pipelines,只需几行代码即可运行推理。
  • 可互换的噪声 schedulers,适用于不同的扩散速度和输出质量。
  • 预训练 models,可用作构建模块并与调度器结合使用,以创建您自己的端到端扩散系统。

安装

我们建议使用 PyPI 或 Conda 在虚拟环境中安装 🤗 Diffusers。有关安装 PyTorch 的更多详细信息,请参阅其官方文档。

PyTorch

使用 pip(官方软件包):

bash 复制代码
pip install --upgrade diffusers[torch]

使用 conda(社区维护):

sh 复制代码
conda install -c conda-forge diffusers

Apple Silicon (M1/M2) 支持

请参阅如何在 Apple Silicon 中使用稳定扩散 指南。

快速入门

使用 🤗 Diffusers 生成输出非常简单。要从文本生成图像,请使用“from_pretrained”方法加载任何预训练的扩散模型(浏览Hub获取 30,000 多个检查点):

python 复制代码
from diffusers import DiffusionPipeline
import torch

pipeline = DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5", torch_dtype=torch.float16)
pipeline.to("cuda")
pipeline("An image of a squirrel in Picasso style").images[0]

您还可以深入研究模型和调度程序工具箱来构建自己的扩散系统:

python 复制代码
from diffusers import DDPMScheduler, UNet2DModel
from PIL import Image
import torch

scheduler = DDPMScheduler.from_pretrained("google/ddpm-cat-256")
model = UNet2DModel.from_pretrained("google/ddpm-cat-256").to("cuda")
scheduler.set_timesteps(50)

sample_size = model.config.sample_size
noise = torch.randn((1, 3, sample_size, sample_size), device="cuda")
input = noise

for t in scheduler.timesteps:
    with torch.no_grad():
        noisy_residual = model(input, t).sample
        prev_noisy_sample = scheduler.step(noisy_residual, t, input).prev_sample
        input = prev_noisy_sample

image = (input / 2 + 0.5).clamp(0, 1)
image = image.cpu().permute(0, 2, 3, 1).numpy()[0]
image = Image.fromarray((image * 255).round().astype("uint8"))
image

立即查看 快速入门,开启您的扩散之旅!

如何浏览文档

文档 我能学到什么?
教程 一个基础速成课程,帮助您学习如何使用该库最重要的功能,例如使用模型和调度器构建您自己的扩散系统,以及如何训练您自己的扩散模型。
加载中 有关如何加载和配置库的所有组件(管道、模型和调度器)以及如何使用不同调度器的指南。
推理流程 有关如何使用流程执行不同推理任务、批量生成、控制生成的输出和随机性以及如何向库贡献流程的指南。
优化 有关如何优化扩散模型以加快运行速度并减少内存消耗的指南。
训练 有关如何使用不同的训练技术针对不同任务训练扩散模型的指南。

热门任务和流程

任务 流程 🤗 Hub
无条件图像生成 DDPM google/ddpm-ema-church-256
文本转图像 Stable Diffusion 文本转图片 stable-diffusion-v1-5/stable-diffusion-v1-5
文本转图片 unCLIP kakaobrain/karlo-v1-alpha
文本转图片 DeepFloyd IF DeepFloyd/IF-I-XL-v1.0
文本转图片 Kandinsky kandinsky-community/kandinsky-2-2-decoder
文本引导的图像到图像 ControlNet lllyasviel/sd-controlnet-canny
文本引导的图像到图像 InstructPix2Pix timbrooks/instruct-pix2pix
文本引导的图像到图像 稳定扩散图像到图像 stable-diffusion-v1-5/stable-diffusion-v1-5
文本引导的图像修复 稳定扩散图像修复 runwayml/stable-diffusion-inpainting
图像变体 稳定扩散图像变体 lambdalabs/sd-image-variations-diffusers
超分辨率 稳定扩散放大 stabilityai/stable-diffusion-x4-upscaler
超分辨率 稳定扩散潜伏放大 stabilityai/sd-x2-latent-upscaler

使用 🧨 扩散器的热门库

感谢您使用我们的代码库 ❤️。

致谢

该库整合了多位不同作者的先前成果,如果没有他们出色的研究和实践,这个库是不可能实现的。我们特别要感谢以下实现,它们对我们的开发提供了帮助,如果没有它们,API 不可能像今天这样完善:

  • @CompVis 的潜在扩散模型库,可从 此处 获取
  • @hojonathanho 的原始 DDPM 实现,可从 此处 获取,以及 @pesser 提供的极其有用的 PyTorch 翻译,可从 此处 获取
  • @ermongroup 的 DDIM 实现,可从 此处 获取
  • @yang-song 的 Score-VE 和 Score-VP 实现,可从 此处 获取

我们还要感谢 @heejkoo 提供的非常有用的概述关于扩散模型的论文、代码和资源,可在此处获取(https://github.com/heejkoo/Awesome-Diffusion-Models),也可在 @crowsonkb 和 @rromb 上获取有用的讨论和见解。

引用

bibtex 复制代码
@misc{von-platen-etal-2022-diffusers,
  author = {Patrick von Platen and Suraj Patil and Anton Lozhkov and Pedro Cuenca and Nathan Lambert and Kashif Rasul and Mishig Davaadorj and Dhruv Nair and Sayak Paul and William Berman and Yiyi Xu and Steven Liu and Thomas Wolf},
  title = {Diffusers: State-of-the-art diffusion models},
  year = {2022},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/huggingface/diffusers}}
}

关于项目

Diffusers 是一个首选库,其中包含先进的预训练扩散模型,可用于生成图像、音频甚至分子的 3D 结构。无论您是在寻找简单的推理解决方案,还是训练自己的扩散模型,Diffusers 都是一个模块化工具箱,可同时支持这两种需求。
Apache-2.0
Python
31,096
6402
218
2022-05-31
2025-10-11

增长趋势 - stars