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 est un planificateur d'équation différentielle stochastique (SDE) à variance croissante. Il a été introduit dans l'article Score-Based Generative Modeling through Stochastic Differential Equations de Yang Song, Jascha Sohl-Dickstein, Diederik P. Kingma, Abhishek Kumar, Stefano Ermon, Ben Poole.

L'abstract de l'article est :

Créer du bruit à partir de données est facile ; créer des données à partir de bruit est la modélisation générative. Nous présentons une équation différentielle stochastique (SDE) qui transforme en douceur une distribution de données complexe en une distribution a priori connue en injectant lentement du bruit, ainsi qu’une SDE en temps inverse correspondante qui transforme la distribution a priori en distribution de données en retirant lentement le bruit. Crucialement, la SDE en temps inverse ne dépend que du champ de gradient dépendant du temps (\aka, score) de la distribution de données perturbée. En tirant parti des avancées en modélisation générative basée sur le score, nous pouvons estimer précisément ces scores avec des réseaux de neurones et utiliser des solveurs numériques de SDE pour générer des échantillons. Nous montrons que ce cadre englobe les approches précédentes en modélisation générative basée sur le score et en modélisation probabiliste par diffusion, permettant de nouvelles procédures d’échantillonnage et de nouvelles capacités de modélisation. En particulier, nous introduisons un cadre prédicteur-correcteur pour corriger les erreurs dans l’évolution de la SDE en temps inverse discrétisée. Nous dérivons également une ODE neuronale équivalente qui échantillonne à partir de la même distribution que la SDE, mais qui permet en outre le calcul exact de la vraisemblance et une efficacité d’échantillonnage améliorée. De plus, nous proposons une nouvelle manière de résoudre des problèmes inverses avec des modèles basés sur le score, comme le montrent des expériences sur la génération conditionnée par classe, l’image inpainting et la colorisation. Combiné à plusieurs améliorations architecturales, nous atteignons des performances record pour la génération d’images non conditionnée sur CIFAR-10 avec un score Inception de 9,89 et un FID de 2,20, une vraisemblance compétitive de 2,99 bits/dim, et démontrons pour la première fois la génération fidèle d’images de 1024 x 1024 à partir d’un modèle génératif basé sur le score.

ScoreSdeVeScheduler

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

Paramètres

  • num_train_timesteps (int, par défaut 2000) — Le nombre d'étapes de diffusion pour entraîner le modèle.
  • snr (float, par défaut 0,15) — Un coefficient pondérant la transition de l'échantillon model_output (issu du réseau) vers le bruit aléatoire.
  • sigma_min (float, par défaut 0.01) — L'échelle de bruit initiale pour la séquence de sigma dans la procédure d'échantillonnage. Le sigma minimal doit refléter la distribution des données.
  • sigma_max (float, par défaut 1348.0) — La valeur maximale utilisée pour la plage des pas de temps continus transmis au modèle.
  • sampling_eps (float, par défaut 1e-5) — Valeur finale de l'échantillonnage, où les pas de temps diminuent progressivement de 1 à epsilon.
  • correct_steps (int, par défaut 1) — Le nombre d'étapes de correction effectuées sur un échantillon produit.

ScoreSdeVeScheduler est un planificateur d'équation différentielle stochastique (SDE) à variance croissante.

Ce modèle hérite de SchedulerMixin et ConfigMixin. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous les planificateurs, telles que le chargement et l'enregistrement.

add_noise

< >

