HuggingFace镜像/kandinsky_v22_inpaint
模型介绍文件和版本分析
下载使用量0

Kandinsky 2.2 图像修复

Kandinsky 模型是一系列多语言文本到图像生成模型。Kandinsky 2.0 模型采用两个多语言文本编码器,并将这些结果拼接后输入 UNet。

Kandinsky 2.2 在先前模型的基础上进行了改进,将图像先验模型的图像编码器替换为更大的 CLIP-ViT-G 模型,以提升质量。图像先验模型还在不同分辨率和宽高比的图像上进行了重新训练,能够生成更高分辨率和不同尺寸的图像。

要使用 Kandinsky 模型执行任何任务,始终需要先设置先验流水线(prior pipeline)来对提示词进行编码并生成图像嵌入。先验流水线还会生成与负面提示词 "" 对应的 negative_image_embeds。为获得更好的结果,可以向先验流水线传递实际的 negative_prompt,但这会使先验流水线的有效批处理大小增加两倍。

🧨 mindone.diffusers

Kandinsky 2.1 和 2.2 的使用方法非常相似!唯一的区别是 Kandinsky 2.2 在解码潜在变量时不接受 prompt 作为输入。相反,Kandinsky 2.2 在解码过程中仅接受 image_embeds。

在 mindone.diffusers 中使用 Kandinsky 2.2 进行图像修复,您需要原始图像、用于替换原始图像特定区域的掩码,以及描述修复内容的文本提示词。加载先验流水线,

from mindone.diffusers import KandinskyV22InpaintPipeline, KandinskyV22PriorPipeline
from mindone.diffusers.utils import load_image, make_image_grid
import mindspore as ms
import numpy as np
from PIL import Image

prior_pipeline = KandinskyV22PriorPipeline.from_pretrained("kandinsky-community/kandinsky-2-2-prior", mindspore_dtype=ms.float16, use_safetensors=True)
pipeline = KandinskyV22InpaintPipeline.from_pretrained("kandinsky-community/kandinsky-2-2-decoder-inpaint", mindspore_dtype=ms.float16, use_safetensors=True)

加载初始图像并创建蒙版,

init_image = load_image("https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/kandinsky/cat.png")
mask = np.zeros((768, 768), dtype=np.float32)
# mask area above cat's head
mask[:250, 250:-250] = 1

使用 prior 流水线生成嵌入:

prompt = "a hat"
image_emb, zero_image_emb = prior_pipeline(prompt)

现在将初始图像、蒙版、提示词和嵌入向量传递给流水线以生成图像,

output_image = pipeline(
    image=init_image,
    mask_image=mask,
    image_embeds=image_emb,
    negative_image_embeds=zero_image_emb,
    height=768,
    width=768,
    num_inference_steps=150
)[0][0]
mask = Image.fromarray((mask*255).astype('uint8'), 'L')
make_image_grid([init_image, mask, output_image], rows=1, cols=3)