Diffusers documentation

Kandinsky 6 VAE

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

Kandinsky 6 VAE

Kandinsky 6는 비디오 초해상도에 인과적 3D K-VAE를, 동기화된 오디오 생성에는 MMAudio 멜 스펙트로그램 VAE와 별도의 BigVGAN MMAudioVocoder를 함께 사용합니다.

Kandinsky6SRVAE

Kandinsky6SRPipeline에서 사용하는 인과적 3D K-VAE입니다. 유한 메모리 세그먼트로 길이가 임의인 비디오를 처리하면서, 단일 비세그먼트 패스의 정확한 출력을 재현합니다.

import torch
from diffusers import Kandinsky6SRVAE

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

class 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 )

매개변수

  • in_channels (int, 기본값 3) — 픽셀 채널 수.
  • out_channels (int, 기본값 3) — 재구성된 픽셀 채널의 수입니다.
  • latent_channels (int, 기본값 64) — 잠재 채널의 수입니다.
  • encoder_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, 기본값 2) — 인코더 레벨당 잔차 블록의 수입니다. 디코더는 레벨당 하나 더 사용합니다.
  • temporal_compression_ratio (int, 기본값 4) — 시간 압축 계수입니다. log2 값만큼의 연속된 레벨도 시간을 압축합니다.
  • temporal_compression_start_level (int, 기본값 1) — 시간을 압축하는 첫 번째 레벨입니다.
  • scaling_factor (float, 기본값 0.910344) — diffusion transformer에 입력되기 전에 latents에 적용되는 스케일입니다.

Kandinsky6SRPipeline에서 비디오를 인코딩 및 디코딩하는 데 사용되는 Causal 3D K-VAE입니다.

16개의 픽셀 프레임(선행 프레임 포함)의 시간적 세그먼트로 비디오가 처리됩니다. 인과적 컨볼루션은 세그먼트 간에 패딩 상태를 유지하므로, 세그먼트화는 피크 메모리만 제한할 뿐 결과는 변경되지 않습니다.

encode

< >

( x: torch.Tensorreturn_dict: bool = True )

매개변수

  • x (torch.Tensor, shape (batch_size, channels, num_frames, height, width)) — [-1, 1] 범위의 픽셀 비디오. num_frames은 1 + k * temporal_compression_ratio여야 합니다.
  • return_dict (bool, 기본값 True) — 단순 튜플 대신 AutoencoderKLOutput을 반환할지 여부.

Encode a video into its latent distribution.

decode

< >

( z: torch.Tensorreturn_dict: bool = True )

매개변수

  • z (torch.Tensor, shape (batch_size, latent_channels, num_latent_frames, height, width)) — scaling_factor로 이미 나눈 Latents.
  • return_dict (bool, 기본값 True) — 단순 튜플 대신 ~models.autoencoder_kl.DecoderOutput를 반환할지 여부.

latents를 비디오로 디코딩합니다.

forward

< >

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

매개변수

  • sample (torch.Tensor, shape (batch_size, channels, num_frames, height, width)) — [-1, 1] 범위의 픽셀 비디오. num_frames은 1 + k * temporal_compression_ratio여야 합니다.
  • sample_posterior (bool, 선택 사항, 기본값 False) — latent posterior의 mode를 사용하는 대신 posterior에서 샘플링할지 여부.
  • return_dict (bool, 선택 사항, 기본값 True) — 일반 튜플 대신 ~models.autoencoder_kl.DecoderOutput를 반환할지 여부.
  • generator (torch.Generator, 선택 사항) — 샘플링을 결정적으로 만들기 위한 torch.Generator.

반환값

~models.autoencoder_kl.DecoderOutput 또는 tuple

return_dict가 True이면 ~models.autoencoder_kl.DecoderOutput가 반환되고, 그렇지 않으면 단순한 tuple이 반환됩니다. 그 sample은 재구성된 비디오입니다.

MMAudioVAE

sample_audio=True일 때 Kandinsky6TI2VAPipeline가 사용하는 멜 스펙트로그램 VAE입니다. decode 출력은 멜 스펙트로그램이며, 이를 MMAudioVocoder를 통해 처리하면 웨이브폼을 얻을 수 있습니다.

참조 구현은 hkchengrex/MMAudio(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
)

클래스 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 )