( original_samples: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor

Paramètres

  • original_samples (torch.Tensor) — Les échantillons originaux auxquels du bruit sera ajouté.
  • noise (torch.Tensor) — Le tenseur de bruit à ajouter aux échantillons d'origine.
  • timesteps (torch.Tensor) — Les timesteps auxquels ajouter du bruit, déterminant le niveau de bruit à partir de l'ordonnancement.

Retourne

torch.Tensor

Les échantillons bruités avec un bruit ajouté mis à l'échelle selon le calendrier des pas de temps.

Ajoutez du bruit aux échantillons d'origine selon le calendrier de bruit aux pas de temps spécifiés. Il s'agit du processus de diffusion avant.

get_adjacent_sigma

< >

( timesteps: Tensort: Tensor ) → torch.Tensor

Paramètres

  • timesteps (torch.Tensor) — Le tenseur des indices discrets de pas de temps.
  • t (torch.Tensor) — Le tenseur des valeurs continues de pas de temps.

Retourne

torch.Tensor

Les valeurs sigma pour l'index de pas de temps adjacent (précédent).

Retourne la valeur de sigma correspondant à l'index de la précédente étape temporelle. Lorsque l'étape temporelle est nulle (aucune étape précédente), retourne zéro.

scale_model_input

< >

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

Paramètres

  • sample (torch.Tensor) — L'échantillon d'entrée.
  • timestep (int, facultatif) — L'étape temporelle actuelle dans la chaîne de diffusion.

Retourne

torch.Tensor

Un échantillon d'entrée mis à l'échelle.

Assure l'interchangeabilité avec les planificateurs qui doivent mettre à l'échelle l'entrée du modèle de débruitage en fonction de l'étape temporelle actuelle.

set_sigmas

< >

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

Paramètres

  • num_inference_steps (int) — Le nombre d'étapes de diffusion utilisées lors de la génération d'échantillons avec un modèle pré-entraîné.
  • sigma_min (float, facultatif) — La valeur initiale de l'échelle de bruit (remplace la valeur donnée lors de l'instantiation du planificateur).
  • sigma_max (float, facultatif) — La valeur finale de l'échelle de bruit (remplace la valeur donnée lors de l'instantiation du planificateur).
  • sampling_eps (float, facultatif) — La valeur de la dernière étape de temps (remplace la valeur donnée lors de l’instanciation du planificateur).

Définit les échelles de bruit utilisées pour la chaîne de diffusion (à exécuter avant l'inférence). Les sigmas contrôlent le poids des composantes drift et diffusion de la mise à jour de l'échantillon.

set_timesteps

< >

( num_inference_steps: intsampling_eps: float | None = Nonedevice: typing.Union[str, torch.device, NoneType] = None )

Paramètres

  • num_inference_steps (int) — Le nombre d'étapes de diffusion utilisées lors de la génération d'échantillons avec un modèle pré-entraîné.
  • sampling_eps (float, facultatif) — La valeur de la dernière étape de temps (remplace la valeur donnée lors de l’instanciation du planificateur).
  • device (str ou torch.device, facultatif) — L'appareil vers lequel les timesteps doivent être déplacés. Si None, les timesteps ne sont pas déplacés.

Définit les pas de temps continus utilisés pour la chaîne de diffusion (à exécuter avant l'inférence).

step_correct

< >

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

Paramètres

  • model_output (torch.Tensor) — La sortie directe du modèle de diffusion appris.
  • sample (torch.Tensor) — Une instance actuelle d'un échantillon créé par le processus de diffusion.
  • generator (torch.Generator, facultatif) — Un générateur de nombres aléatoires.
  • return_dict (bool, facultatif, par défaut True) — Indique s'il faut retourner un SchedulerOutput ou un tuple.

Retourne

SchedulerOutput ou tuple

Si return_dict est True, SchedulerOutput est renvoyé, sinon un tuple est renvoyé dont le premier élément est le tenseur d'échantillon.

Corrigez l'échantillon prédit sur la base de model_output du réseau. Cette opération est souvent exécutée de manière répétée après avoir effectué la prédiction pour l'étape temporelle précédente.

step_pred

< >

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

Paramètres

  • model_output (torch.Tensor) — La sortie directe du modèle de diffusion appris.
  • timestep (int) — L'étape discrète actuelle dans la chaîne de diffusion.
  • sample (torch.Tensor) — Une instance actuelle d'un échantillon créé par le processus de diffusion.
  • generator (torch.Generator, facultatif) — Un générateur de nombres aléatoires.
  • return_dict (bool, facultatif, par défaut True) — Indique s'il faut retourner un SdeVeOutput ou un tuple.

Retourne

SdeVeOutput ou tuple

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

Prédit l'échantillon de l'étape temporelle précédente en inversant l'EDS. Cette fonction propage le processus de diffusion à partir des sorties du modèle appris (le plus souvent le bruit prédit).

SdeVeOutput

classe diffusers.schedulers.scheduling_sde_ve.SdeVeOutput

< >

( prev_sample: Tensorprev_sample_mean: Tensor )

Paramètres

  • prev_sample (torch.Tensor de forme (batch_size, num_channels, height, width) pour les images) — Échantillon calculé (x_{t-1}) de l'étape temporelle précédente. prev_sample doit être utilisé comme entrée du modèle suivante dans la boucle de débruitage.
  • prev_sample_mean (torch.Tensor de forme (batch_size, num_channels, height, width) pour les images) — Moyenne de prev_sample sur les pas de temps précédents.

Classe de sortie pour la sortie de la fonction step du planificateur.

Update on GitHub