Diffusers documentation
AutoencoderKLMiniMaxH3Image
AutoencoderKLMiniMaxH3Image
Model image variational autoencoder (VAE) dengan KL loss yang digunakan dalam MiniMax-H3-Image oleh MiniMax. Model ini menggabungkan encoder causal 3D CNN dari AutoencoderKLMiniMaxH3, yang dijalankan pada satu frame, dengan decoder 2D ViT, dan melakukan kompresi spasial 16x. encode dan decode menerima dan mengembalikan tensor gambar 4D.
Model ini berbagi tiga konvensi dengan AutoencoderKLMiniMaxH3:
- Latents dinormalisasi per channel. Tidak ada
scaling_factor: sebuah pipeline meng-encode dengan(latent - latents_mean) / latents_stddan meng-decode denganlatent * latents_std + latents_mean. - Konvensi piksel adalah RGB yang dinormalisasi ImageNet pada rentang dasar
[0, 1], bukan[-1, 1]yang umum.encodemengharapkan(pixel - imagenet_mean) / imagenet_stddandecodemengembalikan nilai dalam ruang yang sama, sehingga pipeline menerapkansample * imagenet_std + imagenet_meandan membatasi ke[0, 1]sebelum pascapemrosesan. - Penyegmen spasial aktif secara bawaan. MiniMax-H3-Image dirilis dengan penyegmen diaktifkan untuk encoding dan decoding, dan gambar yang dirilis adalah hasil penyegmen yang dicampur, sehingga mematikannya akan mengubah output. Gunakan
enable_tilinguntuk mengubah geometri segmen dandisable_tilinguntuk mematikannya.
import torch
from diffusers import AutoencoderKLMiniMaxH3Image
vae = AutoencoderKLMiniMaxH3Image.from_pretrained(
"MiniMaxAI/MiniMax-H3-Image", subfolder="vae_diffusers", dtype=torch.float32
).to("cuda") # or "mps", "xpu", "cpu"AutoencoderKLMiniMaxH3Image
kelas diffusers.AutoencoderKLMiniMaxH3Image
< source >( in_channels: int = 3out_channels: int = 3latent_channels: int = 24block_out_channels: tuple[int, ...] = (128, 256, 256, 512, 512, 1024)layers_per_block: int = 2spatial_downsample_factors: tuple[int, ...] = (2, 2, 2, 2, 1, 1)temporal_downsample_factors: tuple[int, ...] = (1, 2, 2, 1, 1, 1)norm_num_groups: int = 32norm_eps: float = 1e-06spatial_padding_mode: str = 'reflect'decoder_num_layers: int = 24decoder_num_attention_heads: int = 16decoder_attention_head_dim: int = 64decoder_num_register_tokens: int = 4decoder_ffn_mult: int = 4decoder_rope_theta: float = 100.0decoder_rope_dim_ratio: float = 0.5decoder_norm_eps: float = 1e-05latents_mean: tuple[float, ...] = (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)latents_std: tuple[float, ...] = (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0) )
Model VAE dengan encoder CNN 3D kausal dan decoder ViT 2D non-kausal, yang digunakan dalam MiniMax-H3-Image. Encoder-nya adalah encoder video MiniMax-H3 yang dijalankan pada satu frame; decoder-nya adalah ViT khusus gambar.
Model ini mewarisi dari ModelMixin. Periksa dokumentasi kelas induk untuk metode generiknya yang diimplementasikan untuk semua model (seperti mengunduh atau menyimpan).
Latents dinormalisasi dengan latents_mean / latents_std per-channel, bukan dengan scaling_factor; sebuah pipeline
meng-encode dengan (latent - latents_mean) / latents_std dan meng-decode dengan latent * latents_std + latents_mean.
Konvensi piksel adalah RGB yang dinormalisasi ImageNet di atas rentang dasar [0, 1], bukan [-1, 1] yang biasa: encode mengharapkan (pixel - imagenet_mean) / imagenet_std dan decode mengembalikan nilai di ruang yang sama, sehingga pipeline harus menerapkan sample * imagenet_std + imagenet_mean (rata-rata (0.485, 0.456, 0.406), standar deviasi (0.229, 0.224, 0.225)) dan
membatasi ke [0, 1] sebelum pascapemrosesan.
Berbeda dengan sebagian besar autoencoder di pustaka ini, penataan spasial (spatial tiling) aktif secara bawaan: MiniMax-H3-Image dirilis dengan tiling diaktifkan untuk encoding dan decoding, dan gambar yang dirilis adalah hasil dari blended-tile, sehingga menonaktifkan tiling akan mengubah output. Gunakan enable_tiling untuk mengubah geometri tile, dan disable_tiling untuk menonaktifkannya.
encode
< source >( x: Tensorreturn_dict: bool = True )
Parameter
- x (
torch.Tensor) — Batch input gambar, bentuk(batch_size, in_channels, height, width). - return_dict (
bool, opsional, defaultTrue) — Apakah akan mengembalikan AutoencoderKLOutput alih-alih tuple biasa.
Enkodekan batch gambar menjadi latents.
decode
< source >( z: Tensorreturn_dict: bool = True ) → DecoderOutput or tuple
Parameter
- z (
torch.Tensor) — Batch input latents, bentuk(batch_size, latent_channels, height, width). - return_dict (
bool, opsional, defaultTrue) — Apakah akan mengembalikan DecoderOutput alih-alih tuple biasa.
Mengembalikan
DecoderOutput atau tuple
Gambar yang didekode, bentuk (batch_size, out_channels, height * spatial_compression_ratio, width * spatial_compression_ratio).
Decode sebuah batch latents.
enable_tiling
< source >( tile_sample_min_height: int | None = Nonetile_sample_min_width: int | None = Nonetile_sample_min_overlap_height: int | None = Nonetile_sample_min_overlap_width: int | None = None )
Parameter
- tile_sample_min_height (
int, opsional) — Tinggi tile dalam ruang piksel. Frame yang lebih tinggi dari nilai ini akan dipecah sepanjang dimensi tinggi. - tile_sample_min_width (
int, opsional) — Lebar tile dalam ruang piksel. Frame yang lebih lebar dari nilai ini akan dipecah sepanjang dimensi lebar. - tile_sample_min_overlap_height (
int, opsional) — Tumpang tindih minimum, dalam piksel, antara dua tile vertikal yang berurutan. - tile_sample_min_overlap_width (
int, opsional) — Tumpang tindih minimum, dalam piksel, antara dua tile horizontal yang berurutan.
Aktifkan encoding/decoding VAE bertile. Ketika opsi ini diaktifkan, VAE membagi frame menjadi tile, meng-encode atau meng-decode setiap tile secara terpisah, dan mencampur kembali bagian yang tumpang tindih secara linear. Hal ini menurunkan kebutuhan memori dan memungkinkan pemrosesan frame yang lebih besar.
forward
< source >( sample: Tensorsample_posterior: bool = Falsegenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → DecoderOutput or tuple
Parameter
- sample (
torch.Tensor) — Batch input gambar, bentuk(batch_size, in_channels, height, width). - sample_posterior (
bool, opsional, defaultFalse) — Apakah akan mengambil sampel posterior alih-alih mengambil modusnya. - generator (
torch.Generator, opsional) — Generator yang digunakan saatsample_posterior=True. - return_dict (
bool, opsional, defaultTrue) — Apakah akan mengembalikan DecoderOutput alih-alih tuple biasa.
Mengembalikan
DecoderOutput atau tuple
Gambar yang telah diproses bolak-balik, bentuk (batch_size, out_channels, height, width).
Encode lalu decode sebuah batch gambar.