Diffusers documentation

Upscaler latent

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

Upscaler latent

Le modèle de super-résolution latente Stable Diffusion a été créé par Katherine Crowson en collaboration avec Stability AI. Il est utilisé pour améliorer la résolution de l'image de sortie par un facteur de 2 (voir ce notebook de démonstration pour une illustration de l'implémentation originale).

Pensez à consulter la section Astuces de Stable Diffusion pour apprendre à explorer le compromis entre la vitesse et la qualité du planificateur, et à réutiliser efficacement les composants du pipeline !

Si vous souhaitez utiliser l’un des points de contrôle officiels pour une tâche, explorez les organisations CompVis et Stability AI sur le Hub !

StableDiffusionLatentUpscalePipeline

classe diffusers.StableDiffusionLatentUpscalePipeline

< >

( vae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizerunet: UNet2DConditionModelscheduler: EulerDiscreteScheduler )

Paramètres

Pipeline pour augmenter la résolution des images de sortie de Stable Diffusion par un facteur de 2.

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

Le pipeline hérite également des méthodes de chargement suivantes :

__call__

< >

( prompt: str | list[str] = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonenum_inference_steps: int = 75guidance_scale: float = 9.0negative_prompt: str | list[str] | None = Nonegenerator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback: typing.Optional[typing.Callable[[int, int, torch.Tensor], NoneType]] = Nonecallback_steps: int = 1 ) → StableDiffusionPipelineOutput or tuple

