Diffusers documentation

Décodeur de cohérence

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

Décodeur de cohérence

Le décodeur de cohérence peut être utilisé pour décoder les latents issus du UNet de débruitage dans le StableDiffusionPipeline. Ce décodeur a été introduit dans le rapport technique de DALL-E 3.

Le code source original peut être trouvé sur openai/consistencydecoder.

L'inférence n'est actuellement prise en charge que pour 2 itérations.

Le pipeline n'aurait pas pu être contribué sans l'aide de madebyollin et mrsteyk de cet issue.

ConsistencyDecoderVAE

classe diffusers.ConsistencyDecoderVAE

< >

( scaling_factor: float = 0.18215latent_channels: int = 4sample_size: int = 32encoder_act_fn: str = 'silu'encoder_block_out_channels: tuple = (128, 256, 512, 512)encoder_double_z: bool = Trueencoder_down_block_types: tuple = ('DownEncoderBlock2D', 'DownEncoderBlock2D', 'DownEncoderBlock2D', 'DownEncoderBlock2D')encoder_in_channels: int = 3encoder_layers_per_block: int = 2encoder_norm_num_groups: int = 32encoder_out_channels: int = 4decoder_add_attention: bool = Falsedecoder_block_out_channels: tuple = (320, 640, 1024, 1024)decoder_down_block_types: tuple = ('ResnetDownsampleBlock2D', 'ResnetDownsampleBlock2D', 'ResnetDownsampleBlock2D', 'ResnetDownsampleBlock2D')decoder_downsample_padding: int = 1decoder_in_channels: int = 7decoder_layers_per_block: int = 3decoder_norm_eps: float = 1e-05decoder_norm_num_groups: int = 32decoder_num_train_timesteps: int = 1024decoder_out_channels: int = 6decoder_resnet_time_scale_shift: str = 'scale_shift'decoder_time_embedding_type: str = 'learned'decoder_up_block_types: tuple = ('ResnetUpsampleBlock2D', 'ResnetUpsampleBlock2D', 'ResnetUpsampleBlock2D', 'ResnetUpsampleBlock2D') )

Le décodeur de cohérence utilisé avec DALL-E 3.

Exemples :

>>> import torch
>>> from diffusers import StableDiffusionPipeline, ConsistencyDecoderVAE

>>> vae = ConsistencyDecoderVAE.from_pretrained("openai/consistency-decoder", torch_dtype=torch.float16)
>>> pipe = StableDiffusionPipeline.from_pretrained(
...     "stable-diffusion-v1-5/stable-diffusion-v1-5", vae=vae, torch_dtype=torch.float16
... ).to("cuda")

>>> image = pipe("horse", generator=torch.manual_seed(0)).images[0]
>>> image

décoder

< >

( z: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = Truenum_inference_steps: int = 2 ) → DecoderOutput | tuple[torch.Tensor]

Paramètres

  • z (torch.Tensor) — Le vecteur latent d'entrée.
  • generator (torch.Generator | None) — Le générateur de nombres aléatoires. La valeur par défaut est None.
  • return_dict (bool) — Indique s'il faut renvoyer la sortie sous forme de dictionnaire. La valeur par défaut est True.
  • num_inference_steps (int) — Le nombre d'étapes d'inférence. La valeur par défaut est 2.

Retourne

DecoderOutput | tuple[torch.Tensor]

La sortie décodée.

Décode le vecteur latent d’entrée z à l’aide du modèle VAE du décodeur de cohérence.

encode

< >

( x: Tensorreturn_dict: bool = True )

Paramètres

  • x (torch.Tensor) — Lot d'images en entrée.
  • return_dict (bool, facultatif, par défaut True) — Indique s'il faut retourner un ConsistencyDecoderVAEOutput au lieu d'un simple tuple.

Encode un lot d'images en latents.

forward

< >

( sample: Tensorsample_posterior: bool = Falsereturn_dict: bool = Truegenerator: typing.Optional[torch.Generator] = None ) → DecoderOutput or tuple

Paramètres

  • sample (torch.Tensor) — Échantillon d'entrée.
  • sample_posterior (bool, facultatif, par défaut False) — Indique s'il faut échantillonner à partir de la postérieure.
  • return_dict (bool, facultatif, par défaut True) — Indique s'il faut retourner un DecoderOutput plutôt qu'un simple tuple.
  • generator (torch.Generator, facultatif, par défaut None) — Générateur à utiliser pour l'échantillonnage.

Retourne

DecoderOutput ou tuple

If return_dict is True, a DecoderOutput is returned, otherwise a plain tuple is returned.

set_default_attn_processor

< >

( )

Désactive les processeurs d'attention personnalisés et définit l'implémentation d'attention par défaut.

tiled_encode

< >

( x: Tensorreturn_dict: bool = True ) → ConsistencyDecoderVAEOutput or tuple

Paramètres

  • x (torch.Tensor) — Lot d'images en entrée.
  • return_dict (bool, facultatif, par défaut True) — Indique s'il faut retourner un ConsistencyDecoderVAEOutput au lieu d'un simple tuple.

Retourne

ConsistencyDecoderVAEOutput ou tuple

If return_dict is True, a ConsistencyDecoderVAEOutput is returned, otherwise a plain tuple is returned.

Encoder un lot d'images à l'aide d'un encodeur tuilé.

Lorsque cette option est activée, le VAE divise le tenseur d’entrée en tuiles pour calculer l’encodage en plusieurs étapes. Cela est utile pour maintenir une utilisation de la mémoire constante, indépendamment de la taille de l’image. Le résultat final de l’encodage par tuiles diffère de celui de l’encodage non tuilé, car chaque tuile utilise un encodeur différent. Pour éviter les artefacts de tuilage, les tuiles se chevauchent et sont fusionnées pour former une sortie lisse. Vous pouvez encore observer des variations de la taille des tuiles dans la sortie, mais elles devraient être beaucoup moins perceptibles.

Update on GitHub