Diffusers documentation

RePaintScheduler

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

RePaintScheduler

RePaintScheduler es un programador de inpainting basado en DDPM para inpainting no supervisado con máscaras extremas. Está diseñado para usarse con RePaintPipeline y se basa en el artículo RePaint: Inpainting using Denoising Diffusion Probabilistic Models de Andreas Lugmayr et al.

El resumen del artículo es:

El inpainting libre es la tarea de añadir nuevo contenido a una imagen en las regiones especificadas por una máscara binaria arbitraria. La mayoría de los enfoques existentes se entrenan para una cierta distribución de máscaras, lo que limita su capacidad de generalización a tipos de máscaras no vistos. Además, el entrenamiento con pérdidas a nivel de píxel y perceptuales a menudo conduce a extensiones texturales simples hacia las áreas faltantes en lugar de una generación semánticamente significativa. En este trabajo, proponemos RePaint: un enfoque de inpainting basado en un Modelo Probabilístico de Difusión con Ruido (DDPM) que es aplicable incluso a máscaras extremas. Empleamos un DDPM incondicional preentrenado como prior generativo. Para condicionar el proceso de generación, solo alteramos las iteraciones de difusión inversa muestreando las regiones no enmascaradas usando la información de la imagen dada. Dado que esta técnica no modifica ni condiciona la red DDPM original en sí, el modelo produce imágenes de salida de alta calidad y diversas para cualquier forma de inpainting. Validamos nuestro método tanto para inpainting de rostros como para inpainting de imágenes de uso general, utilizando máscaras estándar y extremas. RePaint supera a los enfoques Autoregressive y GAN del estado del arte para al menos cinco de las seis distribuciones de máscaras. Repositorio de GitHub: esta URL http.

La implementación original se puede encontrar en andreas128/RePaint.

RePaintScheduler

clase diffusers.RePaintScheduler

< >

( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: str = 'linear'eta: float = 0.0trained_betas: numpy.ndarray | None = Noneclip_sample: bool = True )

Parámetros

  • num_train_timesteps (int, por defecto 1000) — El número de pasos de difusión para entrenar el modelo.
  • beta_start (float, por defecto 0.0001) — El valor inicial de beta para la inferencia.
  • beta_end (float, por defecto 0.02) — El valor final de beta.
  • beta_schedule (str, por defecto "linear") — El programa de betas, una correspondencia entre un rango de betas y una secuencia de betas para dar pasos al modelo. Elija entre linear, scaled_linear, squaredcos_cap_v2 o sigmoid.
  • eta (float, por defecto 0.0) — El peso del ruido añadido durante un paso de difusión. Un valor de 0.0 corresponde a DDIM y un valor de 1.0 corresponde a DDPM.
  • trained_betas (np.ndarray, opcional) — Pase un array de betas directamente al constructor para omitir beta_start y beta_end.
  • clip_sample (bool, por defecto True) — Recorta la muestra predicha entre -1 y 1 para la estabilidad numérica.

RePaintScheduler es un programador para el inpainting de DDPM dentro de una máscara dada.

Este modelo hereda de SchedulerMixin y ConfigMixin. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos los programadores, como la carga y el guardado.

add_noise

< >

( original_samples: Tensornoise: Tensortimesteps: IntTensor )

Parámetros

  • original_samples (torch.Tensor) — Las muestras originales a las que se añadiría ruido.
  • noise (torch.Tensor) — El ruido que se añadiría a las muestras.
  • timesteps (torch.IntTensor) — Los pasos de tiempo que determinarán el nivel de ruido para cada muestra.

Lanza

NotImplementedError

Indique que la adición de ruido para el entrenamiento de RePaint no es compatible con este programador.

scale_model_input

< >

( sample: Tensortimestep: int | None = None ) → torch.Tensor

Parámetros

  • sample (torch.Tensor) — La muestra de entrada.
  • timestep (int, opcional) — El paso de tiempo actual en la cadena de difusión.

