Diffusers documentation
DDPMScheduler
DDPMScheduler
Denoising Diffusion Probabilistic Models (DDPM) de Jonathan Ho, Ajay Jain et Pieter Abbeel propose un modèle de diffusion portant le même nom. Dans le contexte de la bibliothèque 🤗 Diffusers, DDPM désigne à la fois le planificateur de débruitage discret issu de l’article et le pipeline.
L'abstract de l'article est :
Nous présentons des résultats de synthèse d’images de haute qualité à l’aide de modèles probabilistes de diffusion, une classe de modèles de variables latentes inspirée de considérations issues de la thermodynamique hors équilibre. Nos meilleurs résultats sont obtenus en entraînant sur une borne variationnelle pondérée, conçue selon une nouvelle connexion entre les modèles probabilistes de diffusion et l’ajustement du score de débruitage avec dynamique de Langevin. Nos modèles admettent naturellement un schéma de décompression progressive avec perte, qui peut être interprété comme une généralisation du décodage autorégressif. Sur le jeu de données non conditionnel CIFAR10, nous obtenons un score Inception de 9,46 et un score FID de pointe de 3,17. Sur LSUN 256x256, nous obtenons une qualité d’échantillons comparable à celle de ProgressiveGAN. Notre implémentation est disponible à cette adresse.
DDPMScheduler
classe diffusers.DDPMScheduler
< source >( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: typing.Literal['linear', 'scaled_linear', 'squaredcos_cap_v2', 'sigmoid'] = 'linear'trained_betas: numpy.ndarray | list[float] | None = Nonevariance_type: typing.Literal['fixed_small', 'fixed_small_log', 'fixed_large', 'fixed_large_log', 'learned', 'learned_range'] = 'fixed_small'clip_sample: bool = Trueprediction_type: typing.Literal['epsilon', 'sample', 'v_prediction'] = 'epsilon'thresholding: bool = Falsedynamic_thresholding_ratio: float = 0.995clip_sample_range: float = 1.0sample_max_value: float = 1.0timestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'leading'steps_offset: int = 0rescale_betas_zero_snr: bool = False )
Paramètres
- num_train_timesteps (
int, par défaut1000) — Le nombre d'étapes de diffusion pour entraîner le modèle. - beta_start (
float, par défaut0.0001) — La valeur de départ debetapour l'inférence. - beta_end (
float, par défaut0.02) — La valeur finale debeta. - beta_schedule (
"linear","scaled_linear","squaredcos_cap_v2"ou"sigmoid", 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. - trained_betas (
np.ndarray, facultatif) — Un tableau de betas à passer directement au constructeur sans utiliserbeta_startetbeta_end. - variance_type (
"fixed_small","fixed_small_log","fixed_large","fixed_large_log","learned"ou"learned_range", par défaut"fixed_small") — Limite la variance lors de l’ajout de bruit à l’échantillon débruité. - clip_sample (
bool, par défautTrue) — Applique un seuil à l'échantillon prédit pour la stabilité numérique. - clip_sample_range (
float, par défaut1.0) — L'amplitude maximale pour le rognage des échantillons. Valable uniquement lorsqueclip_sample=True. - prediction_type (
"epsilon","sample", or"v_prediction", defaults to"epsilon") — Prediction type of the scheduler function; can beepsilon(predicts the noise of the diffusion process),sample(directly predicts the noisy sample) orv_prediction` (see section 2.4 of Imagen Video paper). - thresholding (
bool, par défautFalse) — Indique s'il faut utiliser la méthode de « seuillage dynamique ». Cette méthode n'est pas adaptée aux modèles de diffusion en espace latent tels que Stable Diffusion. - dynamic_thresholding_ratio (
float, par défaut0.995) — Le ratio pour la méthode de seuillage dynamique. Valable uniquement lorsquethresholding=True. - sample_max_value (
float, par défaut1.0) — La valeur de seuil pour le seuillage dynamique. Valable uniquement lorsquethresholding=True. - timestep_spacing (
"linspace","leading"ou"trailing", par défaut"leading") — La manière dont les timesteps doivent être mis à l'échelle. Reportez-vous au tableau 2 de Common Diffusion Noise Schedules and Sample Steps are Flawed pour plus d'informations. - steps_offset (
int, par défaut0) — 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éfautFalse) — 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.
DDPMScheduler explore les liens entre l’ajustement du score de débruitage et l’échantillonnage par dynamique de Langevin.
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
< source >( original_samples: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor
Paramètres
- original_samples (
torch.Tensor) — Les échantillons originaux auxquels du bruit sera ajouté. - noise (
torch.Tensor) — Le bruit à ajouter aux échantillons. - timesteps (
torch.IntTensor) — Les timesteps indiquant le niveau de bruit pour chaque échantillon.
Retourne
torch.Tensor
Les échantillons bruités.
Ajoutez du bruit aux échantillons d'origine en fonction de l'amplitude du bruit à chaque pas de temps (il s'agit du processus de diffusion avant).
get_velocity
< source >( sample: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor
Calculer la prédiction de vitesse à partir de l'échantillon et du bruit selon la formule de vitesse.
previous_timestep
< source >( timestep: int ) → int or torch.Tensor
Calculer l'étape précédente dans la chaîne de diffusion.
scale_model_input
< source >( sample: Tensortimestep: int | None = None ) → torch.Tensor
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_timesteps
< source >( num_inference_steps: int = Nonedevice: typing.Union[str, torch.device] = Nonetimesteps: list[int] | None = None )
Paramètres
- num_inference_steps (
int, facultatif) — Le nombre d’étapes de diffusion utilisé lors de la génération d’échantillons avec un modèle pré-entraîné. S’il est utilisé,timestepsdoit êtreNone. - device (
stroutorch.device, facultatif) — L'appareil vers lequel les timesteps doivent être déplacés. SiNone, les timesteps ne sont pas déplacés. - timesteps (
list[int], facultatif) — Timesteps personnalisés utilisés pour prendre en charge un espacement arbitraire entre les timesteps. SiNone, la stratégie d’espacement par défaut, qui consiste en un espacement égal entre les timesteps, est utilisée. Sitimestepsest transmis,num_inference_stepsdoit êtreNone.
Définit les pas de temps discrets utilisés pour la chaîne de diffusion (à exécuter avant l'inférence).
étape
< source >( model_output: Tensortimestep: intsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → DDPMSchedulerOutput 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, par défautTrue) — Indique s'il faut retourner un DDPMSchedulerOutput ou untuple.
Retourne
DDPMSchedulerOutput ou tuple
If return_dict est True, DDPMSchedulerOutput est retourné, sinon un tuple est retourné dont le premier élément est le tenseur d'échantillon.
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).
DDPMSchedulerOutput
classe diffusers.schedulers.scheduling_ddpm.DDPMSchedulerOutput
< source >( prev_sample: Tensorpred_original_sample: typing.Optional[torch.Tensor] = None )
Paramètres
- prev_sample (
torch.Tensorde forme(batch_size, num_channels, height, width)pour les images) — Échantillon calculé(x_{t-1})de l'étape temporelle précédente.prev_sampledoit être utilisé comme entrée du modèle suivante dans la boucle de débruitage. - pred_original_sample (
torch.Tensorde 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_samplepeut être utilisé pour prévisualiser la progression ou pour le guidage.
Classe de sortie pour la sortie de la fonction step du planificateur.