Diffusers documentation

ScoreSdeVeScheduler

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

ScoreSdeVeScheduler

ScoreSdeVeScheduler es un programador de ecuaciones diferenciales estocásticas (SDE) con varianza creciente. Fue introducido en el artículo Score-Based Generative Modeling through Stochastic Differential Equations de Yang Song, Jascha Sohl-Dickstein, Diederik P. Kingma, Abhishek Kumar, Stefano Ermon y Ben Poole.

El resumen del artículo es:

Crear ruido a partir de datos es fácil; crear datos a partir de ruido es modelado generativo. Presentamos una ecuación diferencial estocástica (SDE) que transforma suavemente una distribución de datos compleja en una distribución previa conocida mediante la inyección lenta de ruido, y una SDE de tiempo inverso correspondiente que transforma la distribución previa de vuelta a la distribución de datos mediante la eliminación lenta del ruido. Crucialmente, la SDE de tiempo inverso depende solo del campo de gradiente dependiente del tiempo (también conocido como score) de la distribución de datos perturbada. Aprovechando los avances en el modelado generativo basado en score, podemos estimar estos scores con precisión mediante redes neuronales y utilizar solucionadores numéricos de SDE para generar muestras. Mostramos que este marco encapsula enfoques anteriores en el modelado generativo basado en score y el modelado probabilístico de difusión, permitiendo nuevos procedimientos de muestreo y nuevas capacidades de modelado. En particular, introducimos un marco predictor-corrección para corregir errores en la evolución de la SDE de tiempo inverso discretizada. También derivamos una ODE neuronal equivalente que muestrea de la misma distribución que la SDE, pero que además permite el cálculo exacto de la verosimilitud y una eficiencia de muestreo mejorada. Además, proporcionamos una nueva forma de resolver problemas inversos con modelos basados en score, como se demuestra con experimentos en generación condicional por clase, inpainting de imágenes y colorización. Combinado con múltiples mejoras arquitectónicas, logramos un rendimiento récord para la generación de imágenes incondicional en CIFAR-10 con un Inception score de 9.89 y un FID de 2.20, una verosimilitud competitiva de 2.99 bits/dim, y demostramos por primera vez la generación de alta fidelidad de imágenes de 1024 x 1024 a partir de un modelo generativo basado en score.

ScoreSdeVeScheduler

clase diffusers.ScoreSdeVeScheduler

< >

( num_train_timesteps: int = 2000snr: float = 0.15sigma_min: float = 0.01sigma_max: float = 1348.0sampling_eps: float = 1e-05correct_steps: int = 1 )

Parámetros

  • num_train_timesteps (int, por defecto 2000) — El número de pasos de difusión para entrenar el modelo.
  • snr (float, por defecto 0.15) — Un coeficiente que pondera el paso desde la muestra de model_output (de la red) hasta el ruido aleatorio.
  • sigma_min (float, por defecto 0.01) — La escala de ruido inicial para la secuencia de sigma en el procedimiento de muestreo. El sigma mínimo debe reflejar la distribución de los datos.
  • sigma_max (float, valor predeterminado 1348.0) — El valor máximo utilizado para el rango de pasos de tiempo continuos que se pasan al modelo.
  • sampling_eps (float, por defecto 1e-5) — Valor final de la muestreo, donde los pasos de tiempo disminuyen progresivamente de 1 a epsilon.
  • correct_steps (int, por defecto 1) — El número de pasos de corrección realizados en una muestra generada.

ScoreSdeVeScheduler es un programador de ecuación diferencial estocástica (SDE) con varianza creciente.

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: Tensor ) → torch.Tensor

Parámetros

  • original_samples (torch.Tensor) — Las muestras originales a las que se les añadirá ruido.
  • noise (torch.Tensor) — El tensor de ruido que se añadirá a las muestras originales.
  • timesteps (torch.Tensor) — Los pasos de tiempo en los que se añade ruido, determinando el nivel de ruido a partir de la programación.

