自动管道
Diffusers 提供了许多用于基本任务的管道,例如生成图像、视频、音频和修复。在此基础上,还有用于适配器和功能(如上采样、超分辨率等)的专用管道。不同的管道类甚至可以使用相同的检查点,因为它们共享相同的预训练模型!如此多的不同管道,可能让人难以知道应该使用哪个管道类。
该 AutoPipeline 类旨在简化 Diffusers 中各种管道。它是一个通用的以任务为先的管道,允许您专注于一项任务(AutoPipelineForText2Image、AutoPipelineForImage2Image 和 AutoPipelineForInpainting),而无需了解具体的管道类。该 AutoPipeline 自动检测要使用的正确管道类。
例如,让我们使用 dreamlike-art/dreamlike-photoreal-2.0 检查点。
在幕后,AutoPipeline
- 从 model_index.json 文件中检测到一个
"stable-diffusion"
类。 - 根据您感兴趣的任务,它会加载 StableDiffusionPipeline、StableDiffusionImg2ImgPipeline 或 StableDiffusionInpaintPipeline。您将传递给这些特定管道的任何参数(
strength
、num_inference_steps
等)也可以传递给 AutoPipeline。
文本到图像
图像到图像
修复
from diffusers import AutoPipelineForText2Image
import torch
pipe_txt2img = AutoPipelineForText2Image.from_pretrained(
"dreamlike-art/dreamlike-photoreal-2.0", torch_dtype=torch.float16, use_safetensors=True
).to("cuda")
prompt = "cinematic photo of Godzilla eating sushi with a cat in a izakaya, 35mm photograph, film, professional, 4k, highly detailed"
generator = torch.Generator(device="cpu").manual_seed(37)
image = pipe_txt2img(prompt, generator=generator).images[0]
image
不支持的检查点
该 AutoPipeline 支持 稳定扩散、稳定扩散 XL、ControlNet、Kandinsky 2.1、Kandinsky 2.2 和 DeepFloyd IF 检查点。
如果您尝试加载不受支持的检查点,则会收到错误消息。
from diffusers import AutoPipelineForImage2Image
import torch
pipeline = AutoPipelineForImage2Image.from_pretrained(
"openai/shap-e-img2img", torch_dtype=torch.float16, use_safetensors=True
)
"ValueError: AutoPipeline can't find a pipeline linked to ShapEImg2ImgPipeline for None"