Diffusers documentation

EulerDiscreteScheduler

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

EulerDiscreteScheduler

Le planificateur Euler (Algorithme 2) provient de l'article Elucidating the Design Space of Diffusion-Based Generative Models de Karras et al. Il s'agit d'un planificateur rapide qui peut souvent générer de bons résultats en 20 à 30 étapes. Le planificateur est basé sur l'implémentation originale k-diffusion de Katherine Crowson.

EulerDiscreteScheduler

classe diffusers.EulerDiscreteScheduler

< >

( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: str = 'linear'trained_betas: numpy.ndarray | list[float] | None = Noneprediction_type: str = 'epsilon'interpolation_type: str = 'linear'use_karras_sigmas: bool | None = Falseuse_exponential_sigmas: bool | None = Falseuse_beta_sigmas: bool | None = Falsesigma_min: float | None = Nonesigma_max: float | None = Nonetimestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'linspace'timestep_type: typing.Literal['discrete', 'continuous'] = 'discrete'steps_offset: int = 0rescale_betas_zero_snr: bool = Falsefinal_sigmas_type: typing.Literal['zero', 'sigma_min'] = 'zero' )

Paramètres

  • num_train_timesteps (int, par défaut 1000) — Le nombre d'étapes de diffusion pour entraîner le modèle.
  • beta_start (float, par défaut 0.0001) — Valeur de départ de beta pour l'inférence.
  • beta_end (float, par défaut 0.02) — La valeur finale de beta.
  • beta_schedule (Literal["linear", "scaled_linear", "squaredcos_cap_v2"], par défaut "linear") — Le planning des bêtas, une correspondance entre une plage de bêtas et une séquence de bêtas pour faire avancer le modèle. Choisissez parmi "linear", "scaled_linear" ou "squaredcos_cap_v2".
  • trained_betas (np.ndarray, facultatif) — Transmettez un tableau de betas directement au constructeur pour contourner beta_start et beta_end.
  • prediction_type (Literal["epsilon", "sample", "v_prediction"], defaults to "epsilon", optional) — Prediction type of the scheduler function; can be "epsilon" (predicts the noise of the diffusion process), "sample" (directly predicts the noisy sample) or “v_prediction”` (see section 2.4 of Imagen Video paper).
  • interpolation_type (Literal["linear", "log_linear"], par défaut "linear", facultatif) — Le type d'interpolation à utiliser pour calculer les sigmas intermédiaires des étapes de débruitage du planificateur. Doit être l'un des "linear" ou "log_linear".
  • use_karras_sigmas (bool, facultatif, valeur par défaut False) — Indique s'il faut utiliser les sigmas de Karras pour les tailles de pas dans le calendrier de bruit pendant le processus d'échantillonnage. Si True, les sigmas sont déterminés selon une séquence de niveaux de bruit {σi}.
  • use_exponential_sigmas (bool, facultatif, valeur par défaut False) — Indique s'il faut utiliser des sigmas exponentiels pour les tailles de pas dans le calendrier de bruit pendant le processus d'échantillonnage.
  • use_beta_sigmas (bool, facultatif, par défaut False) — Indique s'il faut utiliser des sigmas bêta pour les tailles de pas dans le calendrier de bruit pendant le processus d'échantillonnage. Consultez Beta Sampling is All You Need pour plus d'informations.
  • sigma_min (float, facultatif) — La valeur minimale de sigma pour le calendrier de bruit. Si elle n'est pas fournie, la valeur par défaut est la dernière sigma du calendrier.
  • sigma_max (float, facultatif) — La valeur maximale de sigma pour le calendrier de bruit. Si non fournie, la valeur par défaut est la première sigma du calendrier.
  • timestep_spacing (Literal["linspace", "leading", "trailing"], par défaut "linspace") — La manière dont les timesteps doivent être mis à l'échelle. Reportez-vous au Tableau 2 de l'article Common Diffusion Noise Schedules and Sample Steps are Flawed pour plus d'informations.
  • timestep_type (Literal["discrete", "continuous"], par défaut "discrete") — Le type de timesteps à utiliser. Peut être "discrete" ou "continuous".
  • steps_offset (int, par défaut 0) — Un décalage ajouté aux étapes d'inférence, tel que requis par certaines familles de modèles.
  • rescale_betas_zero_snr (bool, par défaut False) — Indique s'il faut rééchelonner les betas pour obtenir un SNR terminal nul. Cela permet au modèle de générer des échantillons très clairs et très sombres, au lieu de se limiter à des échantillons de luminosité moyenne. Lié de manière lâche à --offset_noise.
  • final_sigmas_type (Literal["zero", "sigma_min"], par défaut "zero") — La valeur finale de sigma pour le calendrier de bruit pendant le processus d'échantillonnage. Si "sigma_min", le sigma final est identique au dernier sigma du calendrier d'entraînement. Si "zero", le sigma final est fixé à 0.

Planificateur Euler.

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.

Ajouter du bruit aux échantillons d'origine selon le calendrier de bruit aux pas de temps spécifiés.

get_velocity

< >

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

Paramètres

  • sample (torch.Tensor) — L'échantillon d'entrée pour lequel calculer la vitesse.
  • noise (torch.Tensor) — Le tenseur de bruit correspondant à l'échantillon.
  • timesteps (torch.Tensor) — Les timesteps auxquels calculer la vitesse.

Retourne

torch.Tensor

La prédiction de vitesse calculée comme sqrt(alpha_prod) * noise - sqrt(1 - alpha_prod) * sample.

Calculez la prédiction de vitesse pour l'échantillon et le bruit donnés aux pas de temps spécifiés.

Cette méthode implémente la prédiction de vitesse utilisée dans les modèles de type v-prediction, qui prédit une combinaison linéaire de l'échantillon et du bruit.

index_for_timestep

< >

( timestep: typing.Union[float, torch.Tensor]schedule_timesteps: typing.Optional[torch.Tensor] = None ) → int

Paramètres

  • timestep (float ou torch.Tensor) — La valeur de timestep à rechercher dans le planning.
  • schedule_timesteps (torch.Tensor, facultatif) — Le calendrier des timesteps à explorer. Si None, utilise self.timesteps.

Retourne

int

L'indice de la pas de temps dans le planning. Pour la toute première étape, renvoie le deuxième indice si plusieurs correspondances existent, afin d'éviter de sauter un sigma lors d'un démarrage en cours de planning (par exemple, pour l'image-vers-image).

Trouver l'index d'une étape de temps donnée dans le calendrier des étapes de temps.

scale_model_input

< >

( sample: Tensortimestep: typing.Union[float, torch.Tensor] ) → torch.Tensor

Paramètres

  • sample (torch.Tensor) — L'échantillon d'entrée à mettre à l'échelle.
  • timestep (float ou torch.Tensor) — L'étape temporelle actuelle dans la chaîne de diffusion.

Retourne

torch.Tensor

Un échantillon d'entrée mis à l'échelle, divisé par (sigma**2 + 1) ** 0.5.

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. Met à l'échelle l'entrée du modèle de débruitage par (sigma**2 + 1) ** 0.5 pour correspondre à l'algorithme Euler.

set_begin_index

< >

( begin_index: int = 0 )

Paramètres

  • begin_index (int, par défaut 0) — L'index de début pour le planificateur.

Définit l'index de début pour le planificateur. Cette fonction doit être exécutée depuis le pipeline avant l'inférence.

set_timesteps

< >

( num_inference_steps: int = Nonedevice: typing.Union[str, torch.device] = Nonetimesteps: list[int] | None = Nonesigmas: list[float] | None = None )

Paramètres

  • num_inference_steps (int, facultatif) — Le nombre d’étapes de diffusion utilisées lors de la génération d’échantillons avec un modèle pré-entraîné. Si None, timesteps ou sigmas doivent être fournis.
  • 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.
  • timesteps (list[int], facultatif) — Timesteps personnalisés utilisés pour prendre en charge un calendrier de timesteps arbitraire. Si None, les timesteps seront générés sur la base de l'attribut timestep_spacing. Si timesteps est transmis, num_inference_steps et sigmas doivent être None, et l'attribut timestep_spacing sera ignoré.
  • sigmas (list[float], facultatif) — Sigmas personnalisés utilisés pour prendre en charge un calendrier de pas de temps arbitraire. Si None, les pas de temps et les sigmas seront générés en fonction des attributs pertinents du planificateur. Si sigmas est transmis, num_inference_steps et timesteps doivent être None, et les pas de temps seront générés en fonction du calendrier de sigmas personnalisé.

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

étape

< >

( model_output: Tensortimestep: typing.Union[float, torch.Tensor]sample: Tensors_churn: float = 0.0s_tmin: float = 0.0s_tmax: float = infs_noise: float = 1.0generator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → EulerDiscreteSchedulerOutput or tuple

Paramètres

  • model_output (torch.Tensor) — La sortie directe du modèle de diffusion appris.
  • timestep (float ou torch.Tensor) — 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.
  • s_churn (float, facultatif, par défaut 0.0) — Paramètre de stochastique qui contrôle la quantité de bruit ajoutée lors de l'échantillonnage. Des valeurs plus élevées augmentent l'aléatoire.
  • s_tmin (float, facultatif, par défaut 0.0) — Seuil minimal de pas de temps pour appliquer la stochastique. Seuls les pas de temps supérieurs à cette valeur recevront du bruit.
  • s_tmax (float, facultatif, par défaut inf) — Seuil maximal de pas de temps pour appliquer la stochastique. Seuls les pas de temps inférieurs à cette valeur verront du bruit ajouté.
  • s_noise (float, facultatif, par défaut 1.0) — Facteur d'échelle pour le bruit ajouté à l'échantillon.
  • generator (torch.Generator, facultatif) — Générateur de nombres aléatoires pour un échantillonnage reproductible.
  • return_dict (bool, facultatif, par défaut True) — Indique s'il faut retourner un EulerDiscreteSchedulerOutput ou un tuple.

Retourne

EulerDiscreteSchedulerOutput ou tuple

Si return_dict est True, EulerDiscreteSchedulerOutput est retourné, sinon un tuple est retourné dont le premier élément est le tenseur d’échantillon et le second élément est l’échantillon original prédit.

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

EulerDiscreteSchedulerOutput

classe diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput

< >

( prev_sample: Tensorpred_original_sample: typing.Optional[torch.Tensor] = None )

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.
  • pred_original_sample (torch.Tensor de forme (batch_size, num_channels, height, width) pour les images) — L'échantillon débruité prédit (x_{0}) basé sur la sortie du modèle à l'étape temporelle actuelle. pred_original_sample peut être utilisé pour prévisualiser la progression ou pour le guidage.

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

Update on GitHub