除了之前已经介绍的文生图之外,最主要的功能就是图生图。从直觉上来说,只需要额外多做一步工作,就是加载一张图片。如何通过图片和提示词,就交给程序来完成就好了。与上一次代码不一样的地方都粗体标出了,改动不是特别多。
# 以下代码为程序运行进行设置,使用图生图的自动管道 import os os.environ["HF_ENDPOINT"] = "https://hf-mirror.com" from diffusers import AutoPipelineForImage2Image import torch # 多了一行,程序需要能够支持加载图片 from diffusers.utils import load_image # 以下代码加载模型,但是用的是图生图的自动管道 pipe_img2img = AutoPipelineForImage2Image.from_pretrained( "dreamlike-art/dreamlike-photoreal-2.0", torch_dtype=torch.float16, use_safetensors=True ).to("cuda") # 多了一行,以下代码加载图片 init_image = load_image( "https://hf-mirror.com/datasets/huggingface/documentation-images/resolve/main/diffusers/autopipeline-text2img.png") # 以下代码加载并处理提示词 prompt = "cinematic photo of Godzilla eating burgers with a cat in a fast food restaurant, 35mm photograph, film, professional, 4k, highly detailed" generator = torch.Generator(device="cpu").manual_seed(67) # 以下代码基于原始图片,由提示词生成图片 image = pipe_img2img(prompt, image=init_image, generator=generator).images[0]
image.show()
这里是加载了一张网上的图片。
生成结果如下
通常都是加载一张本地的图片(例如名字叫init_image.png),图片保存在代码同一目录下。代码中加载图片的地方改为就可以了。
# 多了一行,以下代码加载图片
init_image = load_image("init_image.png")
现在是不是感觉代码修改也不是那么复杂?