Diffusers documentation

AutoencoderKLMiniMaxH3

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

AutoencoderKLMiniMaxH3

MiniMax による MiniMax-H3 で使用される、KL 損失付きの動画変分オートエンコーダ (VAE) モデルです。因果的な 3D CNN エンコーダと非因果的な ViT デコーダを組み合わせ、空間方向に 16 倍、時間方向に 4 倍に圧縮します。

このモデルをライブラリ内の他の大多数のオートエンコーダーと区別する3つの点があります。

  • Latents はチャンネルごとに正規化されます。 scaling_factor は存在せず、パイプラインは (latent - latents_mean) / latents_std でエンコードし、latent * latents_std + latents_mean でデコードします。
  • ピクセルの規約は、[0, 1]を基準範囲とするImageNet正規化済みRGBです。通常の[-1, 1]ではありません。encodeは(pixel - imagenet_mean) / imagenet_stdを期待し、decodeは同じ空間の値を返します。そのため、パイプラインはsample * imagenet_std + imagenet_meanを適用し、後処理の前に[0, 1]にクランプします。
  • 空間タイルリングはデフォルトで有効です。MiniMax-H3はエンコードとデコードの両方でタイルリングを有効にしてリリースされており、公開されているフレームはブレンド済みタイルのものです。そのため、無効にすると出力が変わります。タイルのジオメトリを変更するにはenable_tilingを、無効にするにはdisable_tilingを使用してください。

時間方向の幾何構造は、clip_length(エンコーダチャンクあたり17ピクセルフレーム)とtoken_drop(エンコードごとに末尾の潜在フレームを3フレーム破棄)によって固定されており、17 * n + 5ピクセルフレームが5 * n + 2潜在フレームに対応します。

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

class diffusers.AutoencoderKLMiniMaxH3

< >

( 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で使用される、因果的な3D CNNエンコーダーと非因果的なViTデコーダーを備えたVAEモデル。

このモデルは ModelMixin を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存など)については、スーパークラスのドキュメントを参照してください。

Latents は scaling_factor ではなく、チャンネルごとの latents_mean / latents_std で正規化されます。パイプラインは (latent - latents_mean) / latents_std でエンコードし、latent * latents_std + latents_mean でデコードします。

ピクセルの規約は、通常の[-1, 1]ではなく、[0, 1]を基準範囲とするImageNet正規化済みRGBです。encodeは(pixel - imagenet_mean) / imagenet_stdを期待し、decodeは同じ空間の値を返すため、パイプラインはsample * imagenet_std + imagenet_mean(平均(0.485, 0.456, 0.406)、標準偏差(0.229, 0.224, 0.225))を適用し、後処理の前に[0, 1]にクランプする必要があります。

時間方向の幾何構造は、clip_length(エンコーダチャンクあたり17ピクセルフレーム)とtoken_drop(エンコードごとに末尾の3つの潜在フレームを破棄)によって固定されます:17 * n + 5ピクセルフレームが5 * n + 2潜在フレームに対応します。

このライブラリ内のほとんどのオートエンコーダーとは異なり、空間タイル分割はデフォルトで有効です。MiniMax-H3はエンコードとデコードの両方でタイル分割を有効にしてリリースされており、公開されているフレームはブレンド済みタイルのものです。そのため、タイル分割を無効にすると出力が変わります。enable_tilingでタイルのジオメトリを変更し、disable_tilingで無効にしてください。

encode

< >

( x: Tensorreturn_dict: bool = True )

パラメータ

  • x (torch.Tensor) — 入力バッチの動画。形状は (batch_size, in_channels, num_frames, height, width) です。
  • return_dict (bool、省略可、デフォルトは True) — プレーンなタプルではなく AutoencoderKLOutput を返すかどうか。

バッチの動画を潜在変数にエンコードします。

decode

< >

( z: Tensorreturn_dict: bool = True ) → DecoderOutput or tuple

パラメータ

  • z (torch.Tensor) — 入力バッチの潜在動画。形状は (batch_size, latent_channels, num_latent_frames, height, width) です。
  • return_dict (bool、任意、デフォルトは True) — プレーンなタプルではなく DecoderOutput を返すかどうか。

戻り値

DecoderOutput または tuple

デコードされた動画の形状は(batch_size, out_channels, num_frames, height, width)です。

バッチの潜在動画をデコードします。

enable_tiling

< >

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

パラメータ

  • tile_sample_min_height (int、省略可) — ピクセル空間におけるタイルの高さです。この値より高いフレームは、高さ方向に分割されます。
  • tile_sample_min_width (int, 省略可) — ピクセル空間におけるタイルの幅です。この幅より広いフレームは、幅方向に分割されます。
  • tile_sample_min_overlap_height (int, 省略可) — 縦方向の2つの連続するタイル間の最小重複量(ピクセル単位)。
  • tile_sample_min_overlap_width (int, 省略可) — 2つの連続する水平タイル間の最小重複幅(ピクセル単位)。

タイル化されたVAEエンコード/デコードを有効にします。このオプションを有効にすると、VAEはフレームをタイルに分割し、各タイルを個別にエンコードまたはデコードした上で、重複部分を線形にブレンドして再結合します。これによりメモリ要件が低減され、より大きなフレームの処理が可能になります。

forward

< >

( sample: Tensorsample_posterior: bool = Falsegenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → DecoderOutput or tuple

パラメータ

  • sample (torch.Tensor) — 入力バッチの動画。形状は (batch_size, in_channels, num_frames, height, width) です。
  • sample_posterior (bool、省略可能、デフォルトは False) — モードを取るのではなく、事後分布からサンプリングするかどうかを指定します。
  • generator (torch.Generator、任意) — sample_posterior=True の場合に使用される Generator。
  • return_dict (bool、任意、デフォルトは True) — プレーンなタプルではなく DecoderOutput を返すかどうか。

戻り値

DecoderOutput または tuple

ラウンドトリップされた動画、形状は(batch_size, out_channels, num_frames, height, width)です。

バッチの動画をエンコードしてからデコードします。

Update on GitHub