IP-Adapter还可以通过Inpainting自动管道和蒙图方式生成目标图片。
# 以下代码为程序运行进行设置,使用Inpainting 的自动管道,
import os os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
from diffusers import AutoPipelineForInpainting
# 程序需要能够支持加载图片
from diffusers.utils import load_image
import torch
# 以下代码加载模型,但是用的是Inpainting的自动管道
pipeline = AutoPipelineForInpainting.from_pretrained("diffusers/stable-diffusion-xl-1.0-inpainting-0.1",
torch_dtype=torch.float16).to("cuda")
# 同时加载IP-Adapter模型
pipeline.load_ip_adapter("h94/IP-Adapter", subfolder="sdxl_models", weight_name="ip-adapter_sdxl.bin")
# 设置IP-Adapter影响力
pipeline.set_ip_adapter_scale(0.6)
# 以下代码加载原始图片,参考图片和蒙图
mask_image = load_image(
"ip_adapter_mask.png")
image = load_image(
"ip_adapter_bear_1.png")
ip_image = load_image(
"ip_adapter_gummy.png")
generator = torch.Generator(device="cpu").manual_seed(4)
# 以下代码加载并处理提示词,基于原始图片,参考图片和蒙图生成图片
images = pipeline(
prompt="a cute gummy bear waving",
image=image,
mask_image=mask_image,
ip_adapter_image=ip_image,
generator=generator,
num_inference_steps=100,
).images
images[0].show()
原图的效果是这样的
参考图片的效果是这样的
蒙图的效果是这样的
生成的图片的效果是这样的(如果真有这么一个软糖北极熊,真能舍得吃吗?)