Diffusers documentation

Decodificador de consistencia

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Decodificador de consistencia

El decodificador de consistencia se puede utilizar para decodificar los latentes de la UNet de desruido en el StableDiffusionPipeline. Este decodificador se introdujo en el informe técnico de DALL-E 3.

El código original se puede encontrar en openai/consistencydecoder.

Por ahora, la inferencia solo se admite para 2 iteraciones.

El pipeline no habría podido ser contribuido sin la ayuda de madebyollin y mrsteyk de este problema.

ConsistencyDecoderVAE

clase diffusers.ConsistencyDecoderVAE

< >

( scaling_factor: float = 0.18215latent_channels: int = 4sample_size: int = 32encoder_act_fn: str = 'silu'encoder_block_out_channels: tuple[int, ...] = (128, 256, 512, 512)encoder_double_z: bool = Trueencoder_down_block_types: tuple[str, ...] = ('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[int, ...] = (320, 640, 1024, 1024)decoder_down_block_types: tuple[str, ...] = ('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[str, ...] = ('ResnetUpsampleBlock2D', 'ResnetUpsampleBlock2D', 'ResnetUpsampleBlock2D', 'ResnetUpsampleBlock2D') )

El decodificador de consistencia utilizado con DALL-E 3.

Ejemplos:

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

decode

< >

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

Parámetros

  • z (torch.Tensor) — El vector latente de entrada.
  • generator (torch.Generator | None) — El generador de números aleatorios. El valor predeterminado es None.
  • return_dict (bool) — Si se devuelve la salida como un diccionario. El valor predeterminado es True.
  • num_inference_steps (int) — El número de pasos de inferencia. El valor predeterminado es 2.

Devuelve

DecoderOutput | tuple[torch.Tensor]

La salida decodificada.

Decodifica el vector latente de entrada z utilizando el modelo VAE decodificador de consistencia.

encode

< >

( x: Tensorreturn_dict: bool = True )

Parámetros

  • x (torch.Tensor) — Lote de entrada de imágenes.
  • return_dict (bool, opcional, valor predeterminado True) — Si se debe devolver un ConsistencyDecoderVAEOutput en lugar de una tupla simple.

Codifica un lote de imágenes en latentes.

forward

< >

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

Parámetros

  • sample (torch.Tensor) — Muestra de entrada.
  • sample_posterior (bool, opcional, por defecto False) — Si se muestrea de la posterior.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un DecoderOutput en lugar de una tupla simple.
  • generator (torch.Generator, opcional, valor predeterminado None) — Generador a utilizar para el muestreo.

Devuelve

DecoderOutput o tuple

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

set_default_attn_processor

< >

( )

Desactiva los procesadores de atención personalizados y establece la implementación de atención predeterminada.

tiled_encode

< >

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

Parámetros

  • x (torch.Tensor) — Lote de entrada de imágenes.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un ConsistencyDecoderVAEOutput en lugar de una tupla simple.

Devuelve

ConsistencyDecoderVAEOutput o tuple

Si `return_dict` es True, se devuelve un ConsistencyDecoderVAEOutput; de lo contrario, se devuelve un tuple simple.

Codifica un lote de imágenes usando un codificador por mosaicos.

Cuando esta opción está habilitada, el VAE dividirá el tensor de entrada en mosaicos para calcular la codificación en varios pasos. Esto es útil para mantener el uso de memoria constante independientemente del tamaño de la imagen. El resultado final de la codificación por mosaicos es diferente al de la codificación sin mosaicos, ya que cada mosaico utiliza un codificador diferente. Para evitar artefactos de mosaico, los mosaicos se superponen y se fusionan para formar una salida suave. Aún puede ver cambios del tamaño de un mosaico en la salida, pero deberían ser mucho menos notorios.

Update on GitHub