Diffusers documentation

VAEs do Kandinsky 6

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

VAEs do Kandinsky 6

O Kandinsky 6 usa um K-VAE 3D causal para super-resolução de vídeo e o VAE de mel-espectrograma do MMAudio, emparelhado com um MMAudioVocoder BigVGAN separado, para geração de áudio sincronizado.

Kandinsky6SRVAE

O K-VAE 3D causal usado pelo Kandinsky6SRPipeline. Ele processa vídeos de comprimento arbitrário em segmentos de memória limitada, reproduzindo a saída exata de uma única passagem não segmentada.

import torch
from diffusers import Kandinsky6SRVAE

vae = Kandinsky6SRVAE.from_pretrained(
    "kandinskylab/Kandinsky-6.0-VSR-5s-Diffusers", subfolder="vae", torch_dtype=torch.bfloat16
)

classe diffusers.Kandinsky6SRVAE

< >

( in_channels: int = 3out_channels: int = 3latent_channels: int = 64encoder_block_out_channels: tuple[int, ...] = (16, 128, 256, 512, 1024)decoder_block_out_channels: tuple[int, ...] = (16, 256, 512, 1024, 2048)layers_per_block: int = 2temporal_compression_ratio: int = 4temporal_compression_start_level: int = 1scaling_factor: float = 0.910344004631042 )

Parâmetros

  • in_channels (int, padrão 3) — Número de canais de pixels.
  • out_channels (int, padrão 3) — Número de canais de pixels reconstruídos.
  • latent_channels (int, padrão 64) — Número de canais latentes.
  • encoder_block_out_channels (tuple[int, ...], padrão (16, 128, 256, 512, 1024)) — Largura de saída dos blocos residuais em cada nível do codificador; todos os níveis, exceto o último, reduzem pela metade o tamanho espacial e dobram a largura ao avançar para o próximo nível.
  • decoder_block_out_channels (tuple[int, ...], padrão (16, 256, 512, 1024, 2048)) — Largura de saída dos blocos residuais em cada nível do decodificador.
  • layers_per_block (int, padrão 2) — Número de blocos residuais por nível do codificador; o decodificador usa um a mais por nível.
  • temporal_compression_ratio (int, padrão 4) — Fator de compressão temporal; log2 de seus níveis consecutivos também comprime o tempo.
  • temporal_compression_start_level (int, padrão 1) — Primeiro nível que comprime o tempo.
  • scaling_factor (float, padrão 0.910344) — Escala aplicada aos latentes antes de entrarem no difusor transformador.

Causal 3D K-VAE usado pelo Kandinsky6SRPipeline para codificar e decodificar vídeo.

Os vídeos são processados em segmentos temporais de 16 quadros de pixels (mais o quadro inicial). As convoluções causais mantêm seu estado de preenchimento entre os segmentos, de modo que a segmentação apenas limita a memória de pico e não altera o resultado.

encode

< >

( x: torch.Tensorreturn_dict: bool = True )

Parâmetros

  • x (torch.Tensor de forma (batch_size, channels, num_frames, height, width)) — Vídeo em pixels em [-1, 1]. num_frames deve ser 1 + k * temporal_compression_ratio.
  • return_dict (bool, padrão True) — Se deve retornar um AutoencoderKLOutput em vez de uma tupla simples.

Codifique um vídeo em sua distribuição latente.

decode

< >

( z: torch.Tensorreturn_dict: bool = True )

Parâmetros

  • z (torch.Tensor de forma (batch_size, latent_channels, num_latent_frames, height, width)) — Latentes, já divididos por scaling_factor.
  • return_dict (bool, padrão True) — Se deve retornar um ~models.autoencoder_kl.DecoderOutput em vez de uma tupla simples.

Decodifique os latentes em um vídeo.

forward

< >

( sample: torch.Tensorsample_posterior: bool = Falsereturn_dict: bool = Truegenerator: torch.Generator | None = None ) → ~models.autoencoder_kl.DecoderOutput or tuple

