Diffusers documentation
VQModel
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
< source >( 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ão1) — 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ão3) — Número de canais no espaço latente. - sample_size (
int, opcional, padrão32) — Tamanho da amostra de entrada. - num_vq_embeddings (
int, opcional, padrão256) — Número de vetores do codebook no VQ-VAE. - norm_num_groups (
int, opcional, padrão32) — 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ão0.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órmulaz = z * scaling_factorantes 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
< source >( sample: Tensorreturn_dict: bool = True ) → VQEncoderOutput or tuple
Parâmetros
- sample (
torch.Tensor) — Amostra de entrada. - return_dict (
bool, opcional, padrãoTrue) — Se deve ou não retornar um models.autoencoders.vq_model.VQEncoderOutput em vez de uma tupla simples.
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
< source >( latents: Tensor )
Saída do método de codificação do VQModel.