Diffusers documentation
VQModel
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
< 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, 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 predeterminado1) — 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 predeterminado3) — Número de canales en el espacio latente. - sample_size (
int, opcional, valor predeterminado32) — Tamaño de la entrada de muestra. - num_vq_embeddings (
int, opcional, valor predeterminado256) — Número de vectores del libro de códigos en el VQ-VAE. - norm_num_groups (
int, opcional, valor predeterminado32) — 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 predeterminado0.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órmulaz = z * scaling_factorantes 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
< source >( sample: Tensorreturn_dict: bool = True ) → VQEncoderOutput or tuple
Parámetros
- sample (
torch.Tensor) — Muestra de entrada. - return_dict (
bool, opcional, valor predeterminadoTrue) — Indica si se debe devolver un models.autoencoders.vq_model.VQEncoderOutput en lugar de una tupla simple.
Devuelve
VQEncoderOutput o tuple
Si return_dict es True, se devuelve un VQEncoderOutput; en caso contrario, se devuelve una tuple simple.
El método forward de VQModel.
VQEncoderOutput
clase diffusers.models.autoencoders.vq_model.VQEncoderOutput
< source >( latents: Tensor )
Salida del método de codificación de VQModel.