Diffusers documentation
Kandinsky 6 VAE
Kandinsky 6 VAE
Kandinsky 6 sử dụng K-VAE 3D nhân quả cho siêu phân giải video và VAE mel-spectrogram của MMAudio, kết hợp với MMAudioVocoder BigVGAN riêng biệt, để tạo âm thanh đồng bộ.
Kandinsky6SRVAE
3D K-VAE nhân quả được sử dụng bởi Kandinsky6SRPipeline. Nó xử lý các video có độ dài tùy ý trong các phân đoạn có bộ nhớ giới hạn trong khi tái tạo chính xác kết quả đầu ra của một lần chạy duy nhất, không phân đoạn.
import torch
from diffusers import Kandinsky6SRVAE
vae = Kandinsky6SRVAE.from_pretrained(
"kandinskylab/Kandinsky-6.0-VSR-5s-Diffusers", subfolder="vae", torch_dtype=torch.bfloat16
)lớp 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 )
Tham số
- in_channels (
int, mặc định là3) — Số lượng kênh pixel. - out_channels (
int, mặc định là3) — Số lượng kênh pixel được tái tạo. - latent_channels (
int, mặc định là64) — Số lượng kênh tiềm ẩn. - encoder_block_out_channels (
tuple[int, ...], mặc định là(16, 128, 256, 512, 1024)) — Độ rộng đầu ra của các khối residual ở mỗi cấp encoder; mọi cấp trừ cấp cuối cùng sẽ giảm một nửa kích thước không gian và tăng gấp đôi độ rộng khi chuyển sang cấp tiếp theo. - decoder_block_out_channels (
tuple[int, ...], mặc định là(16, 256, 512, 1024, 2048)) — Độ rộng đầu ra của các khối dư (residual blocks) ở mỗi cấp độ của bộ giải mã (decoder). - layers_per_block (
int, mặc định là2) — Số lượng khối residual ở mỗi cấp encoder; decoder sử dụng thêm một khối ở mỗi cấp. - temporal_compression_ratio (
int, mặc định là4) — Hệ số nén theo thời gian;log2của nó các mức liên tiếp cũng nén thời gian. - temporal_compression_start_level (
int, mặc định là1) — Cấp độ đầu tiên nén thời gian. - scaling_factor (
float, mặc định là0.910344) — Hệ số tỷ lệ được áp dụng cho các latents trước khi chúng đi vào diffusion transformer.
Causal 3D K-VAE được Kandinsky6SRPipeline sử dụng để mã hóa và giải mã video.
Video được xử lý theo các đoạn thời gian gồm 16 khung hình pixel (cộng thêm khung hình đầu tiên). Các phép tích chập nhân quả (causal convolutions) mang trạng thái đệm (padding state) của chúng giữa các đoạn, do đó việc phân đoạn chỉ giới hạn bộ nhớ đỉnh (peak memory) và không làm thay đổi kết quả.
encode
< source >( x: torch.Tensorreturn_dict: bool = True )
Tham số
- x (
torch.Tensorcó shape(batch_size, channels, num_frames, height, width)) — Video pixel trong[-1, 1].num_framesnên là1 + k * temporal_compression_ratio. - return_dict (
bool, mặc định làTrue) — Có nên trả về một AutoencoderKLOutput thay vì một tuple thông thường hay không.
Mã hóa một video thành phân phối ẩn của nó.
decode
< source >( z: torch.Tensorreturn_dict: bool = True )
Giải mã các biến ẩn thành một video.
forward
< source >( sample: torch.Tensorsample_posterior: bool = Falsereturn_dict: bool = Truegenerator: torch.Generator | None = None ) → ~models.autoencoder_kl.DecoderOutput or tuple
Tham số
- sample (
torch.Tensorcó hình dạng(batch_size, channels, num_frames, height, width)) — Video pixel trong[-1, 1].num_framesnên là1 + k * temporal_compression_ratio. - sample_posterior (
bool, tùy chọn, mặc định làFalse) — Có lấy mẫu từ posterior tiềm ẩn thay vì sử dụng mode của nó hay không. - return_dict (
bool, tùy chọn, mặc định làTrue) — Có nên trả về một~models.autoencoder_kl.DecoderOutputthay vì một tuple thông thường hay không. - generator (
torch.Generator, tùy chọn) — Mộttorch.Generatorđể làm cho việc lấy mẫu trở nên tất định.
Trả về
~models.autoencoder_kl.DecoderOutput hoặc tuple
Nếu return_dict là True, một ~models.autoencoder_kl.DecoderOutput sẽ được trả về, ngược lại một tuple thông thường sẽ được trả về. sample của nó là video đã được tái tạo.
MMAudioVAE
VAE mel-spectrogram được sử dụng bởi Kandinsky6TI2VAPipeline khi sample_audio=True. Đầu ra của decode là một mel spectrogram; hãy truyền nó qua MMAudioVocoder để nhận được waveform.
Bản tham chiếu có thể được tìm thấy tại hkchengrex/MMAudio (giấy phép 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
)lớp 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 )
Tham số
- mel_bins (
int, mặc định là128) — Số lượng mel bins. - latent_channels (
int, mặc định là40) — Số lượng kênh tiềm ẩn. - hidden_channels (
int, mặc định là512) — Chiều rộng cơ bản của autoencoder. - channel_multipliers (
tuple[int, ...], mặc định là(1, 2, 4)) — Hệ số nhân chiều rộng của các cấp autoencoder. - layers_per_block (
int, mặc định là2) — Số khối residual ở mỗi cấp encoder; decoder sử dụng thêm một khối ở mỗi cấp. - sample_rate (
int, mặc định là44100) — Tần số lấy mẫu của dạng sóng. - n_fft (
int, mặc định là2048) — Kích thước FFT của phần đầu mel. - hop_length (
int, mặc định là512) — Chiều dài bước nhảy của bộ tiền xử lý mel. Phải khớp với hệ số tăng mẫu tổng của MMAudioVocoder mà VAE này được ghép cặp. - scaling_factor (
float, mặc định là0.417) — Hệ số tỷ lệ được áp dụng cho các latents trước khi chúng đi vào diffusion transformer.
Audio VAE của Kandinsky6TI2VAPipeline: một autoencoder bảo toàn độ lớn trên phổ log-mel (MMAudio, https://arxiv.org/abs/2412.15322).
encode chuyển đổi waveform thành phân phối latent; decode chuyển đổi latent trở lại thành mel spectrogram, sau đó MMAudioVocoder chuyển đổi thành waveform. Một khung latent bao phủ hop_length * 2 mẫu.
encode
< source >( audio: torch.Tensorreturn_dict: bool = True )
Tham số
- audio (
torch.Tensorcó hình dạng(batch_size, num_samples)) — Đường sóng đơn trong[-1, 1]ởsample_rate. - return_dict (
bool, mặc định làTrue) — Có nên trả về một AutoencoderKLOutput thay vì một tuple thông thường hay không.
Mã hóa một dạng sóng thành phân phối ẩn của nó.
decode
< source >( z: torch.Tensorreturn_dict: bool = True )
Giải mã các biến ẩn thành phổ mel.
forward
< source >( sample: torch.Tensorsample_posterior: bool = Falsereturn_dict: bool = Truegenerator: torch.Generator | None = None ) → ~models.autoencoder_kl.DecoderOutput or tuple
Tham số
- sample (
torch.Tensorcó hình dạng(batch_size, num_samples)) — Đường sóng mono trong[-1, 1]ởsample_rateđể mã hóa và tái tạo thành phổ mel. - sample_posterior (
bool, tùy chọn, mặc định làFalse) — Có lấy mẫu từ posterior tiềm ẩn thay vì sử dụng mode của nó hay không. - return_dict (
bool, tùy chọn, mặc định làTrue) — Có nên trả về một~models.autoencoder_kl.DecoderOutputthay vì một tuple thông thường hay không. - generator (
torch.Generator, tùy chọn) — Mộttorch.Generatorđể làm cho việc lấy mẫu trở nên tất định.
Trả về
~models.autoencoder_kl.DecoderOutput hoặc tuple
Nếu return_dict là True, một ~models.autoencoder_kl.DecoderOutput sẽ được trả về, ngược lại một tuple thông thường sẽ được trả về. sample của nó là phổ mel được tái tạo với hình dạng (batch_size, mel_bins, num_mel_frames).
MMAudioVocoder
Được điều chỉnh từ các gói vocoder MMAudio của BigVGAN-v2, vốn được lấy từ NVIDIA/BigVGAN (giấy phép MIT), cùng với các hàm kích hoạt Snake chống aliasing của alias-free-torch (Giấy phép Apache 2.0).
lớp 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)) )
Tham số
- num_mels (
int, mặc định là128) — Số lượng mel bins của spectrogram đầu vào. Phải khớp vớimel_binscủa MMAudioVAE tương ứng. - upsample_initial_channel (
int, mặc định là1536) — Chiều rộng của lớp đầu tiên. - upsample_rates (
tuple[int, ...], mặc định là(8, 4, 2, 2, 2, 2)) — Hệ số lấy mẫu lại (upsampling) của các giai đoạn trong vocoder. Tích của chúng là hệ số lấy mẫu lại tổng thể và phải khớp vớihop_lengthcủa MMAudioVAE tương ứng. - upsample_kernel_sizes (
tuple[int, ...], mặc định là(16, 8, 4, 4, 4, 4)) — Kích thước kernel của các lớp transposed-convolution trong các giai đoạn của vocoder. - resblock_kernel_sizes (
tuple[int, ...], mặc định là(3, 7, 11)) — Kích thước kernel của các khối dư (residual blocks). - resblock_dilation_sizes (
tuple[tuple[int, ...], ...], mặc định là((1, 3, 5), (1, 3, 5), (1, 3, 5))) — Các hệ số giãn nở (dilation) của các khối dư (residual blocks).
Vocoder BigVGAN-v2 (https://github.com/NVIDIA/BigVGAN, giấy phép MIT) với các hàm kích hoạt Snake khử răng cưa từ https://github.com/junjun3518/alias-free-torch (Apache 2.0), chuyển đổi các phổ mel mà MMAudioVAE giải mã thành dạng sóng cho Kandinsky6TI2VAPipeline.
forward
< source >( mel: torch.Tensorreturn_dict: bool = True )
Tham số
- mel (
torch.Tensorcó hình dạng(batch_size, num_mels, num_mel_frames)) — Biến phổ Mel, được giải mã bởi MMAudioVAE. - return_dict (
bool, mặc định làTrue) — Có nên trả về một~models.autoencoder_kl.DecoderOutputthay vì một tuple thông thường hay không.