Diffusers documentation

Decodificador de Consistência

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

Decodificador de Consistência

O decodificador de consistência pode ser usado para decodificar os latentes da UNet de desruidamento no StableDiffusionPipeline. Este decodificador foi introduzido no relatório técnico do DALL-E 3.

O código original pode ser encontrado em openai/consistencydecoder.

No momento, a inferência é suportada apenas para 2 iterações.

O pipeline não poderia ter sido contribuído sem a ajuda de madebyollin e mrsteyk a partir desta 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') )

O decodificador de consistência usado com o DALL-E 3.

Exemplos:

>>> 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) — O vetor latente de entrada.
  • generator (torch.Generator | None) — O gerador de números aleatórios. O padrão é None.
  • return_dict (bool) — Se deve retornar a saída como um dicionário. O padrão é True.
  • num_inference_steps (int) — O número de etapas de inferência. O padrão é 2.

Retorna

DecoderOutput | tuple[torch.Tensor]

A saída decodificada.

Decodifica o vetor latente de entrada z usando o modelo VAE do decodificador de consistência.

encode

< >

( x: Tensorreturn_dict: bool = True )

Parâmetros

  • x (torch.Tensor) — Lote de entrada de imagens.
  • return_dict (bool, opcional, padrão True) — Se deve retornar um ConsistencyDecoderVAEOutput em vez de uma tupla simples.

Codifica um lote de imagens em latentes.

forward

< >

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

Parâmetros

  • sample (torch.Tensor) — Amostra de entrada.
  • sample_posterior (bool, opcional, padrão False) — Se deve amostrar da posterior.
  • return_dict (bool, opcional, padrão True) — Se deve ou não retornar um DecoderOutput em vez de uma tupla simples.
  • generator (torch.Generator, opcional, padrão None) — Gerador a ser usado para a amostragem.

Retorna

DecoderOutput ou tuple

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

set_default_attn_processor

< >

( )

Desativa os processadores de atenção personalizados e define a implementação padrão de atenção.

tiled_encode

< >

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

Parâmetros

  • x (torch.Tensor) — Lote de entrada de imagens.
  • return_dict (bool, opcional, padrão True) — Se deve ou não retornar um ConsistencyDecoderVAEOutput em vez de uma tupla simples.

Retorna

ConsistencyDecoderVAEOutput ou tuple

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

Codifique um lote de imagens usando um codificador em mosaico.

Quando essa opção está habilitada, o VAE divide o tensor de entrada em blocos para calcular a codificação em várias etapas. Isso é útil para manter o uso de memória constante, independentemente do tamanho da imagem. O resultado final da codificação em blocos é diferente da codificação sem blocos, pois cada bloco usa um codificador diferente. Para evitar artefatos de blocos, os blocos se sobrepõem e são mesclados para formar uma saída suave. Você ainda pode observar variações do tamanho do bloco na saída, mas elas devem ser muito menos perceptíveis.

Update on GitHub