Diffusers documentation

AutoencoderKLMiniMaxH3Image

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.43.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

AutoencoderKLMiniMaxH3Image

MiniMax による MiniMax-H3-Image で使用される、KL 損失付きの画像変分オートエンコーダ (VAE) モデルです。AutoencoderKLMiniMaxH3 の因果的 3D CNN エンコーダを単一フレームに対して実行し、2D ViT デコーダと組み合わせ、空間方向に 16 倍圧縮します。encode と decode は 4 次元の画像テンソルを受け取り、返します。

AutoencoderKLMiniMaxH3 と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-Imageはエンコードとデコードの両方でタイルリングを有効にしてリリースされており、公開されている画像はブレンドされたタイルのものです。そのため、これを無効にすると出力が変わります。enable_tilingでタイルのジオメトリを変更し、disable_tilingで無効にしてください。
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

クラス diffusers.AutoencoderKLMiniMaxH3Image

< >

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

MiniMax-H3-Imageで使用される、因果的な3D CNNエンコーダーと非因果的な2D ViTデコーダーを備えたVAEモデルです。エンコーダーは単一のフレームに対して実行されるMiniMax-H3の動画エンコーダーであり、デコーダーは画像専用のViTです。

このモデルは 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]にクランプする必要があります。

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

encode

< >

( x: Tensorreturn_dict: bool = True )

パラメータ

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

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

decode

< >

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

パラメータ

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

戻り値

DecoderOutput または tuple

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

バッチの潜在変数をデコードします。

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, height, width)です。
  • sample_posterior (bool、省略可能、デフォルトは False) — モードを取るのではなく、事後分布からサンプリングするかどうかを指定します。
  • generator (torch.Generator、任意) — sample_posterior=True の場合に使用される Generator。
  • return_dict (bool、任意、デフォルトは True) — プレーンなタプルではなく DecoderOutput を返すかどうか。

戻り値

DecoderOutput または tuple

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

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

Update on GitHub