Diffusers documentation
Decodificador de consistencia
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
< source >( 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]
>>> imagedecode
< source >( 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
< source >( x: Tensorreturn_dict: bool = True )
Codifica un lote de imágenes en latentes.
forward
< source >( 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 defectoFalse) — Si se muestrea de la posterior. - return_dict (
bool, opcional, valor predeterminadoTrue) — Indica si se debe devolver unDecoderOutputen lugar de una tupla simple. - generator (
torch.Generator, opcional, valor predeterminadoNone) — 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.
Desactiva los procesadores de atención personalizados y establece la implementación de atención predeterminada.
tiled_encode
< source >( x: Tensorreturn_dict: bool = True ) → ConsistencyDecoderVAEOutput or tuple
Parámetros
- x (
torch.Tensor) — Lote de entrada de imágenes. - return_dict (
bool, opcional, valor predeterminadoTrue) — Indica si se debe devolver unConsistencyDecoderVAEOutputen 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.