Devuelve

torch.Tensor

Las muestras ruidosas con ruido añadido escalado según la programación de pasos de tiempo.

Añade ruido a las muestras originales según el programa de ruido en los pasos de tiempo especificados. Este es el proceso de difusión hacia adelante.

get_adjacent_sigma

< >

( timesteps: Tensort: Tensor ) → torch.Tensor

Parámetros

  • timesteps (torch.Tensor) — El tensor de índices discretos de pasos de tiempo.
  • t (torch.Tensor) — El tensor de valores de paso de tiempo continuos.

Devuelve

torch.Tensor

Los valores de sigma para el índice de paso de tiempo adyacente (anterior).

Devuelve el valor de sigma correspondiente al índice del paso anterior. Cuando el paso es cero (no hay paso anterior), devuelve cero.

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_sigmas

< >

( num_inference_steps: intsigma_min: float | None = Nonesigma_max: float | None = Nonesampling_eps: float | None = None )

Parámetros

  • num_inference_steps (int) — El número de pasos de difusión utilizados al generar muestras con un modelo preentrenado.
  • sigma_min (float, opcional) — El valor inicial de la escala de ruido (anula el valor dado durante la instanciación del programador).
  • sigma_max (float, opcional) — El valor final de la escala de ruido (anula el valor dado durante la instanciación del programador).
  • sampling_eps (float, opcional) — El valor del paso temporal final (anula el valor dado durante la instanciación del programador).

Establece las escalas de ruido utilizadas para la cadena de difusión (debe ejecutarse antes de la inferencia). Los sigmas controlan el peso de los componentes de drift y diffusion de la actualización de la muestra.

set_timesteps

< >

( num_inference_steps: intsampling_eps: float | None = Nonedevice: 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.
  • sampling_eps (float, opcional) — El valor del paso temporal final (anula el valor dado durante la instanciación del programador).
  • 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 de tiempo continuo utilizados para la cadena de difusión (para ejecutarse antes de la inferencia).

step_correct

< >

( model_output: Tensorsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → SchedulerOutput or tuple

Parámetros

  • model_output (torch.Tensor) — La salida directa del modelo de difusión aprendido.
  • sample (torch.Tensor) — Una instancia actual de una muestra creada por el proceso de difusión.
  • generator (torch.Generator, opcional) — Un generador de números aleatorios.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un SchedulerOutput o una tuple.

Devuelve

SchedulerOutput o tuple

Si True es True, se devuelve SchedulerOutput; en caso contrario, se devuelve una tupla cuyo primer elemento es el tensor de muestras.

Corrige la muestra predicha en función de model_output de la red. Esto se suele ejecutar repetidamente después de realizar la predicción para el paso de tiempo anterior.

step_pred

< >

( model_output: Tensortimestep: intsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → SdeVeOutput or tuple

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.
  • generator (torch.Generator, opcional) — Un generador de números aleatorios.
  • return_dict (bool, opcional, valor predeterminado True) — Si se devuelve un SdeVeOutput o una tuple.

Devuelve

SdeVeOutput o tuple

If return_dict is True, SdeVeOutput is returned, otherwise a tuple is returned where the first element is the sample tensor.

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).

SdeVeOutput

clase diffusers.schedulers.scheduling_sde_ve.SdeVeOutput

< >

( prev_sample: Tensorprev_sample_mean: Tensor )

Parámetros

  • prev_sample (torch.Tensor de forma (batch_size, num_channels, height, width) para imágenes) — Muestra calculada (x_{t-1}) del paso de tiempo anterior. prev_sample debe usarse como entrada del modelo en el bucle de desruido.
  • prev_sample_mean (torch.Tensor de forma (batch_size, num_channels, height, width) para imágenes) — Media de prev_sample promediada sobre los pasos de tiempo anteriores.

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

Update on GitHub