Diffusers documentation

DDIM

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

DDIM

Denoising Diffusion Implicit Models (DDIM) de Jiaming Song, Chenlin Meng et Stefano Ermon.

L'abstract de l'article est :

Les modèles de diffusion probabiliste de débruitage (DDPM) ont atteint une génération d’images de haute qualité sans entraînement adversarial, mais ils nécessitent de simuler une chaîne de Markov sur de nombreuses étapes pour produire un échantillon. Pour accélérer l’échantillonnage, nous présentons les modèles de diffusion implicite de débruitage (DDIM), une classe plus efficace de modèles probabilistes implicites itératifs partageant la même procédure d’entraînement que les DDPM. Dans les DDPM, le processus génératif est défini comme l’inverse d’un processus de diffusion markovien. Nous construisons une classe de processus de diffusion non markoviens qui mènent au même objectif d’entraînement, mais dont le processus inverse peut être beaucoup plus rapide à échantillonner. Nous démontrons empiriquement que les DDIM peuvent produire des échantillons de haute qualité 10 à 50 fois plus rapidement en temps réel par rapport aux DDPM, nous permettent de faire un compromis entre le calcul et la qualité des échantillons, et peuvent effectuer une interpolation d’images sémantiquement significative directement dans l’espace latent.

Le code source original peut être trouvé sur ermongroup/ddim.

DDIMPipeline

classe diffusers.DDIMPipeline

< >

( unet: UNet2DModelscheduler: DDIMScheduler )

Paramètres

Pipeline pour la génération d'images.

Ce modèle hérite de DiffusionPipeline. Consultez la documentation de la classe parente pour les méthodes génériques implémentées pour tous les pipelines (téléchargement, sauvegarde, exécution sur un appareil particulier, etc.).

__call__

< >

( batch_size: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Noneeta: float = 0.0num_inference_steps: int = 50use_clipped_model_output: bool | None = Noneoutput_type: str | None = 'pil'return_dict: bool = True ) → ImagePipelineOutput or tuple

Paramètres

  • batch_size (int, facultatif, valeur par défaut 1) — Le nombre d'images à générer.
  • generator (torch.Generator, facultatif) — Un torch.Generator pour rendre la génération déterministe.
  • eta (float, facultatif, valeur par défaut 0.0) — Correspond au paramètre eta (η) de l'article DDIM. Ne s'applique qu'au DDIMScheduler et est ignoré par les autres planificateurs. Une valeur de 0 correspond à DDIM et 1 correspond à DDPM.
  • num_inference_steps (int, facultatif, valeur par défaut 50) — Le nombre d'étapes de débruitage. Un plus grand nombre d'étapes de débruitage conduit généralement à une image de meilleure qualité, au prix d'une inférence plus lente.
  • use_clipped_model_output (bool, facultatif, par défaut None) — Si True ou False, consultez la documentation de DDIMScheduler.step(). Si None, rien n’est transmis en aval au planificateur (utilisez None pour les planificateurs qui ne prennent pas en charge cet argument).
  • output_type (str, facultatif, par défaut "pil") — Le format de sortie de l'image générée. Choisissez entre "pil" (PIL.Image), "np" (np.array) ou "pt" (torch.Tensor).
  • return_dict (bool, facultatif, par défaut True) — Indique s'il faut retourner un ImagePipelineOutput plutôt qu'un simple tuple.

Retourne

ImagePipelineOutput ou tuple

Si return_dict est True, ImagePipelineOutput est retourné, sinon un tuple est retourné dont le premier élément est une liste contenant les images générées

La fonction d'appel du pipeline pour la génération.

Exemple :

>>> from diffusers import DDIMPipeline
>>> import PIL.Image
>>> import numpy as np

>>> # load model and scheduler
>>> pipe = DDIMPipeline.from_pretrained("fusing/ddim-lsun-bedroom")

>>> # run pipeline in inference (sample random noise and denoise)
>>> image = pipe(eta=0.0, num_inference_steps=50)

>>> # process image to PIL
>>> image_processed = image.cpu().permute(0, 2, 3, 1)
>>> image_processed = (image_processed + 1.0) * 127.5
>>> image_processed = image_processed.numpy().astype(np.uint8)
>>> image_pil = PIL.Image.fromarray(image_processed[0])

>>> # save image
>>> image_pil.save("test.png")

ImagePipelineOutput

classe diffusers.ImagePipelineOutput

< >

( images: list[PIL.Image.Image] | numpy.ndarray )

Paramètres

  • images (List[PIL.Image.Image] ou np.ndarray) — Liste d'images PIL débruitées de longueur batch_size ou tableau NumPy de forme (batch_size, height, width, num_channels).

Classe de sortie pour les pipelines d’images.

Update on GitHub