Diffusers documentation
AutoencoderKLMiniMaxH3
AutoencoderKLMiniMaxH3
MiniMax tarafından MiniMax-H3'te kullanılan, KL kaybına sahip video varyasyonel otoenkoder (VAE) modeli. Neden-sonuç 3D CNN kodlayıcıyı neden-sonuç olmayan ViT çözücüyle eşleştirir ve uzaysal olarak 16x, zamansal olarak 4x sıkıştırma uygular.
Kütüphanedeki çoğu oto-kodlayıcıdan onu ayıran üç şey var:
- Latentler kanal başına normalize edilir.
scaling_factoryoktur: bir pipeline(latent - latents_mean) / latents_stdile kodlar velatent * latents_std + latents_meanile çözer. - Piksel konvansiyonu,
[0, 1]taban aralığı üzerinde ImageNet-normalize edilmiş RGB'dir, alışıldık[-1, 1]değildir.encode,(pixel - imagenet_mean) / imagenet_stdbekler vedecodedeğerleri aynı uzayda döndürür; bu nedenle bir pipeline, ön işlemden öncesample * imagenet_std + imagenet_meanuygular ve[0, 1]aralığına kırpma yapar. - Uzamsal karolar varsayılan olarak açıktır. MiniMax-H3, hem kodlama hem de çözümlüme için karolama etkinleştirilmiş olarak yayınlanmış ve yayınlanan kareler karışık karolara ait olduğundan, bu özelliği kapatmak çıktıyı değiştirir. Karo geometrisini değiştirmek için
enable_tiling, kapatmak içindisable_tilingkullanın.
Zamansal geometri, clip_length (kodlayıcı parçası başına 17 piksel karesi) ve token_drop (her kodlamada atılan 3 sonda latent karesi) tarafından sabitlenir; bu nedenle 17 * n + 5 piksel karesi, 5 * n + 2 latent karesine eşlenir.
import torch
from diffusers import AutoencoderKLMiniMaxH3
vae = AutoencoderKLMiniMaxH3.from_pretrained(
"MiniMaxAI/MiniMax-H3", subfolder="vae", dtype=torch.float32
).to("cuda") # or "mps", "xpu", "cpu"AutoencoderKLMiniMaxH3
sınıf diffusers.AutoencoderKLMiniMaxH3
< source >( in_channels: int = 3out_channels: int = 3latent_channels: int = 24block_out_channels: tuple = (128, 256, 256, 512, 512, 1024)layers_per_block: int = 2spatial_downsample_factors: tuple = (2, 2, 2, 2, 1, 1)temporal_downsample_factors: tuple = (1, 2, 2, 1, 1, 1)norm_num_groups: int = 32norm_eps: float = 1e-06spatial_padding_mode: str = 'reflect'decoder_num_layers: int = 36decoder_num_attention_heads: int = 32decoder_attention_head_dim: int = 64decoder_num_register_tokens: int = 4decoder_ffn_mult: int = 4decoder_rope_theta: float = 100.0decoder_rope_dim_ratio: float = 0.75decoder_norm_eps: float = 1e-05clip_length: int = 17token_drop: int = 3latents_mean: tuple = (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 = (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) )
MiniMax-H3'te kullanılan, nedensel 3D CNN kodlayıcıya ve nedensiz ViT çözücüye sahip bir VAE modeli.
Bu model ModelMixin sınıfından devralır. Tüm modeller için uygulanan genel yöntemleri (indirme veya kaydetme gibi) görmek için üst sınıfın belgelendirmesine bakın.
Latentler, scaling_factor yerine kanal başına latents_mean / latents_std ile normalize edilir; bir pipeline (latent - latents_mean) / latents_std ile kodlar ve latent * latents_std + latents_mean ile çözer.
Piksel konvansiyonu, alışıldık [-1, 1] aralığı yerine [0, 1] taban aralığı üzerinde ImageNet-normalize edilmiş RGB'dir: encode, (pixel - imagenet_mean) / imagenet_std bekler ve decode değerleri aynı uzayda döndürür; bu nedenle bir pipeline, ön işlemden önce sample * imagenet_std + imagenet_mean (ortalama (0.485, 0.456, 0.406), standart sapma (0.229, 0.224, 0.225)) uygulayıp [0, 1] aralığına kırpmalıdır.
Zamansal geometri, clip_length (kodlayıcı parçası başına 17 piksel karesi) ve token_drop (kodlama başına atılan 3 sonda latent karesi) tarafından sabitlenir: 17 * n + 5 piksel karesi, 5 * n + 2 latent karesine eşlenir.
Kütüphanedeki çoğu otoenkoderin aksine, uzamsal karolama varsayılan olarak açıktır: MiniMax-H3, hem kodlama hem de çözümlendirme için karolama etkinleştirilerek yayımlanmıştır ve yayımlanan kareler karışık karolama olanlarıdır; bu nedenle karolamayı devre dışı bırakmak çıktıyı değiştirir. Karolama geometrisini değiştirmek için enable_tiling, kapatmak için disable_tiling kullanın.
encode
< source >( x: Tensorreturn_dict: bool = True )
Parametreler
- x (
torch.Tensor) — Girdi video partisi, şekli(batch_size, in_channels, num_frames, height, width). - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Düz bir tuple yerine AutoencoderKLOutput döndürülüp döndürülmemesi.
Bir video grubunu latentlere kodlayın.
decode
< source >( z: Tensorreturn_dict: bool = True ) → DecoderOutput or tuple
Parametreler
- z (
torch.Tensor) — Gizil video giriş partisi, şekli(batch_size, latent_channels, num_latent_frames, height, width). - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Düz bir tuple yerine DecoderOutput döndürülüp döndürülmemesi.
Dönüş değeri
DecoderOutput veya tuple
Çözümlenmiş videolar, şekil (batch_size, out_channels, num_frames, height, width).
Bir latent video grubunu çözümlen.
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 )
Parametreler
- tile_sample_min_height (
int, isteğe bağlı) — Piksel uzayındaki karoların yüksekliği. Bu değerin daha yüksek olan kareler, yükseklik boyutu boyunca bölünür. - tile_sample_min_width (
int, isteğe bağlı) — Piksel uzayındaki karoların genişliği. Bu değerden daha geniş olan kareler, genişlik boyutu boyunca bölünür. - tile_sample_min_overlap_height (
int, isteğe bağlı) — İki ardışık dikey karo arasındaki minimum örtüşme, piksel cinsinden. - tile_sample_min_overlap_width (
int, isteğe bağlı) — İki ardışık yatay karo arasındaki minimum örtüşme, piksel cinsinden.
Döşemeli VAE kodlama/çözme işlemini etkinleştirir. Bu seçenek etkinleştirildiğinde, VAE kareleri döşemelere ayırır, her döşemeyi ayrı ayrı kodlar veya çözer ve örtüşen kısımları doğrusal olarak birleştirir. Bu, bellek gereksinimini azaltır ve daha büyük karelerin işlenmesine olanak tanır.
forward
< source >( sample: Tensorsample_posterior: bool = Falsegenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → DecoderOutput or tuple
Parametreler
- sample (
torch.Tensor) — Giriş video partisi, şekli(batch_size, in_channels, num_frames, height, width). - sample_posterior (
bool, isteğe bağlı, varsayılanFalse) — Modunu almak yerine posterior dağılımdan örneklem alınıp alınmayacağını belirtir. - generator (
torch.Generator, isteğe bağlı) —sample_posterior=Trueolduğunda kullanılan üreteç. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Düz bir tuple yerine DecoderOutput döndürülüp döndürülmemesi.
Dönüş değeri
DecoderOutput veya tuple
Geri dönen videolar, şekil (batch_size, out_channels, num_frames, height, width).
Bir video grubunu kodlayıp ardından çözümlen.