Buckets:

mishig's picture
|
download
raw
48.7 kB

Инпейнтинг

Inpainting заменяет или редактирует определённые области изображения. Это делает его полезным инструментом для восстановления изображений, например, для удаления дефектов и артефактов, или даже для замены области изображения чем-то совершенно новым. Inpainting опирается на маску, чтобы определить, какие области изображения необходимо заполнить; область для inpainting представлена белыми пикселями, а область, которую нужно сохранить, — чёрными пикселями. Белые пиксели заполняются на основе промпта.

С помощью 🤗 Diffusers выполнить inpainting можно так:

  1. Загрузите контрольную точку для инпейнтинга с помощью класса AutoPipelineForInpainting. Он автоматически определит подходящий класс пайплайна для загрузки на основе контрольной точки:
import torch
from diffusers import AutoPipelineForInpainting
from diffusers.utils import load_image, make_image_grid

pipeline = AutoPipelineForInpainting.from_pretrained(
    "kandinsky-community/kandinsky-2-2-decoder-inpaint", dtype=torch.float16
)
pipeline.enable_model_cpu_offload()
# remove following line if xFormers is not installed or you have PyTorch 2.0 or higher installed
pipeline.enable_xformers_memory_efficient_attention()

В ходе выполнения руководства вы заметите, что мы используем enable_model_cpu_offload() и enable_xformers_memory_efficient_attention(), чтобы экономить память и увеличивать скорость инференса. Если вы используете PyTorch 2.0, нет необходимости вызывать enable_xformers_memory_efficient_attention() для вашего пайплайна, так как он уже использует нативное scaled-dot product attention PyTorch 2.0.

  1. Загрузите базовое и маскирующее изображения:
init_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/inpaint.png")
mask_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/inpaint_mask.png")
  1. Создайте промпт для инпейнтинга изображения и передайте его в пайплайн вместе с базовым изображением и маской:
prompt = "a black cat with glowing eyes, cute, adorable, disney, pixar, highly detailed, 8k"
negative_prompt = "bad anatomy, deformed, ugly, disfigured"
image = pipeline(prompt=prompt, negative_prompt=negative_prompt, image=init_image, mask_image=mask_image).images[0]
make_image_grid([init_image, mask_image, image], rows=1, cols=3)
базовый образ



маска изображения



сгенерированное изображение

Создание изображения маски

Весь текст этого руководства содержит примеры кода, в которых для удобства используется изображение маски. Вы можете выполнять инпейнтинг на собственных изображениях, но для этого потребуется создать изображение маски. Используйте Space ниже, чтобы легко создать изображение маски.

Загрузите базовое изображение для инпейнтинга и используйте инструмент «Скетч», чтобы нарисовать маску. Когда закончите, нажмите Run, чтобы сгенерировать и скачать изображение маски.

Xet Storage Details

Size:
48.7 kB
·
Xet hash:
432e22cb805477610978289e7d04c1c0b107e6ee77187270455f07aac6353d73

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.