Diffusers documentation

VQModel

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

VQModel

O modelo VQ-VAE foi introduzido em Neural Discrete Representation Learning por Aaron van den Oord, Oriol Vinyals e Koray Kavukcuoglu. O modelo é usado no 🤗 Diffusers para decodificar representações latentes em imagens. Diferentemente do AutoencoderKL, o VQModel opera em um espaço latente quantizado.

O resumo do artigo é:

Aprender representações úteis sem supervisão continua sendo um desafio fundamental no aprendizado de máquina. Neste artigo, propomos um modelo generativo simples, porém poderoso, que aprende essas representações discretas. Nosso modelo, o Vector Quantised-Variational AutoEncoder (VQ-VAE), difere dos VAEs em dois aspectos principais: a rede codificadora produz códigos discretos, em vez de contínuos; e a priori é aprendida, em vez de ser estática. Para aprender uma representação latente discreta, incorporamos ideias da quantização vetorial (VQ). O uso do método VQ permite que o modelo evite problemas de “colapso posterior” — em que os latentes são ignorados quando pareados com um decodificador autoregressivo poderoso —, geralmente observados no framework VAE. Ao parear essas representações com uma priori autoregressiva, o modelo pode gerar imagens, vídeos e fala de alta qualidade, além de realizar conversão de falantes de alta qualidade e aprendizado não supervisionado de fonemas, fornecendo mais evidências da utilidade das representações aprendidas.

VQModel

classe diffusers.VQModel

< >

( in_channels: int = 3out_channels: int = 3down_block_types: tuple = ('DownEncoderBlock2D',)up_block_types: tuple = ('UpDecoderBlock2D',)block_out_channels: tuple = (64,)layers_per_block: int = 1act_fn: str = 'silu'latent_channels: int = 3sample_size: int = 32num_vq_embeddings: int = 256norm_num_groups: int = 32vq_embed_dim: int | None = Nonescaling_factor: float = 0.18215norm_type: str = 'group'mid_block_add_attention = Truelookup_from_codebook = Falseforce_upcast = False )

Parâmetros

  • in_channels (int, opcional, padrão 3) — Número de canais na imagem de entrada.
  • out_channels (int, opcional, padrão 3) — Número de canais na saída.
  • down_block_types (tuple[str], opcional, padrão ("DownEncoderBlock2D",)) — tupla de tipos de blocos de downsampling.
  • up_block_types (tuple[str], opcional, padrão ("UpDecoderBlock2D",)) — tupla de tipos de blocos de upsample.
  • block_out_channels (tuple[int], opcional, padrão (64,)) — tupla de canais de saída dos blocos.
  • layers_per_block (int, opcional, padrão 1) — Número de camadas por bloco.
  • act_fn (str, opcional, padrão "silu") — A função de ativação a ser utilizada.
  • latent_channels (int, opcional, padrão 3) — Número de canais no espaço latente.
  • sample_size (int, opcional, padrão 32) — Tamanho da amostra de entrada.
  • num_vq_embeddings (int, opcional, padrão 256) — Número de vetores do codebook no VQ-VAE.
  • norm_num_groups (int, opcional, padrão 32) — Número de grupos para as camadas de normalização.
  • vq_embed_dim (int, opcional) — Dimensão oculta dos vetores do codebook no VQ-VAE.
  • scaling_factor (float, opcional, padrão 0.18215) — O desvio padrão por componente do espaço latente treinado, calculado usando o primeiro lote do conjunto de treinamento. Isso é usado para escalar o espaço latente para ter variância unitária durante o treinamento do modelo de difusão. Os latentes são escalados com a fórmula z = z * scaling_factor antes de serem passados para o modelo de difusão. Ao decodificar, os latentes são escalados de volta para a escala original com a fórmula: z = 1 / scaling_factor * z. Para mais detalhes, consulte as seções 4.3.2 e D.1 do artigo High-Resolution Image Synthesis with Latent Diffusion Models.
  • norm_type (str, opcional, padrão "group") — Tipo de camada de normalização a ser usada. Pode ser "group" ou "spatial".

Um modelo VQ-VAE para decodificar representações latentes.

Este modelo herda de ModelMixin. Consulte a documentação da superclasse para seus métodos genéricos implementados para todos os modelos (como download ou salvamento).

forward

< >

( sample: Tensorreturn_dict: bool = True ) → VQEncoderOutput or tuple

Parâmetros

Retorna

VQEncoderOutput ou tuple

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

O método forward do VQModel.

VQEncoderOutput

classe diffusers.models.autoencoders.vq_model.VQEncoderOutput

< >

( latents: Tensor )

Parâmetros

  • latents (torch.Tensor de forma (batch_size, num_channels, height, width)) — A amostra de saída codificada da última camada do modelo.

Saída do método de codificação do VQModel.

Update on GitHub