Diffusers documentation
VAEs de Kandinsky 6
VAEs de Kandinsky 6
Kandinsky 6 utiliza un K-VAE 3D causal para la superresolución de video y el VAE de mel-espectrograma de MMAudio, junto con un MMAudioVocoder BigVGAN independiente, para la generación de audio sincronizado.
Kandinsky6SRVAE
El K-VAE causal 3D utilizado por Kandinsky6SRPipeline. Procesa videos de longitud arbitraria en segmentos de memoria acotada, reproduciendo la salida exacta de una única pasada no segmentada.
import torch
from diffusers import Kandinsky6SRVAE
vae = Kandinsky6SRVAE.from_pretrained(
"kandinskylab/Kandinsky-6.0-VSR-5s-Diffusers", subfolder="vae", torch_dtype=torch.bfloat16
)clase diffusers.Kandinsky6SRVAE
< source >( 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, por defecto3) — Número de canales de píxeles. - out_channels (
int, por defecto3) — Número de canales de píxeles reconstruidos. - latent_channels (
int, por defecto64) — Número de canales latentes. - encoder_block_out_channels (
tuple[int, ...], por defecto(16, 128, 256, 512, 1024)) — Ancho de salida de los bloques residuales en cada nivel del codificador; cada nivel, excepto el último, reduce a la mitad el tamaño espacial y duplica el ancho al pasar al siguiente nivel. - decoder_block_out_channels (
tuple[int, ...], por defecto(16, 256, 512, 1024, 2048)) — Ancho de salida de los bloques residuales en cada nivel del decodificador. - layers_per_block (
int, por defecto2) — Número de bloques residuales por nivel del codificador; el decodificador usa uno más por nivel. - temporal_compression_ratio (
int, por defecto4) — Factor de compresión temporal;log2de sus niveles consecutivos también comprime el tiempo. - temporal_compression_start_level (
int, por defecto1) — Primer nivel que comprime el tiempo. - scaling_factor (
float, por defecto0.910344) — Escala aplicada a los latentes antes de que entren en el transformador de difusión.
Causal 3D K-VAE utilizado por Kandinsky6SRPipeline para codificar y decodificar video.
Los videos se procesan en segmentos temporales de 16 fotogramas de píxeles (más el fotograma inicial). Las convoluciones causales conservan su estado de relleno entre segmentos, por lo que la segmentación solo limita la memoria máxima y no cambia el resultado.
encode
< source >( x: torch.Tensorreturn_dict: bool = True )
Parámetros
- x (
torch.Tensorde forma(batch_size, channels, num_frames, height, width)) — Vídeo de píxeles en[-1, 1].num_framesdebe ser1 + k * temporal_compression_ratio. - return_dict (
bool, por defectoTrue) — Si se debe devolver un AutoencoderKLOutput en lugar de una tupla simple.
Codifica un video en su distribución latente.
decode
< source >( z: torch.Tensorreturn_dict: bool = True )
Decodifica los latentes en un video.
forward
< source >( sample: torch.Tensorsample_posterior: bool = Falsereturn_dict: bool = Truegenerator: torch.Generator | None = None ) → ~models.autoencoder_kl.DecoderOutput or tuple
Parámetros
- sample (
torch.Tensorde forma(batch_size, channels, num_frames, height, width)) — Vídeo de píxeles en[-1, 1].num_framesdebe ser1 + k * temporal_compression_ratio. - sample_posterior (
bool, opcional, valor predeterminadoFalse) — Si se debe muestrear de la posterior latente en lugar de usar su modo. - return_dict (
bool, opcional, valor predeterminadoTrue) — Si se debe devolver un~models.autoencoder_kl.DecoderOutputen lugar de una tupla simple. - generator (
torch.Generator, opcional) — Untorch.Generatorpara hacer que la muestreo sea determinista.
Devuelve
~models.autoencoder_kl.DecoderOutput o tuple
Si return_dict es True, se devuelve un ~models.autoencoder_kl.DecoderOutput, en caso contrario se devuelve una tuple simple. Su sample es el video reconstruido.
MMAudioVAE
El VAE de espectrograma mel utilizado por Kandinsky6TI2VAPipeline cuando sample_audio=True. Su salida de decode es un espectrograma mel; pásalo por MMAudioVocoder para obtener una forma de onda.
La implementación de referencia se encuentra en hkchengrex/MMAudio (licencia 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
)clase diffusers.MMAudioVAE
< source >( 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, por defecto128) — Número de bins mel. - latent_channels (
int, por defecto40) — Número de canales latentes. - hidden_channels (
int, por defecto512) — Ancho base del autoencoder. - channel_multipliers (
tuple[int, ...], por defecto(1, 2, 4)) — Multiplicadores de anchura de los niveles del autoencoder. - layers_per_block (
int, por defecto2) — Bloques residuales por nivel del codificador; el decodificador usa uno más por nivel. - sample_rate (
int, por defecto44100) — Tasa de muestreo de la forma de onda. - n_fft (
int, por defecto2048) — Tamaño de la FFT del frente mel. - hop_length (
int, por defecto512) — Longitud del salto del frente mel. Debe coincidir con el factor total de remuestreo ascendente del MMAudioVocoder con el que se empareja este VAE. - scaling_factor (
float, por defecto0.417) — Escala aplicada a los latentes antes de que entren en el transformador de difusión.
VAE de audio de Kandinsky6TI2VAPipeline: un autoencoder que preserva la magnitud sobre espectrogramas log-mel (MMAudio, https://arxiv.org/abs/2412.15322).
encode convierte una forma de onda en una distribución latente; decode convierte los latentes de vuelta en un espectrograma mel, que MMAudioVocoder luego convierte en una forma de onda. Un marco latente cubre hop_length * 2 muestras.
encode
< source >( audio: torch.Tensorreturn_dict: bool = True )
Parámetros
- audio (
torch.Tensorde forma(batch_size, num_samples)) — Onda mono en[-1, 1]asample_rate. - return_dict (
bool, por defectoTrue) — Si se debe devolver un AutoencoderKLOutput en lugar de una tupla simple.
Codifica una forma de onda en su distribución latente.
decode
< source >( z: torch.Tensorreturn_dict: bool = True )
Decodifica los latentes en un espectrograma mel.
forward
< source >( sample: torch.Tensorsample_posterior: bool = Falsereturn_dict: bool = Truegenerator: torch.Generator | None = None ) → ~models.autoencoder_kl.DecoderOutput or tuple
Parámetros
- sample (
torch.Tensorde forma(batch_size, num_samples)) — Onda mono en[-1, 1]asample_ratepara codificar y reconstruir como un espectrograma mel. - sample_posterior (
bool, opcional, valor predeterminadoFalse) — Si se debe muestrear de la posterior latente en lugar de usar su modo. - return_dict (
bool, opcional, valor predeterminadoTrue) — Si se debe devolver un~models.autoencoder_kl.DecoderOutputen lugar de una tupla simple. - generator (
torch.Generator, opcional) — Untorch.Generatorpara hacer que la muestreo sea determinista.
Devuelve
~models.autoencoder_kl.DecoderOutput o tuple
Si return_dict es True, se devuelve un ~models.autoencoder_kl.DecoderOutput; en caso contrario, se devuelve una tuple simple. Su sample es el espectrograma mel reconstruido de forma (batch_size, mel_bins, num_mel_frames).
MMAudioVocoder
Adaptado de los paquetes de vocoder MMAudio de BigVGAN-v2, a su vez de NVIDIA/BigVGAN (licencia MIT), con las activaciones Snake anti-alias de alias-free-torch (Apache License 2.0).
clase diffusers.MMAudioVocoder
< source >( 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, por defecto128) — Número de bins mel del espectrograma de entrada. Debe coincidir conmel_binsdel MMAudioVAE emparejado. - upsample_initial_channel (
int, por defecto1536) — Ancho de la primera capa. - upsample_rates (
tuple[int, ...], por defecto(8, 4, 2, 2, 2, 2)) — Factores de remuestreo ascendente de las etapas del vocoder. Su producto es el factor total de remuestreo ascendente y debe coincidir con elhop_lengthdel MMAudioVAE emparejado. - upsample_kernel_sizes (
tuple[int, ...], por defecto(16, 8, 4, 4, 4, 4)) — Tamaños de los núcleos de las convoluciones transpuestas de las etapas del vocoder. - resblock_kernel_sizes (
tuple[int, ...], por defecto(3, 7, 11)) — Tamaños de los núcleos de los bloques residuales. - resblock_dilation_sizes (
tuple[tuple[int, ...], ...], por defecto((1, 3, 5), (1, 3, 5), (1, 3, 5))) — Dilaciones de los bloques residuales.
Vocoder BigVGAN-v2 (https://github.com/NVIDIA/BigVGAN, licencia MIT) con las activaciones Snake anti-alias de https://github.com/junjun3518/alias-free-torch (Apache 2.0), que convierte los espectrogramas mel que decodifica MMAudioVAE en formas de onda para Kandinsky6TI2VAPipeline.
forward
< source >( mel: torch.Tensorreturn_dict: bool = True )
Parámetros
- mel (
torch.Tensorde forma(batch_size, num_mels, num_mel_frames)) — Espectrograma Mel, tal como lo decodifica MMAudioVAE. - return_dict (
bool, por defectoTrue) — Si se debe devolver un~models.autoencoder_kl.DecoderOutputen lugar de una tupla simple.