매개변수

  • mel_bins (int, 기본값 128) — Mel bin의 수입니다.
  • latent_channels (int, 기본값 40) — 잠재 채널의 수입니다.
  • hidden_channels (int, 기본값 512) — autoencoder의 기본 폭입니다.
  • channel_multipliers (tuple[int, ...], 기본값 (1, 2, 4)) — 오토인코더 레벨의 폭 배율입니다.
  • layers_per_block (int, 기본값 2) — 인코더 레벨당 잔차 블록 수입니다. 디코더는 레벨당 하나 더 사용합니다.
  • sample_rate (int, 기본값 44100) — Waveform 샘플링 레이트입니다.
  • n_fft (int, 기본값 2048) — 멜 프론트 엔드의 FFT 크기입니다.
  • hop_length (int, 기본값 512) — Mel 프론트 엔드의 hop length입니다. 이 VAE와 페어링된 MMAudioVocoder의 총 업샘플링 계수와 일치해야 합니다.
  • scaling_factor (float, 기본값 0.417) — Diffusion transformer에 입력되기 전에 latents에 적용되는 스케일입니다.

Kandinsky6TI2VAPipeline의 Audio VAE: 로그 멜 스펙트로그램에 대한 크기 보존 오토인코더(MMAudio, https://arxiv.org/abs/2412.15322).

encode는 웨이브폼을 잠재 분포로 변환하고, decode는 잠재 변수를 다시 멜 스펙트로그램으로 변환합니다. 이후 MMAudioVocoder가 이를 웨이브폼으로 변환합니다. 하나의 프레임은 hop_length * 2개의 샘플을 포함합니다.

encode

< >

( audio: torch.Tensorreturn_dict: bool = True )

매개변수

  • audio (torch.Tensor, shape (batch_size, num_samples)) — sample_rate에서 [-1, 1] 범위의 모노 웨이브폼.
  • return_dict (bool, 기본값 True) — 단순 튜플 대신 AutoencoderKLOutput을 반환할지 여부.

Encode a waveform into its latent distribution.

decode

< >

( z: torch.Tensorreturn_dict: bool = True )

매개변수

  • z (torch.Tensor, shape (batch_size, latent_channels, num_latent_frames)) — scaling_factor로 이미 나눈 Latents.
  • return_dict (bool, 기본값 True) — 단순 튜플 대신 ~models.autoencoder_kl.DecoderOutput를 반환할지 여부.

latents를 mel 스펙트로그램으로 디코딩합니다.

forward

< >

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

매개변수

  • sample (torch.Tensor, shape (batch_size, num_samples)) — 멜 스펙트로그램으로 인코딩 및 재구성할 sample_rate의 [-1, 1] 범위를 가진 모노 웨이브폼.
  • sample_posterior (bool, 선택 사항, 기본값 False) — latent posterior의 mode를 사용하는 대신 posterior에서 샘플링할지 여부.
  • return_dict (bool, 선택 사항, 기본값 True) — 일반 튜플 대신 ~models.autoencoder_kl.DecoderOutput를 반환할지 여부.
  • generator (torch.Generator, 선택 사항) — 샘플링을 결정적으로 만들기 위한 torch.Generator.

반환값

~models.autoencoder_kl.DecoderOutput 또는 tuple

return_dict가 True이면 ~models.autoencoder_kl.DecoderOutput가 반환되고, 그렇지 않으면 단순한 tuple이 반환됩니다. 그 sample은 (batch_size, mel_bins, num_mel_frames) 모양의 재구성된 mel spectrogram입니다.

MMAudioVocoder

NVIDIA/BigVGAN(MIT 라이선스)의 BigVGAN-v2 보코더 MMAudio 번들에서 가져왔으며, alias-free-torch(Apache License 2.0)의 anti-aliased Snake activations를 포함합니다.

클래스 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)) )

매개변수

  • num_mels (int, 기본값 128) — 입력 스펙트로그램의 멜 빈(mel bins) 수입니다. 페어링된 MMAudioVAE의 mel_bins와 일치해야 합니다.
  • upsample_initial_channel (int, 기본값 1536) — 첫 번째 레이어의 폭입니다.
  • upsample_rates (tuple[int, ...], 기본값 (8, 4, 2, 2, 2, 2)) — Vocoder 단계의 업샘플링 계수입니다. 이 값들의 곱은 전체 업샘플링 계수가 되며, 페어링된 MMAudioVAE의 hop_length와 일치해야 합니다.
  • 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))) — 잔차 블록의 dilations입니다.

https://github.com/NVIDIA/BigVGAN (MIT 라이선스)의 BigVGAN-v2 보코더와 https://github.com/junjun3518/alias-free-torch (Apache 2.0)의 anti-aliased Snake activations를 사용하여, MMAudioVAE가 디코딩한 멜 스펙트로그램을 Kandinsky6TI2VAPipeline의 웨이브폼으로 변환합니다.

forward

< >

( mel: torch.Tensorreturn_dict: bool = True )

매개변수

  • mel (torch.Tensor, shape (batch_size, num_mels, num_mel_frames)) — MMAudioVAE로 디코딩된 Mel spectrogram.
  • return_dict (bool, 기본값 True) — 단순 튜플 대신 ~models.autoencoder_kl.DecoderOutput를 반환할지 여부.
Update on GitHub