跳转至

社区管道

译者:片刻小哥哥

项目地址:https://huggingface.apachecn.org/docs/diffusers/using-diffusers/custom_pipeline_examples

原始地址:https://huggingface.co/docs/diffusers/using-diffusers/custom_pipeline_examples

在 Colab 中打开

在 Studio Lab 中打开

有关社区管道背后的设计选择的更多背景信息,请查看 本期

社区管道使您能够发挥创造力并构建自己独特的管道以与社区共享。您可以在以下位置找到所有社区管道 diffusers/examples/community 文件夹以及有关如何使用它们的推理和培训示例。本指南展示了一些社区管道,希望它能激励您创建自己的管道(请随意使用您自己的管道打开 PR,我们将合并它!)。

要加载社区管道,请使用 自定义管道 论证中 DiffusionPipeline 指定其中一个文件 diffusers/examples/community :

pipe = DiffusionPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4", custom_pipeline="filename\_in\_the\_community\_folder", use_safetensors=True
)

如果社区管道未按预期工作,请打开 GitHub 问题并提及作者。

您可以在“如何”中了解有关社区管道的更多信息 加载社区管道 以及如何 贡献社区管道 指南。

多语言稳定传播

多语言稳定扩散管道使用预训练的 XLM-RoBERTa 识别一种语言和 mBART-large-50 模型来处理翻译。这允许您从 20 种语言的文本生成图像。

from PIL import Image
import torch
from diffusers import DiffusionPipeline
from diffusers.utils import make_image_grid
from transformers import (
    pipeline,
    MBart50TokenizerFast,
    MBartForConditionalGeneration,
)

device = "cuda" if torch.cuda.is_available() else "cpu"
device_dict = {"cuda": 0, "cpu": -1}

# add language detection pipeline
language_detection_model_ckpt = "papluca/xlm-roberta-base-language-detection"
language_detection_pipeline = pipeline("text-classification",
                                       model=language_detection_model_ckpt,
                                       device=device_dict[device])

# add model for language translation
trans_tokenizer = MBart50TokenizerFast.from_pretrained("facebook/mbart-large-50-many-to-one-mmt")
trans_model = MBartForConditionalGeneration.from_pretrained("facebook/mbart-large-50-many-to-one-mmt").to(device)

diffuser_pipeline = DiffusionPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4",
    custom_pipeline="multilingual\_stable\_diffusion",
    detection_pipeline=language_detection_pipeline,
    translation_model=trans_model,
    translation_tokenizer=trans_tokenizer,
    torch_dtype=torch.float16,
)

diffuser_pipeline.enable_attention_slicing()
diffuser_pipeline = diffuser_pipeline.to(device)

prompt = ["a photograph of an astronaut riding a horse", 
          "Una casa en la playa",
          "Ein Hund, der Orange isst",
          "Un restaurant parisien"]

images = diffuser_pipeline(prompt).images
grid = make_image_grid(images, rows=2, cols=2)
grid

魔法混合

MagicMix 是一个管道,可以混合图像和文本提示来生成保留图像结构的新图像。这 混合因子 确定提示对布局生成的影响有多大, 公里 控制内容生成过程中的步骤数,以及 最大公里 确定原始图像布局中保留多少信息。

from diffusers import DiffusionPipeline, DDIMScheduler
from diffusers.utils import load_image

pipeline = DiffusionPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4",
    custom_pipeline="magic\_mix",
    scheduler = DDIMScheduler.from_pretrained("CompVis/stable-diffusion-v1-4", subfolder="scheduler"),
).to('cuda')

img = load_image("https://user-images.githubusercontent.com/59410571/209578593-141467c7-d831-4792-8b9a-b17dc5e47816.jpg")
mix_img = pipeline(img, prompt="bed", kmin = 0.3, kmax = 0.5, mix_factor = 0.5)
mix_img

图片提示

图文提示混合


我们一直在努力

apachecn/AiLearning

【布客】中文翻译组