Diffusers documentation
ScoreSdeVeScheduler
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
< source >( 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 demodel_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
< source >( 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
< source >( timesteps: Tensort: Tensor ) → torch.Tensor
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
< source >( sample: Tensortimestep: int | None = None ) → torch.Tensor
Garantiza la interoperabilidad con los programadores que necesitan escalar la entrada del modelo de desruido en función del paso temporal actual.
set_sigmas
< source >( 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
< source >( 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 (
strotorch.device, opcional) — El dispositivo al que deben moverse los timesteps. Si esNone, 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
< source >( 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 predeterminadoTrue) — Indica si se debe devolver un SchedulerOutput o unatuple.
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
< source >( 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 predeterminadoTrue) — Si se devuelve un SdeVeOutput o unatuple.
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
< source >( prev_sample: Tensorprev_sample_mean: Tensor )
Parámetros
- prev_sample (
torch.Tensorde forma(batch_size, num_channels, height, width)para imágenes) — Muestra calculada(x_{t-1})del paso de tiempo anterior.prev_sampledebe usarse como entrada del modelo en el bucle de desruido. - prev_sample_mean (
torch.Tensorde forma(batch_size, num_channels, height, width)para imágenes) — Media deprev_samplepromediada sobre los pasos de tiempo anteriores.
Clase de salida para la función step del programador.