Buckets:
Инпейнтинг
Inpainting заменяет или редактирует определённые области изображения. Это делает его полезным инструментом для восстановления изображений, например, для удаления дефектов и артефактов, или даже для замены области изображения чем-то совершенно новым. Inpainting опирается на маску, чтобы определить, какие области изображения необходимо заполнить; область для inpainting представлена белыми пикселями, а область, которую нужно сохранить, — чёрными пикселями. Белые пиксели заполняются на основе промпта.
С помощью 🤗 Diffusers выполнить inpainting можно так:
- Загрузите контрольную точку для инпейнтинга с помощью класса 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.
- Загрузите базовое и маскирующее изображения:
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")
- Создайте промпт для инпейнтинга изображения и передайте его в пайплайн вместе с базовым изображением и маской:
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.6 kB
- Xet hash:
- 017c4fca30870b7e74506fb9d3289242c542ceb1c69cbf6463ab84985b229adb
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.