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

El modelo VQ-VAE se introdujo en Neural Discrete Representation Learning de Aaron van den Oord, Oriol Vinyals y Koray Kavukcuoglu. El modelo se utiliza en 🤗 Diffusers para decodificar representaciones latentes en imágenes. A diferencia de AutoencoderKL, el VQModel funciona en un espacio latente cuantizado.

El resumen del artículo es:

Aprender representaciones útiles sin supervisión sigue siendo un desafío clave en el aprendizaje automático. En este artículo, proponemos un modelo generativo simple pero potente que aprende dichas representaciones discretas. Nuestro modelo, el Vector Quantised-Variational AutoEncoder (VQ-VAE), difiere de los VAE en dos aspectos clave: la red codificadora emite códigos discretos, en lugar de continuos; y la distribución a priori se aprende en lugar de ser estática. Para aprender una representación latente discreta, incorporamos ideas de la cuantización de vectores (VQ). El uso del método VQ permite al modelo evitar problemas de “colapso posterior” —donde los latentes se ignoran cuando se emparejan con un decodificador autoregresivo potente—, típicamente observados en el marco de los VAE. Al emparejar estas representaciones con una distribución a priori autoregresiva, el modelo puede generar imágenes, videos y voz de alta calidad, así como realizar conversiones de hablante de alta calidad y aprendizaje no supervisado de fonemas, lo que proporciona evidencia adicional de la utilidad de las representaciones aprendidas.

VQModel

clase 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, valor predeterminado 3) — Número de canales en la imagen de entrada.
  • out_channels (int, opcional, valor predeterminado 3) — Número de canales en la salida.
  • down_block_types (tuple[str], opcional, por defecto ("DownEncoderBlock2D",)) — tupla de tipos de bloques de muestreo descendente.
  • up_block_types (tuple[str], opcional, por defecto ("UpDecoderBlock2D",)) — tupla de tipos de bloques de remuestreo ascendente.
  • block_out_channels (tuple[int], opcional, por defecto (64,)) — tupla de canales de salida de los bloques.
  • layers_per_block (int, opcional, valor predeterminado 1) — Número de capas por bloque.
  • act_fn (str, opcional, por defecto "silu") — La función de activación a utilizar.
  • latent_channels (int, opcional, valor predeterminado 3) — Número de canales en el espacio latente.
  • sample_size (int, opcional, valor predeterminado 32) — Tamaño de la entrada de muestra.
  • num_vq_embeddings (int, opcional, valor predeterminado 256) — Número de vectores del libro de códigos en el VQ-VAE.
  • norm_num_groups (int, opcional, valor predeterminado 32) — Número de grupos para las capas de normalización.
  • vq_embed_dim (int, opcional) — Dimensión oculta de los vectores del libro de códigos en el VQ-VAE.
  • scaling_factor (float, opcional, valor predeterminado 0.18215) — La desviación estándar por componente del espacio latente entrenado, calculada utilizando el primer lote del conjunto de entrenamiento. Se utiliza para escalar el espacio latente para que tenga varianza unitaria durante el entrenamiento del modelo de difusión. Los latentes se escalan con la fórmula z = z * scaling_factor antes de ser pasados al modelo de difusión. Al decodificar, los latentes se escalan de vuelta a la escala original con la fórmula: z = 1 / scaling_factor * z. Para más detalles, consulte las secciones 4.3.2 y D.1 del artículo High-Resolution Image Synthesis with Latent Diffusion Models.
  • norm_type (str, opcional, por defecto "group") — Tipo de capa de normalización a utilizar. Puede ser "group" o "spatial".

Un modelo VQ-VAE para decodificar representaciones latentes.

Este modelo hereda de ModelMixin. Consulta la documentación de la clase superior para sus métodos genéricos implementados para todos los modelos (como la descarga o el guardado).

forward

< >

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

Parámetros

Devuelve

VQEncoderOutput o tuple

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

El método forward de VQModel.

VQEncoderOutput

clase diffusers.models.autoencoders.vq_model.VQEncoderOutput

< >

( latents: Tensor )

Parámetros

  • latents (torch.Tensor de forma (batch_size, num_channels, height, width)) — La muestra de salida codificada de la última capa del modelo.

Salida del método de codificación de VQModel.

Update on GitHub