Paramètres

  • prompt (str ou list[str]) — Le prompt ou les prompts pour guider le redimensionnement de l'image.
  • image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image] ou list[np.ndarray]) — Image ou tenseur représentant un lot d’images à agrandir. S’il s’agit d’un tenseur, il peut s’agir soit d’une sortie latente d’un modèle Stable Diffusion, soit d’un tenseur d’image dans l’intervalle [-1, 1]. Il est considéré comme latent si image.shape[1] vaut 4 ; sinon, il est considéré comme une représentation d’image et encodé à l’aide de l’encodeur vae de ce pipeline.
  • 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.
  • guidance_scale (float, facultatif, valeur par défaut 7,5) — 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.
  • negative_prompt (str ou list[str], facultatif) — Le prompt ou les prompts pour guider ce qui ne doit pas être inclus dans la génération d’image. S’il n’est pas défini, vous devez passer negative_prompt_embeds à la place. Ignoré lorsque la guidance n’est pas utilisée (guidance_scale < 1).
  • generator (torch.Generator ou list[torch.Generator], facultatif) — Un torch.Generator pour rendre la génération déterministe.
  • latents (torch.Tensor, facultatif) — Latents bruités pré-générés, échantillonnés à partir d’une distribution gaussienne, à utiliser comme entrées pour la génération d’images. Peut servir à ajuster la même génération avec des prompts différents. S’il n’est pas fourni, un tenseur de latents est généré par échantillonnage à l’aide du generator aléatoire fourni.
  • prompt_embeds (torch.Tensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'il n'est pas fourni, les embeddings de texte sont générés à partir de l'argument d'entrée prompt.
  • negative_prompt_embeds (torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'ils ne sont pas fournis, les negative_prompt_embeds sont générés à partir de l'argument d'entrée negative_prompt.
  • pooled_prompt_embeds (torch.Tensor, facultatif) — Embeddings de texte pré-poolés pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'il n'est pas fourni, les embeddings de texte pré-poolés sont générés à partir de l'argument d'entrée prompt.
  • negative_pooled_prompt_embeds (torch.Tensor, facultatif) — Embeddings de texte négatif pré-poolés. Peut être utilisé pour ajuster facilement les entrées de texte (pondération des prompts). S'il n'est pas fourni, les negative_prompt_embeds poolés sont générés à partir de l'argument d'entrée negative_prompt.
  • output_type (str, facultatif, par défaut "pil") — Le format de sortie de l’image générée. Choisissez entre PIL.Image ou np.array.
  • return_dict (bool, facultatif, par défaut True) — Indique s'il faut retourner un StableDiffusionPipelineOutput plutôt qu'un simple tuple.
  • callback (Callable, facultatif) — Une fonction appelée toutes les callback_steps étapes pendant l'inférence. La fonction est appelée avec les arguments suivants : callback(step: int, timestep: int, latents: torch.Tensor).
  • callback_steps (int, facultatif, valeur par défaut 1) — La fréquence à laquelle la fonction callback est appelée. Si non spécifié, le callback est appelé à chaque étape.

Si return_dict est True, StableDiffusionPipelineOutput 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 StableDiffusionLatentUpscalePipeline, StableDiffusionPipeline
>>> import torch

>>> pipeline = StableDiffusionPipeline.from_pretrained(
...     "CompVis/stable-diffusion-v1-4", torch_dtype=torch.float16
... )
>>> pipeline.to("cuda")

>>> model_id = "stabilityai/sd-x2-latent-upscaler"
>>> upscaler = StableDiffusionLatentUpscalePipeline.from_pretrained(model_id, torch_dtype=torch.float16)
>>> upscaler.to("cuda")

>>> prompt = "a photo of an astronaut high resolution, unreal engine, ultra realistic"
>>> generator = torch.manual_seed(33)

>>> low_res_latents = pipeline(prompt, generator=generator, output_type="latent").images

>>> with torch.no_grad():
...     image = pipeline.decode_latents(low_res_latents)
>>> image = pipeline.numpy_to_pil(image)[0]

>>> image.save("../images/a1.png")

>>> upscaled_image = upscaler(
...     prompt=prompt,
...     image=low_res_latents,
...     num_inference_steps=20,
...     guidance_scale=0,
...     generator=generator,
... ).images[0]

>>> upscaled_image.save("../images/a2.png")

enable_sequential_cpu_offload

< >

( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = None )

Paramètres

  • gpu_id (int, facultatif) — L'identifiant de l'accélérateur à utiliser pour l'inférence. S'il n'est pas spécifié, la valeur par défaut est 0.
  • device (torch.Device ou str, facultatif, par défaut None) — Le type d’appareil PyTorch de l’accélérateur à utiliser pour l’inférence. S’il n’est pas spécifié, l’accélérateur disponible sera détecté et utilisé automatiquement.

Décharge tous les modèles sur le CPU à l'aide de 🤗 Accelerate, réduisant ainsi considérablement l'utilisation de la mémoire. Lors de l'appel, les dictionnaires d'état de tous les composants torch.nn.Module (à l'exception de ceux dans self._exclude_from_cpu_offload) sont enregistrés sur le CPU, puis déplacés vers torch.device('meta') et chargés sur l'accélérateur uniquement lorsque la méthode forward de leur sous-module spécifique est appelée. La décharge s'effectue au niveau des sous-modules. Les économies de mémoire sont supérieures à celles de enable_model_cpu_offload, mais les performances sont inférieures.

enable_attention_slicing

< >

( slice_size: str | int = 'auto' )

Paramètres

  • slice_size (str ou int, facultatif, par défaut "auto") — Lorsque la valeur est "auto", l’entrée des têtes d’attention est divisée par deux, de sorte que l’attention est calculée en deux étapes. Si la valeur est "max", la quantité maximale de mémoire est économisée en n’exécutant qu’une seule tranche à la fois. Si un nombre est fourni, le nombre de tranches utilisé est attention_head_dim // slice_size. Dans ce cas, attention_head_dim doit être un multiple de slice_size.

Active le calcul de l'attention par tranches. Lorsque cette option est activée, le module d'attention divise le tenseur d'entrée en tranches pour calculer l'attention en plusieurs étapes. Pour plus d'une tête d'attention, le calcul est effectué séquentiellement sur chaque tête. Cela est utile pour économiser de la mémoire au prix d'une légère diminution de la vitesse.

> ⚠️ N’activez pas le découpage de l’attention si vous utilisez déjà scaled_dot_product_attention (SDPA) depuis PyTorch > 2.0 ou xFormers. Ces calculs d’attention sont déjà très économes en mémoire, vous n’avez donc pas besoin d’activer > cette fonction. Si vous activez le découpage de l’attention avec SDPA ou xFormers, cela peut entraîner de fortes baisses de performances !

Exemples :

>>> import torch
>>> from diffusers import StableDiffusionPipeline

>>> pipe = StableDiffusionPipeline.from_pretrained(
...     "stable-diffusion-v1-5/stable-diffusion-v1-5",
...     dtype=torch.float16,
...     use_safetensors=True,
... )

>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> pipe.enable_attention_slicing()
>>> image = pipe(prompt).images[0]

disable_attention_slicing

< >

( )

Désactive le calcul de l'attention par tranches. Si enable_attention_slicing a été appelé précédemment, l'attention est calculée en une seule étape.

enable_xformers_memory_efficient_attention

< >

( attention_op: typing.Optional[typing.Callable] = None )

Paramètres

  • attention_op (Callable, facultatif) — Remplace l'opérateur par défaut None pour être utilisé comme argument op de la fonction memory_efficient_attention() de xFormers.

Activer l’attention efficace en mémoire de xFormers. Lorsque cette option est activée, vous devriez observer une réduction de l’utilisation de la mémoire GPU et une accélération potentielle lors de l’inférence. L’accélération lors de l’entraînement n’est pas garantie.

> ⚠️ Lorsque l'attention efficace en mémoire et l'attention par tranches sont toutes deux activées, l'attention efficace en mémoire a la > priorité.

Exemples :

>>> import torch
>>> from diffusers import DiffusionPipeline
>>> from xformers.ops import MemoryEfficientAttentionFlashAttentionOp

>>> pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1", dtype=torch.float16)
>>> pipe = pipe.to("cuda")
>>> pipe.enable_xformers_memory_efficient_attention(attention_op=MemoryEfficientAttentionFlashAttentionOp)
>>> # Workaround for not accepting attention shape using VAE for Flash Attention
>>> pipe.vae.enable_xformers_memory_efficient_attention(attention_op=None)

disable_xformers_memory_efficient_attention

< >

( )

Désactiver l'attention efficace en mémoire de xFormers.

encode_prompt

< >

( promptdevicedo_classifier_free_guidancenegative_prompt = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None )

Paramètres

  • prompt (str ou list(int)) — prompt à encoder
  • device — (torch.device) : torch device
  • do_classifier_free_guidance (bool) — indique s'il faut utiliser le classifier free guidance ou non
  • negative_prompt (str ou list[str]) — Le ou les prompts à ne pas utiliser pour guider la génération d’image. Ignoré lorsque la guidance n’est pas utilisée (c’est-à-dire ignoré si guidance_scale est inférieur à 1).
  • prompt_embeds (torch.FloatTensor, facultatif) — Embeddings de texte pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte seront générés à partir de l'argument d'entrée prompt.
  • negative_prompt_embeds (torch.FloatTensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, negative_prompt_embeds sera généré à partir de l'argument d'entrée negative_prompt.
  • pooled_prompt_embeds (torch.Tensor, facultatif) — Embeddings de texte pré-poolés pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les embeddings de texte pré-poolés seront générés à partir de l'argument d'entrée prompt.
  • negative_pooled_prompt_embeds (torch.Tensor, facultatif) — Embeddings de texte négatifs pré-générés. Peut être utilisé pour ajuster facilement les entrées de texte, par ex. le pondération des prompts. S'il n'est pas fourni, les pooled negative_prompt_embeds seront générés à partir de l'argument d'entrée negative_prompt.

Encode le prompt dans les états cachés de l'encodeur de texte.

StableDiffusionPipelineOutput

classe diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput

< >

( images: list[PIL.Image.Image] | numpy.ndarraynsfw_content_detected: list[bool] | None )

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).
  • nsfw_content_detected (list[bool]) — liste indiquant si l'image générée correspondante contient du contenu « not-safe-for-work » (nsfw) ou None si la vérification de sécurité n'a pas pu être effectuée.

Classe de sortie pour les pipelines Stable Diffusion.

Update on GitHub