Buckets:

mishig's picture
|
download
raw
38.2 kB

Inpainting

El inpainting reemplaza o edita áreas específicas de una imagen. Esto lo convierte en una herramienta útil para la restauración de imágenes, como la eliminación de defectos y artefactos, o incluso para reemplazar un área de la imagen con algo completamente nuevo. El inpainting se basa en una máscara para determinar qué regiones de la imagen deben rellenarse; el área a inpaintear se representa con píxeles blancos y el área a conservar se representa con píxeles negros. Los píxeles blancos se rellenan mediante el prompt.

Con 🤗 Diffusers, así es como puedes hacer inpainting:

  1. Carga un punto de control de inpainting con la clase AutoPipelineForInpainting. Esto detectará automáticamente la clase de pipeline adecuada para cargar en función del punto de control:
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()

A lo largo de la guía, notará que usamos enable_model_cpu_offload() y enable_xformers_memory_efficient_attention() para ahorrar memoria y aumentar la velocidad de inferencia. Si está usando PyTorch 2.0, no es necesario llamar a enable_xformers_memory_efficient_attention() en su pipeline, ya que ya estará utilizando la scaled-dot product attention nativa de PyTorch 2.0.

  1. Cargue las imágenes de base y 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")
  1. Crea un prompt para rellenar la imagen y pásalo a la pipeline junto con las imágenes base y 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)
imagen base



imagen de máscara



imagen generada

Crear una imagen de máscara

A lo largo de esta guía, la imagen de máscara se proporciona en todos los ejemplos de código para mayor comodidad. Puedes realizar inpainting en tus propias imágenes, pero necesitarás crear una imagen de máscara para ello. Usa el Space de abajo para crear fácilmente una imagen de máscara.

Sube una imagen base para retocar y usa la herramienta de boceto para dibujar una máscara. Cuando termines, haz clic en Run para generar y descargar la imagen de la máscara.

Xet Storage Details

Size:
38.2 kB
·
Xet hash:
d72d5805f430abbd40e34593e8e49943f2b9452a57903df0a0e93cfdf22f083b

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