Diffusers documentation

DiT

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

DiT

Scalable Diffusion Models with Transformers (DiT) est de William Peebles et Saining Xie.

L'abstract de l'article est :

Nous explorons une nouvelle classe de modèles de diffusion basés sur l’architecture transformer. Nous entraînons des modèles de diffusion latente d’images, en remplaçant l’architecture U-Net couramment utilisée par un transformer qui opère sur des patches latents. Nous analysons la scalabilité de nos Diffusion Transformers (DiTs) à travers le prisme de la complexité du passage avant, mesurée en Gflops. Nous constatons que les DiTs ayant un nombre de Gflops plus élevé — grâce à une profondeur/largeur de transformer accrue ou à un nombre plus important de jetons d’entrée — présentent systématiquement un FID plus bas. En plus de posséder de bonnes propriétés de scalabilité, nos plus grands modèles DiT-XL/2 surpassent tous les modèles de diffusion antérieurs sur les benchmarks ImageNet 512x512 et 256x256 conditionnés par classe, atteignant un FID de pointe de 2,27 sur ce dernier.

Le code source original peut être trouvé sur facebookresearch/dit.

Pensez à consulter le guide des Schedulers pour apprendre à explorer le compromis entre la vitesse et la qualité du scheduler, et à consulter la section réutilisation des composants entre les pipelines pour apprendre à charger efficacement les mêmes composants dans plusieurs pipelines.

DiTPipeline

classe diffusers.DiTPipeline

< >

( transformer: DiTTransformer2DModelvae: AutoencoderKLscheduler: KarrasDiffusionSchedulersid2label: dict[int, str] | None = None )

Paramètres

  • transformer (DiTTransformer2DModel) — Une classe DiTTransformer2DModel conditionnée pour débruyer les latents d'image encodés. Initialement publiée sous le nom Transformer2DModel dans la configuration, mais cette incohérence peut être ignorée.
  • vae (AutoencoderKL) — Modèle de Variational Auto-Encoder (VAE) pour encoder et décoder des images vers et depuis des représentations latentes.
  • scheduler (DDIMScheduler) — Un planificateur à utiliser en combinaison avec transformer pour débruyer les latents d'image encodés.

Pipeline de génération d’images basé sur un backbone Transformer plutôt qu’un UNet.

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__

< >

( class_labels: list[int]guidance_scale: float = 4.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonenum_inference_steps: int = 50output_type: str | None = 'pil'return_dict: bool = True ) → ImagePipelineOutput or tuple

Paramètres

  • class_labels (list[int]) — liste des étiquettes de classes ImageNet pour les images à générer.
  • guidance_scale (float, facultatif, valeur par défaut 4.0) — Une valeur de guidance scale plus élevée encourage le modèle à générer des images étroitement liées au prompt texte, au détriment de la qualité de l'image. Le guidance scale est activé lorsque guidance_scale > 1.
  • generator (torch.Generator, facultatif) — Un torch.Generator pour rendre la génération déterministe.
  • num_inference_steps (int, facultatif, valeur par défaut 250) — 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.
  • 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.

Exemples :

>>> from diffusers import DiTPipeline, DPMSolverMultistepScheduler
>>> import torch

>>> pipe = DiTPipeline.from_pretrained("facebook/DiT-XL-2-256", torch_dtype=torch.float16)
>>> pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
>>> pipe = pipe.to("cuda")

>>> # pick words from Imagenet class labels
>>> pipe.labels  # to print all available words

>>> # pick words that exist in ImageNet
>>> words = ["white shark", "umbrella"]

>>> class_ids = pipe.get_label_ids(words)

>>> generator = torch.manual_seed(33)
>>> output = pipe(class_labels=class_ids, num_inference_steps=25, generator=generator)

>>> image = output.images[0]  # label 'white shark'

get_label_ids

< >

( label: str | list[str] ) → list of int

Paramètres

  • label (str ou dict de str) — Chaînes de caractères d'étiquettes à mapper vers les identifiants de classes.

Retourne

list de int

Identifiants de classes à traiter par le pipeline.

Associer les chaînes de caractères des étiquettes d’ImageNet aux identifiants de classes correspondants.

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