Parâmetros

  • sample (torch.Tensor de forma (batch_size, channels, num_frames, height, width)) — Vídeo em pixels em [-1, 1]. num_frames deve ser 1 + k * temporal_compression_ratio.
  • sample_posterior (bool, opcional, padrão False) — Se deve amostrar da posterior latente em vez de usar seu modo.
  • return_dict (bool, opcional, padrão True) — Se deve retornar um ~models.autoencoder_kl.DecoderOutput em vez de uma tupla simples.
  • generator (torch.Generator, opcional) — Um torch.Generator para tornar a amostragem determinística.

Retorna

~models.autoencoder_kl.DecoderOutput ou tuple

Se return_dict for True, um ~models.autoencoder_kl.DecoderOutput é retornado; caso contrário, uma tuple simples é retornada. Seu sample é o vídeo reconstruído.

MMAudioVAE

O VAE de espectrograma mel usado por Kandinsky6TI2VAPipeline quando sample_audio=True. A saída de decode é um espectrograma mel; passe-o por MMAudioVocoder para obter uma forma de onda.

A implementação de referência pode ser encontrada em hkchengrex/MMAudio (licença MIT).

import torch
from diffusers import MMAudioVAE

audio_vae = MMAudioVAE.from_pretrained(
    "kandinskylab/Kandinsky-6.0-Pro-distill-5s-Diffusers", subfolder="audio_vae", torch_dtype=torch.bfloat16
)

classe diffusers.MMAudioVAE

< >

( mel_bins: int = 128latent_channels: int = 40hidden_channels: int = 512channel_multipliers: tuple[int, ...] = (1, 2, 4)layers_per_block: int = 2sample_rate: int = 44100n_fft: int = 2048hop_length: int = 512scaling_factor: float = 0.417 )

Parâmetros

  • mel_bins (int, padrão 128) — Número de bins mel.
  • latent_channels (int, padrão 40) — Número de canais latentes.
  • hidden_channels (int, padrão 512) — Largura base do autoencoder.
  • channel_multipliers (tuple[int, ...], padrão (1, 2, 4)) — Multiplicadores de largura dos níveis do autoencoder.
  • layers_per_block (int, padrão 2) — Blocos residuais por nível do codificador; o decodificador usa um a mais por nível.
  • sample_rate (int, padrão 44100) — Taxa de amostragem da forma de onda.
  • n_fft (int, padrão 2048) — Tamanho da FFT do front end mel.
  • hop_length (int, padrão 512) — Comprimento do salto do front end mel. Deve corresponder ao fator total de upsampling do MMAudioVocoder com o qual este VAE é pareado.
  • scaling_factor (float, padrão 0.417) — Escala aplicada aos latentes antes de entrarem no difusor transformador.

