Diffusers documentation

DPMSolverMultistepInverse

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

DPMSolverMultistepInverse

DPMSolverMultistepInverse est le planificateur inversé issu de DPM-Solver: A Fast ODE Solver for Diffusion Probabilistic Model Sampling in Around 10 Steps et DPM-Solver++: Fast Solver for Guided Sampling of Diffusion Probabilistic Models de Cheng Lu, Yuhao Zhou, Fan Bao, Jianfei Chen, Chongxuan Li et Jun Zhu.

L'implémentation est principalement basée sur la définition de l'inversion DDIM de Null-text Inversion for Editing Real Images using Guided Diffusion Models et sur l'implémentation du notebook de l'inversion latente DiffEdit de Xiang-cd/DiffEdit-stable-diffusion.

Astuces

Le seuillage dynamique issu de Imagen est pris en charge. Pour les modèles de diffusion en espace pixel, vous pouvez définir à la fois algorithm_type="dpmsolver++" et thresholding=True afin d’utiliser le seuillage dynamique. Cette méthode de seuillage n’est pas adaptée aux modèles de diffusion en espace latent, tels que Stable Diffusion.

DPMSolverMultistepInverseScheduler

classe diffusers.DPMSolverMultistepInverseScheduler

< >

( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: typing.Literal['linear', 'scaled_linear', 'squaredcos_cap_v2'] = 'linear'trained_betas: numpy.ndarray | list[float] | None = Nonesolver_order: int = 2prediction_type: typing.Literal['epsilon', 'sample', 'v_prediction', 'flow_prediction'] = 'epsilon'thresholding: bool = Falsedynamic_thresholding_ratio: float = 0.995sample_max_value: float = 1.0algorithm_type: typing.Literal['dpmsolver', 'dpmsolver++', 'sde-dpmsolver', 'sde-dpmsolver++'] = 'dpmsolver++'solver_type: typing.Literal['midpoint', 'heun'] = 'midpoint'lower_order_final: bool = Trueeuler_at_final: bool = Falseuse_karras_sigmas: bool = Falseuse_exponential_sigmas: bool = Falseuse_beta_sigmas: bool = Falseuse_flow_sigmas: bool = Falseflow_shift: float = 1.0lambda_min_clipped: float = -infvariance_type: typing.Optional[typing.Literal['learned', 'learned_range']] = Nonetimestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'linspace'steps_offset: int = 0 )

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 (str, 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.
  • solver_order (int, par défaut 2) — L’ordre du DPMSolver, qui peut être 1 ou 2 ou 3. Il est recommandé d’utiliser solver_order=2 pour l’échantillonnage guidé et solver_order=3 pour l’échantillonnage non conditionnel.
  • prediction_type (str, 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).
  • thresholding (bool, par défaut False) — 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éfaut 0,995) — Le ratio pour la méthode de seuillage dynamique. Valable uniquement lorsque thresholding=True.
  • sample_max_value (float, par défaut 1.0) — La valeur de seuil pour le seuillage dynamique. Valable uniquement lorsque thresholding=True et algorithm_type="dpmsolver++".
  • algorithm_type (str, par défaut dpmsolver++) — Type d’algorithme pour le solveur ; peut être dpmsolver, dpmsolver++, sde-dpmsolver ou sde-dpmsolver++. Le type dpmsolver implémente les algorithmes de l’article DPMSolver, et le type dpmsolver++ implémente les algorithmes de l’article DPMSolver++. Il est recommandé d’utiliser dpmsolver++ ou sde-dpmsolver++ avec solver_order=2 pour un échantillonnage guidé, comme dans Stable Diffusion.
  • solver_type (str, par défaut midpoint) — Type de solveur pour le solveur du second ordre ; peut être midpoint ou heun. Le type de solveur affecte légèrement la qualité de l’échantillonnage, en particulier pour un petit nombre d’étapes. Il est recommandé d’utiliser les solveurs midpoint.
  • lower_order_final (bool, par défaut True) — Indique s'il faut utiliser des solveurs d'ordre inférieur aux étapes finales. Valable uniquement pour moins de 15 étapes d'inférence. Cela peut stabiliser l'échantillonnage de DPMSolver pour moins de 15 étapes, en particulier pour 10 étapes ou moins.
  • euler_at_final (bool, par défaut False) — Indique s'il faut utiliser la méthode d'Euler à la dernière étape. Il s'agit d'un compromis entre la stabilité numérique et la richesse des détails. Cela peut stabiliser l'échantillonnage de la variante SDE de DPMSolver pour un petit nombre d'étapes d'inférence, mais peut parfois entraîner un flou.
  • 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.
  • use_flow_sigmas (bool, facultatif, valeur par défaut False) — Indique s'il faut utiliser les sigmas de flux pour les tailles de pas dans le calendrier de bruit pendant le processus d'échantillonnage.
  • flow_shift (float, facultatif, valeur par défaut 1.0) — Le facteur de décalage de flux. Valable uniquement lorsque use_flow_sigmas=True.
  • lambda_min_clipped (float, par défaut -inf) — Seuil de rognage pour la valeur minimale de lambda(t) afin d'assurer la stabilité numérique. Ce paramètre est essentiel pour le calendrier de bruit cosinus (squaredcos_cap_v2).
  • variance_type (str, facultatif) — À définir sur « learned » ou « learned_range » pour les modèles de diffusion qui prédisent la variance. Si défini, la sortie du modèle contient la variance gaussienne prédite.
  • timestep_spacing (str, 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.
  • 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.

DPMSolverMultistepInverseScheduler est le planificateur inverse de DPMSolverMultistepScheduler.

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

Paramètres

  • original_samples (torch.Tensor) — Les échantillons originaux auxquels ajouter du bruit.
  • noise (torch.Tensor) — Le tenseur de bruit.
  • timesteps (torch.IntTensor) — Les timesteps auxquels ajouter du bruit.

Retourne

torch.Tensor

Les échantillons bruités.

Ajoutez du bruit aux original_samples propres à l'aide de la fonction équivalente du planificateur.

convert_model_output

< >

( model_output: Tensor*argssample: typing.Optional[torch.Tensor] = None**kwargs ) → torch.Tensor

Paramètres

  • model_output (torch.Tensor) — La sortie directe du modèle de diffusion appris.
  • sample (torch.Tensor, facultatif) — Une instance actuelle d'un échantillon créé par le processus de diffusion.

Retourne

torch.Tensor

La sortie du modèle converti.

Convertit la sortie du modèle vers le type correspondant dont l'algorithme DPMSolver/DPMSolver++ a besoin. DPM-Solver est conçu pour discrétiser une intégrale du modèle de prédiction du bruit, et DPM-Solver++ est conçu pour discrétiser une intégrale du modèle de prédiction des données.

> L'algorithme et le type de modèle sont découplés. Vous pouvez utiliser DPMSolver ou DPMSolver++ pour les modèles de prédiction du bruit et de prédiction des données.

dpm_solver_first_order_update

< >

( model_output: Tensor*argssample: typing.Optional[torch.Tensor] = Nonenoise: typing.Optional[torch.Tensor] = None**kwargs ) → torch.Tensor

Paramètres

  • model_output (torch.Tensor) — La sortie directe du modèle de diffusion appris.
  • sample (torch.Tensor, facultatif) — Une instance actuelle d'un échantillon créé par le processus de diffusion.
  • noise (torch.Tensor, facultatif) — Le tenseur de bruit.

Retourne

torch.Tensor

Le tenseur d'échantillon à l'étape temporelle précédente.

Une étape pour le DPMSolver du premier ordre (équivalent à DDIM).

multistep_dpm_solver_second_order_update

< >

( model_output_list: list*argssample: typing.Optional[torch.Tensor] = Nonenoise: typing.Optional[torch.Tensor] = None**kwargs ) → torch.Tensor

Paramètres

  • model_output_list (list[torch.Tensor]) — Les sorties directes du modèle de diffusion appris aux pas de temps actuels et ultérieurs.
  • sample (torch.Tensor, facultatif) — Une instance actuelle d'un échantillon créé par le processus de diffusion.
  • noise (torch.Tensor, facultatif) — Bruit aléatoire utilisé par les variantes de solveur stochastiques (sde-*). Obligatoire lorsque algorithm_type est défini sur l’une d’entre elles, et inutilisé dans le cas contraire.

Retourne

torch.Tensor

Le tenseur d'échantillon à l'étape temporelle précédente.

Une étape pour le solveur DPMSolver multistep du second ordre.

multistep_dpm_solver_third_order_update

< >

( model_output_list: list*argssample: typing.Optional[torch.Tensor] = Nonenoise: typing.Optional[torch.Tensor] = None**kwargs ) → torch.Tensor

Paramètres

  • model_output_list (list[torch.Tensor]) — Les sorties directes du modèle de diffusion appris aux pas de temps actuels et ultérieurs.
  • sample (torch.Tensor, facultatif) — Une instance actuelle d'un échantillon créé par le processus de diffusion.
  • noise (torch.Tensor, facultatif) — Le tenseur de bruit.

Retourne

torch.Tensor

Le tenseur d'échantillon à l'étape temporelle précédente.

Une étape pour le solveur DPMSolver multistep du troisième ordre.

scale_model_input

< >

( sample: Tensor*args**kwargs ) → torch.Tensor

Paramètres

  • sample (torch.Tensor) — L'échantillon d'entrée.

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_timesteps

< >

( num_inference_steps: int | 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é.
  • 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 discrets utilisés pour la chaîne de diffusion (à exécuter avant l'inférence).

étape

< >

( model_output: Tensortimestep: typing.Union[int, torch.Tensor]sample: Tensorgenerator: typing.Optional[torch.Generator] = Nonevariance_noise: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True ) → SchedulerOutput 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.
  • variance_noise (torch.Tensor) — Alternative à la génération de bruit avec generator en fournissant directement le bruit pour la variance elle-même. Utile pour des méthodes telles que CycleDiffusion.
  • return_dict (bool) — 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.

Prédit l'échantillon de l'étape temporelle précédente en inversant l'EDS. Cette fonction propage l'échantillon avec le solveur DPMSolver multi-étapes.

SchedulerOutput

classe diffusers.schedulers.scheduling_utils.SchedulerOutput

< >

( prev_sample: 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.

Classe de base pour la sortie de la fonction step d’un planificateur.

Update on GitHub