我的 Jupyter 笔记本中有这两个管道。
## Loading Diffusion Pipeline
from diffusers import DiffusionPipeline
import torch
##Image Generating
pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float32, use_safetensors=True, variant="fp16")
pipe.unet = torch.compile(pipe.unet, mode="reduce-overhead", fullgraph=True)
# load both base & refiner
base = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float32, variant="fp16", use_safetensors=True
)
pipe.enable_model_cpu_offload
refiner = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-refiner-1.0",
text_encoder_2=base.text_encoder_2,
vae=base.vae,
torch_dtype=torch.float32,
use_safetensors=True,
variant="fp16",
)
# Define how many steps and what % of steps to be run on each experts (80/20) here
n_steps = 40
high_noise_frac = 0.8
prompt = "A man playing soccer in a stadium"
# run both experts
image = base(
prompt=prompt,
num_inference_steps=n_steps,
denoising_end=high_noise_frac,
output_type="latent",
).images
image = refiner(
prompt=prompt,
num_inference_steps=n_steps,
denoising_start=high_noise_frac,
image=image,
).images[0].show()
##Image Captioning
from transformers import pipeline
image_to_text = pipeline("image-to-text", model="nlpconnect/vit-gpt2-image-captioning")
image_to_text(image)
第一个是创建具有稳定扩散 xl-base 的图像,而另一个我想获得所创建图像的图像标题。 如何将保存在 RAM 中的生成图像分配给图像字幕管道?
谢谢!
我尝试将“image”变量放入第二个管道,但总是收到错误。
如果要将生成的图像分配给另一个 DiffusionPipeline 实例,可以创建一个新实例并将生成的图像传递给其 images 属性。 以下是如何将生成的图像分配给另一个 DiffusionPipeline 实例的示例:
from diffusers import DiffusionPipeline
repo_id = "./my-diffusion-pipeline"
new_pipe = DiffusionPipeline.from_pretrained(repo_id, use_safetensors=True)
new_pipe.images = [image]
请注意,新的 DiffusionPipeline 实例必须具有与原始实例相同的组件(模型、调度程序和处理器)。
那么如果要将生成的图像保存到目录中,可以使用PIL Image类的save()方法。
image.save("my_image.png")
这会将生成的图像保存到当前工作目录中名为 my_image.png 的文件中。