Buckets:
Inpainting
Inpainting substitui ou edita áreas específicas de uma imagem. Isso o torna uma ferramenta útil para a restauração de imagens, como a remoção de defeitos e artefatos, ou até mesmo a substituição de uma área da imagem por algo completamente novo. O inpainting depende de uma máscara para determinar quais regiões da imagem devem ser preenchidas; a área a ser preenchida é representada por pixels brancos e a área a ser mantida é representada por pixels pretos. Os pixels brancos são preenchidos pelo prompt.
Com o 🤗 Diffusers, é assim que você pode fazer inpainting:
- Carregue um checkpoint de inpainting com a classe AutoPipelineForInpainting. Isso detectará automaticamente a classe de pipeline apropriada para carregar com base no checkpoint:
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()
Você notará, ao longo do guia, que usamos enable_model_cpu_offload() e enable_xformers_memory_efficient_attention() para economizar memória e aumentar a velocidade de inferência. Se você estiver usando PyTorch 2.0, não é necessário chamar enable_xformers_memory_efficient_attention() no seu pipeline, pois ele já estará usando o scaled-dot product attention nativo do PyTorch 2.0.
- Carregue as imagens de base e de máscara:
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")
- Crie um prompt para fazer o inpainting da imagem e passe-o para o pipeline junto com as imagens base e de máscara:
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)
imagem base
imagem de máscara
imagem gerada
Crie uma imagem de máscara
Ao longo deste guia, a imagem de máscara é fornecida em todos os exemplos de código para sua conveniência. Você pode fazer inpainting em suas próprias imagens, mas precisará criar uma imagem de máscara para isso. Use o Space abaixo para criar facilmente uma imagem de máscara.
Envie uma imagem base para fazer o inpainting e use a ferramenta de esboço para desenhar uma máscara. Quando terminar, clique em Run para gerar e baixar a imagem da máscara.
Xet Storage Details
- Size:
- 38.1 kB
- Xet hash:
- a8dc6af3f8a0e7ba6582555468708b238f791cc00fed260b557437cc17fb883d
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.