什么是Diffusers? :生成图像的先进扩散模型

嘿,大家好!让我向你介绍一项令人兴奋的技术,它可以生成令人叹为观止的图像、音频甚至分子的3D结构。无论你是想要进行简单的推理还是训练自己的扩散模型,? Diffusers都是一个模块化的工具箱,支持这两种方式。我们的重点是可用性高于性能简单优于易用可定制性高于抽象化

什么是? Diffusers?

? Diffusers库是一个开创性的工具,用于生成各种类型的数据,包括图像、音频和分子的3D结构。它基于最先进的扩散模型,可以在推理时轻松生成令人惊叹的内容。无论你是想要创建图像、音频还是进行其他生成任务,? Diffusers都提供了现成的解决方案。同时,如果你是研究人员或工程师,你也可以使用这个库来训练自己的扩散模型,以满足特定任务的需求。

安装

让我们首先了解如何安装? Diffusers库。

使用pip安装(PyTorch)

如果你使用PyTorch作为深度学习框架,可以使用以下命令来安装? Diffusers:

pip install --upgrade diffusers[torch]

使用pip安装(Flax)

如果你使用Flax作为深度学习框架,可以使用以下命令来安装? Diffusers:

pip install --upgrade diffusers[flax]

支持Apple Silicon(M1/M2)

如果你使用的是Apple Silicon芯片(M1/M2),请参考在Apple Silicon上使用Stable Diffusion指南。

快速入门

使用? Diffusers生成输出非常简单。要从文本生成图像,只需使用from_pretrained方法加载任何预训练的扩散模型。以下是一个示例:

from diffusers import DiffusionPipeline
import torch

# 加载预训练的扩散模型
pipeline = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", torch_dtype=torch.float16)
pipeline.to("cuda")

# 输入文本并生成图像
output_image = pipeline("一幅毕加索风格的松鼠图像").images[0]

此外,你还可以深入研究模型和调度程序工具箱,以构建自己的扩散系统。以下是一个使用自定义模型和调度程序的示例,用于生成图像:

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)).to("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.show()

在这个示例中,我们加载了预训练的扩散模型和调度程序,并使用它们生成了一幅图像。

文档导航

如果你想深入了解? Diffusers库的各个方面,可以使用以下文档导航:

  • 教程:了解如何使用库的主要功能,包括使用模型和调度程序构建扩散系统,以及如何训练自己的扩散模型。
  • 加载:查看如何加载和配置库的

所有组件(管道、模型和调度程序),以及如何使用不同的调度程序。

  • 用于推理的管道:了解如何使用不同推理任务的管道,批量生成、控制生成的输出和随机性,以及如何贡献一个管道到库中。
  • 优化:了解如何优化扩散模型,以提高运行速度和减少内存占用。
  • 训练:探索如何使用不同的训练技巧为不同任务训练扩散模型。

贡献

我们热爱来自开源社区的贡献!如果你想为这个库做出贡献,请查看我们的贡献指南。你可以寻找你想要解决的问题,以贡献到这个库中。

最受欢迎的任务和管道

? Diffusers库支持许多不同的任务和管道。以下是一些受欢迎的任务和相关管道:

受欢迎使用? Diffusers的库

许多开源项目正在使用? Diffusers库。以下是一些使用它的流行库和项目:

感谢大家对我们的支持和使用!如果你有任何问题或需要帮助,请随时在我们的公开Discord频道中与我们联系

致谢

这个库的实现受到了许多不同作者的前期工作的影响,没有他们的出色研究和实现,这个API就不可能如今如此精细。我们特别感谢以下实现,它们在我们的开发过程中帮助了我们:

  • @CompVis的潜扩散模型库,可在这里找到。
  • @hojonathanho的原始DDPM实现,可在这里找到,以及由@pesser翻译成PyTorch的非常有用的实现,可在这里找到。
  • @ermongroup的DDIM实现,可在这里找到。
  • @yang-song的Score-VE和Score-VP实现,可在这里找到。

引用

如果你在研究中使用了? Diffusers库,请引用我们的工作:

@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 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库的简要介绍和使用指南。希望这篇文章对你有所帮助,让你更好地了解这个强大的扩散模型库!

联系方式

如果你有任何问题或需要进一步的帮助,请随时联系我。

推荐阅读

希望你能享受使用? Diffusers库,探索扩散模型的奇妙世界!

声明:本站所有文章,如无特殊说明或标注,均为本站(王大神)原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
指数词

? Hugging Face Datasets库:一站式数据处理工具

2023-9-19 22:00:13

指数词

教程:加速你的深度学习训练 - 使用? Accelerate

2023-9-19 22:06:36

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索