Devuelve

torch.Tensor

Una muestra de entrada escalada.

Garantiza la interoperabilidad con los programadores que necesitan escalar la entrada del modelo de desruido en función del paso temporal actual.

set_timesteps

< >

( num_inference_steps: intjump_length: int = 10jump_n_sample: int = 10device: typing.Union[str, torch.device, NoneType] = None )

Parámetros

  • num_inference_steps (int) — El número de pasos de difusión utilizados al generar muestras con un modelo preentrenado.
  • jump_length (int, por defecto 10) — El número de pasos que se dan hacia adelante en el tiempo antes de retroceder en el tiempo para un solo salto (“j” en el artículo de RePaint). Consulte las figuras 9 y 10 del artículo.
  • jump_n_sample (int, por defecto 10) — El número de veces que se realiza un salto en el tiempo hacia adelante para una muestra de tiempo elegida. Consulte las figuras 9 y 10 del artículo.
  • device (str o torch.device, opcional) — El dispositivo al que deben moverse los timesteps. Si es None, los timesteps no se mueven.

Establece los pasos discretos utilizados para la cadena de difusión (para ejecutarse antes de la inferencia).

paso

< >

( model_output: Tensortimestep: intsample: Tensororiginal_image: Tensormask: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → RePaintSchedulerOutput or tuple[torch.Tensor, torch.Tensor]

Parámetros

  • model_output (torch.Tensor) — La salida directa del modelo de difusión aprendido.
  • timestep (int) — El paso de tiempo discreto actual en la cadena de difusión.
  • sample (torch.Tensor) — Una instancia actual de una muestra creada por el proceso de difusión.
  • original_image (torch.Tensor) — La imagen original sobre la que se realizará el inpainting.
  • mask (torch.Tensor) — La máscara donde un valor de 0.0 indica qué parte de la imagen original se debe inpaint.
  • generator (torch.Generator, opcional) — Un generador de números aleatorios.
  • return_dict (bool, por defecto True) — Indica si se debe devolver un RePaintSchedulerOutput en lugar de una tupla.

Devuelve

RePaintSchedulerOutput o tuple[torch.Tensor, torch.Tensor]

If return_dict is True, RePaintSchedulerOutput is returned, otherwise a tuple is returned where the first element is the previous sample and the second is the predicted original sample.

Predice la muestra del paso de tiempo anterior invirtiendo el SDE. Esta función propaga el proceso de difusión a partir de las salidas del modelo aprendido (con mayor frecuencia, el ruido predicho).

undo_step

< >

( sample: Tensortimestep: intgenerator: typing.Optional[torch.Generator] = None ) → torch.Tensor

Parámetros

  • sample (torch.Tensor) — La muestra a la que se le añade ruido.
  • timestep (int) — El paso de tiempo discreto actual en la cadena de difusión.
  • generator (torch.Generator, opcional) — Un generador de números aleatorios.

Devuelve

torch.Tensor

La muestra en el siguiente paso de tiempo de la cadena de difusión.

Añada ruido a una muestra para avanzar un paso de difusión.

RePaintSchedulerOutput

clase diffusers.schedulers.scheduling_repaint.RePaintSchedulerOutput

< >

( prev_sample: Tensorpred_original_sample: Tensor )

Parámetros

  • prev_sample (torch.Tensor de forma (batch_size, num_channels, height, width) para imágenes) — Muestra (x_{t-1}) calculada del paso de tiempo anterior. prev_sample debe usarse como entrada del modelo en el bucle de desruido.
  • pred_original_sample (torch.Tensor de forma (batch_size, num_channels, height, width) para imágenes) — La muestra desruidada predicha (x_{0}) basada en la salida del modelo del paso de tiempo actual. pred_original_sample se puede usar para previsualizar el progreso o para la guía.

Clase de salida para la función de paso del programador.

Update on GitHub