VAE de áudio de Kandinsky6TI2VAPipeline: um autoencoder que preserva a magnitude sobre espectrogramas log-mel (MMAudio, https://arxiv.org/abs/2412.15322).

encode converte uma forma de onda em uma distribuição latente; decode converte os latentes de volta em um espectrograma mel, que o MMAudioVocoder então converte em uma forma de onda. Um quadro latente cobre hop_length * 2 amostras.

encode

< >

( audio: torch.Tensorreturn_dict: bool = True )

Parâmetros

  • audio (torch.Tensor de forma (batch_size, num_samples)) — Forma de onda mono em [-1, 1] em sample_rate.
  • return_dict (bool, padrão True) — Se deve retornar um AutoencoderKLOutput em vez de uma tupla simples.

Codifique uma forma de onda em sua distribuição latente.

decode

< >

( z: torch.Tensorreturn_dict: bool = True )

Parâmetros

  • z (torch.Tensor de forma (batch_size, latent_channels, num_latent_frames)) — Latentes, já divididos por scaling_factor.
  • return_dict (bool, padrão True) — Se deve retornar um ~models.autoencoder_kl.DecoderOutput em vez de uma tupla simples.

Decodifique os latentes em um espectrograma mel.

forward

< >

( sample: torch.Tensorsample_posterior: bool = Falsereturn_dict: bool = Truegenerator: torch.Generator | None = None ) → ~models.autoencoder_kl.DecoderOutput or tuple

Parâmetros

  • sample (torch.Tensor de forma (batch_size, num_samples)) — Forma de onda mono em [-1, 1] em sample_rate para codificar e reconstruir como um espectrograma mel.
  • sample_posterior (bool, opcional, padrão False) — Se deve amostrar da posterior latente em vez de usar seu modo.
  • return_dict (bool, opcional, padrão True) — Se deve retornar um ~models.autoencoder_kl.DecoderOutput em vez de uma tupla simples.
  • generator (torch.Generator, opcional) — Um torch.Generator para tornar a amostragem determinística.

Retorna

~models.autoencoder_kl.DecoderOutput ou tuple

Se return_dict for True, um ~models.autoencoder_kl.DecoderOutput é retornado; caso contrário, uma tuple simples é retornada. Seu sample é o espectrograma mel reconstruído, com forma (batch_size, mel_bins, num_mel_frames).

MMAudioVocoder

Adaptado dos bundles do vocoder BigVGAN-v2 do MMAudio, que por sua vez é derivado de NVIDIA/BigVGAN (licença MIT), com as ativações Snake anti-alias de alias-free-torch (Apache License 2.0).

classe diffusers.MMAudioVocoder

< >

( num_mels: int = 128upsample_initial_channel: int = 1536upsample_rates: tuple[int, ...] = (8, 4, 2, 2, 2, 2)upsample_kernel_sizes: tuple[int, ...] = (16, 8, 4, 4, 4, 4)resblock_kernel_sizes: tuple[int, ...] = (3, 7, 11)resblock_dilation_sizes: tuple[tuple[int, ...], ...] = ((1, 3, 5), (1, 3, 5), (1, 3, 5)) )

Parâmetros

  • num_mels (int, padrão 128) — Número de bins mel do espectrograma de entrada. Deve corresponder ao mel_bins do MMAudioVAE correspondente.
  • upsample_initial_channel (int, padrão 1536) — Largura da primeira camada.
  • upsample_rates (tuple[int, ...], padrão (8, 4, 2, 2, 2, 2)) — Fatores de upsampling dos estágios do vocoder. O produto deles é o fator total de upsampling e deve corresponder ao hop_length do MMAudioVAE correspondente.
  • upsample_kernel_sizes (tuple[int, ...], padrão (16, 8, 4, 4, 4, 4)) — Tamanhos dos kernels de convolução transposta dos estágios do vocoder.
  • resblock_kernel_sizes (tuple[int, ...], padrão (3, 7, 11)) — Tamanhos dos kernels dos blocos residuais.
  • resblock_dilation_sizes (tuple[tuple[int, ...], ...], padrão ((1, 3, 5), (1, 3, 5), (1, 3, 5))) — Dilatações dos blocos residuais.

Vocoder BigVGAN-v2 (https://github.com/NVIDIA/BigVGAN, licença MIT) com as ativações Snake anti-alias de https://github.com/junjun3518/alias-free-torch (Apache 2.0), convertendo os espectrogramas mel decodificados por MMAudioVAE em formas de onda para Kandinsky6TI2VAPipeline.

forward

< >

( mel: torch.Tensorreturn_dict: bool = True )

Parâmetros

  • mel (torch.Tensor de forma (batch_size, num_mels, num_mel_frames)) — Espectrograma Mel, conforme decodificado por MMAudioVAE.
  • return_dict (bool, padrão True) — Se deve retornar um ~models.autoencoder_kl.DecoderOutput em vez de uma tupla simples.
Update on GitHub