Diffusers 文档

Stable Diffusion 流水线

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

Stable Diffusion 流水线

LoRA

Stable Diffusion 是由 CompVisStability AILAION 的研究人员和工程师创建的文本到图像潜在扩散模型。潜在扩散在较低维度的潜在空间上应用扩散过程,以减少内存和计算复杂度。这种特定类型的扩散模型由 Robin Rombach、Andreas Blattmann、Dominik Lorenz、Patrick Esser 和 Björn Ommer 在 《高分辨率图像合成与潜在扩散模型》 中提出。

Stable Diffusion 在 LAION-5B 数据集的子集上使用 512x512 图像进行训练。该模型使用冻结的 CLIP ViT-L/14 文本编码器,根据文本提示调节模型。凭借其 8.6 亿参数的 UNet 和 1.23 亿参数的文本编码器,该模型相对轻量级,可以在消费级 GPU 上运行。

有关 Stable Diffusion 如何工作以及它与基础潜在扩散模型的区别的更多详细信息,请参阅 Stability AI 的公告以及我们自己的博客文章,了解更多技术细节。

您可以在 CompVis/stable-diffusion 找到 Stable Diffusion v1.0 的原始代码库,在 Stability-AI/stablediffusion 找到 Stable Diffusion v2.0 的代码库,以及它们用于各种任务的原始脚本。其他不同 Stable Diffusion 版本和任务的官方检查点可以在 CompVisRunwayStability AI Hub 组织上找到。探索这些组织,为您的用例找到最佳检查点!

下表总结了可用的 Stable Diffusion 流水线、它们支持的任务和交互式演示

流水线 支持的任务 🤗 Space
StableDiffusion 文本到图像
StableDiffusionImg2Img 图像到图像
StableDiffusionInpaint 图像修复
StableDiffusionDepth2Img 深度到图像
StableDiffusionImageVariation 图像变异
StableDiffusionPipelineSafe 过滤文本到图像
StableDiffusion2 文本到图像、图像修复、深度到图像、超分辨率
StableDiffusionXL 文本到图像、图像到图像
StableDiffusionLatentUpscale 超分辨率
StableDiffusionUpscale 超分辨率
StableDiffusionLDM3D 文本到 RGB、文本到深度、文本到全景
StableDiffusionUpscaleLDM3D ldm3d 超分辨率

提示

为了帮助您充分利用 Stable Diffusion 流水线,这里有一些提高性能和可用性的提示。这些提示适用于所有 Stable Diffusion 流水线。

探索速度和质量之间的权衡

StableDiffusionPipeline 默认使用 PNDMScheduler,但 🤗 Diffusers 提供了许多其他兼容的调度器(其中一些速度更快或输出质量更好)。例如,如果您想使用 EulerDiscreteScheduler 而不是默认的调度器:

from diffusers import StableDiffusionPipeline, EulerDiscreteScheduler

pipeline = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4")
pipeline.scheduler = EulerDiscreteScheduler.from_config(pipeline.scheduler.config)

# or
euler_scheduler = EulerDiscreteScheduler.from_pretrained("CompVis/stable-diffusion-v1-4", subfolder="scheduler")
pipeline = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", scheduler=euler_scheduler)

重用流水线组件以节省内存

为了节省内存并在多个流水线中重用相同的组件,请使用 .components 方法,以避免多次将权重加载到 RAM 中。

from diffusers import (
    StableDiffusionPipeline,
    StableDiffusionImg2ImgPipeline,
    StableDiffusionInpaintPipeline,
)

text2img = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4")
img2img = StableDiffusionImg2ImgPipeline(**text2img.components)
inpaint = StableDiffusionInpaintPipeline(**text2img.components)

# now you can use text2img(...), img2img(...), inpaint(...) just like the call methods of each respective pipeline

使用 Gradio 创建 Web 演示

Stable Diffusion 流水线自动支持 Gradio,这是一个让在 Web 上创建美观且用户友好的机器学习应用程序变得轻而易举的库。首先,请确保您已安装 Gradio:

pip install -U gradio

然后,围绕任何基于 Stable Diffusion 的流水线创建 Web 演示。例如,您可以使用 Gradio 的 Interface.from_pipeline 函数,只需一行代码即可创建图像生成流水线:

from diffusers import StableDiffusionPipeline
import gradio as gr

pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4")

gr.Interface.from_pipeline(pipe).launch()

这将在您的浏览器中打开一个直观的拖放界面:

同样,您可以使用以下代码为图像到图像流水线创建演示:

from diffusers import StableDiffusionImg2ImgPipeline
import gradio as gr


pipe = StableDiffusionImg2ImgPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")

gr.Interface.from_pipeline(pipe).launch()

默认情况下,Web 演示在本地服务器上运行。如果您想与他人共享,可以通过在 `launch()` 中设置 `share=True` 来生成一个临时的公共链接。或者,您可以将您的演示托管在 Hugging Face Spaceshttps://huggingface.co/spaces 上,以获得永久链接。

< > 在 GitHub 上更新