Diffusers documentation
AutoencoderKLPH3Image
AutoencoderKLPH3Image
Pruna AI による P-H3-Image の画像 VAE です。MiniMax-H3 の 動画 VAE のエンコーダーと潜在空間を使用し、ViT デコーダーによって単一の潜在フレームを画像にデコードします。
AutoencoderKLMiniMaxH3の規約に従います:
- 画像は1フレームの動画として渡され、
(batch_size, channels, 1, height, width)の形状を持ち、空間方向に16倍の圧縮が適用されます。 - Latents は
scaling_factorではなく、latents_mean/latents_stdを用いてチャネルごとに正規化されます。 - ピクセルは
[0, 1]の範囲でImageNet正規化されたRGBです。encodeは(pixel - imagenet_mean) / imagenet_stdを期待し、decodeは同じ空間を返します。 - 空間タイル分割はデフォルトで有効になっており、タイルサイズは256ピクセル、オーバーラップは少なくとも64ピクセルです。
import torch
from diffusers import AutoencoderKLPH3Image
vae = AutoencoderKLPH3Image.from_pretrained("PrunaAI/P-H3-Image", subfolder="vae", dtype=torch.bfloat16).to(
"cuda"
) # or "mps", "xpu", "cpu"モデルがどのdtypeで読み込まれていても、エンコーダーとデコーダーの出力投影はfloat32のままです。
AutoencoderKLPH3Image
class diffusers.AutoencoderKLPH3Image
< 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-05latents_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) )
P-H3-Imageの画像VAE: MiniMax-H3のVAEエンコーダーと潜在空間。単一の潜在フレームをデコードするPH3ImageViTDecoderを備えています。
画像は単一フレームの動画として渡され、(batch_size, channels, 1, height, width) の形になります。AutoencoderKLMiniMaxH3 と同様に、ピクセルは [0, 1] 上の ImageNet 正規化済み RGB(平均 (0.485, 0.456, 0.406)、標準偏差 (0.229, 0.224, 0.225))であり、空間タイル分割はデフォルトで有効になっています。
encode
< source >( x: Tensorreturn_dict: bool = True )
パラメータ
- x (
torch.Tensor) — 単一フレームの動画として扱われる入力画像のバッチ。形状は(batch_size, in_channels, 1, height, width)です。 - return_dict (
bool、省略可、デフォルトはTrue) — プレーンなタプルではなく AutoencoderKLOutput を返すかどうか。
バッチの画像を潜在変数にエンコードします。
decode
< source >( z: Tensorreturn_dict: bool = True ) → DecoderOutput or tuple
パラメータ
- z (
torch.Tensor) — 入力バッチの潜在変数。形状は(batch_size, latent_channels, 1, height, width)です。 - return_dict (
bool、任意、デフォルトはTrue) — プレーンなタプルではなく DecoderOutput を返すかどうか。
戻り値
DecoderOutput または tuple
デコードされた画像の形状は(batch_size, out_channels, 1, height, width)です。
バッチの潜在画像をデコードします。
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 )
パラメータ
- 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
< source >( sample: Tensorsample_posterior: bool = Falsegenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → DecoderOutput or tuple
パラメータ
- sample (
torch.Tensor) — 単一フレームの動画として扱われる入力画像バッチ。形状は(batch_size, in_channels, 1, height, width)です。 - sample_posterior (
bool、省略可能、デフォルトはFalse) — モードを取るのではなく、事後分布からサンプリングするかどうかを指定します。 - generator (
torch.Generator、任意) —sample_posterior=Trueの場合に使用される Generator。 - return_dict (
bool、任意、デフォルトはTrue) — プレーンなタプルではなく DecoderOutput を返すかどうか。
戻り値
DecoderOutput または tuple
ラウンドトリップされた画像、形状は(batch_size, out_channels, 1, height, width)です。
バッチの画像をエンコードしてからデコードします。