Buckets:
Kandinsky 6 VAE
Kandinsky 6는 비디오 초해상도에 인과적 3D K-VAE를, 동기화된 오디오 생성에는 MMAudio 멜 스펙트로그램 VAE와 별도의 BigVGAN MMAudioVocoder를 함께 사용합니다.
Kandinsky6SRVAE[[diffusers.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
)
diffusers.Kandinsky6SRVAE[[diffusers.Kandinsky6SRVAE]]
diffusers.Kandinsky6SRVAE(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, temporal_compression_start_level: int = 1, scaling_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[[diffusers.Kandinsky6SRVAE.encode]]
encode(x: torch.Tensor, return_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[[diffusers.Kandinsky6SRVAE.decode]]
decode(z: torch.Tensor, return_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[[diffusers.Kandinsky6SRVAE.forward]]
forward(sample: torch.Tensor, sample_posterior: bool = False, return_dict: bool = True, generator: torch.Generator | None = None)
매개변수:
sample (torch.Tensor, shape (batch_size, channels, num_frames, height, width)) : [-1, 1] 범위의 픽셀 비디오. num_frames은 1 + k * temporal_compression_ratio여야 합니다.
sample_posterior (bool, 선택 사항, 기본값 False) : 모드의 값을 사용하는 대신 잠재적 후분포에서 샘플링할지 여부.
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[[diffusers.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[[diffusers.MMAudioVAE]]
diffusers.MMAudioVAE(mel_bins: int = 128, latent_channels: int = 40, hidden_channels: int = 512, channel_multipliers: tuple[int, ...] = (1, 2, 4), layers_per_block: int = 2, sample_rate: int = 44100, n_fft: int = 2048, hop_length: int = 512, scaling_factor: float = 0.417)
매개변수:
mel_bins (int, 기본값 128) : mel bin의 수.
latent_channels (int, 기본값 40) : 잠재 채널의 수.
hidden_channels (int, 기본값 512) : 오토인코더의 기본 폭입니다.
channel_multipliers (tuple[int, ...], 기본값 (1, 2, 4)) : autoencoder 레벨의 폭 배율입니다.
layers_per_block (int, 기본값 2) : 인코더 레벨당 잔차 블록 수; 디코더는 레벨당 하나 더 사용합니다.
sample_rate (int, 기본값 44100) : 웨이브폼 샘플링 주파수.
n_fft (int, 기본값 2048) : mel 프론트 엔드의 FFT 크기입니다.
hop_length (int, 기본값 512) : mel 프론트 엔드의 홉 길이입니다. 이 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[[diffusers.MMAudioVAE.encode]]
encode(audio: torch.Tensor, return_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[[diffusers.MMAudioVAE.decode]]
decode(z: torch.Tensor, return_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를 반환할지 여부.
반환값:
(batch_size, mel_bins, num_mel_frames) 형태의 멜 스펙트로그램으로, MMAudioVocoder에 바로 사용할 수 있는 상태입니다.
latents를 mel 스펙트로그램으로 디코딩합니다.
forward[[diffusers.MMAudioVAE.forward]]
forward(sample: torch.Tensor, sample_posterior: bool = False, return_dict: bool = True, generator: torch.Generator | None = None)
매개변수:
sample (torch.Tensor, shape (batch_size, num_samples)) : sample_rate에서 mel spectrogram으로 인코딩 및 재구성하기 위한 [-1, 1] 범위의 단일 채널 웨이브폼.
sample_posterior (bool, 선택 사항, 기본값 False) : 모드의 값을 사용하는 대신 잠재적 후분포에서 샘플링할지 여부.
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[[diffusers.MMAudioVocoder]]
NVIDIA/BigVGAN(MIT 라이선스)의 BigVGAN-v2 보코더 MMAudio 번들에서 가져왔으며, alias-free-torch(Apache License 2.0)의 anti-aliased Snake activations를 포함합니다.
diffusers.MMAudioVocoder[[diffusers.MMAudioVocoder]]
diffusers.MMAudioVocoder(num_mels: int = 128, upsample_initial_channel: int = 1536, upsample_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)) : vocoder 단계의 transposed-convolution 커널 크기입니다.
resblock_kernel_sizes (tuple[int, ...], 기본값 (3, 7, 11)) : 잔차 블록의 커널 크기입니다.
resblock_dilation_sizes (tuple[tuple[int, ...], ...], 기본값은 ((1, 3, 5), (1, 3, 5), (1, 3, 5))) : 잔차 블록의 dilations입니다.
MIT 라이선스의 BigVGAN-v2 보코더(https://github.com/NVIDIA/BigVGAN)와 Apache 2.0 라이선스의 https://github.com/junjun3518/alias-free-torch에 포함된 anti-aliased Snake 활성화 함수를 사용하여, MMAudioVAE가 디코딩한 멜 스펙트로그램을 Kandinsky6TI2VAPipeline의 웨이브폼으로 변환합니다.
forward[[diffusers.MMAudioVocoder.forward]]
forward(mel: torch.Tensor, return_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를 반환할지 여부.
반환값:
[-1, 1] 범위의 (batch_size, 1, num_samples) 형태의 웨이브폼.
Xet Storage Details
- Size:
- 14.4 kB
- Xet hash:
- 227fbfbf66f54f2ea8dc0c78bad564840128304e0f67655b228d6b85f2d4da7a
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.