Buckets:

hf-doc-build/doc / diffusers /main /ja /api /models /autoencoderkl_p_h3_image.md
mishig's picture
|
download
raw
8.24 kB

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[[diffusers.AutoencoderKLPH3Image]]

diffusers.AutoencoderKLPH3Image[[diffusers.AutoencoderKLPH3Image]]

diffusers.AutoencoderKLPH3Image(in_channels: int = 3, out_channels: int = 3, latent_channels: int = 24, block_out_channels: tuple[int, ...] = (128, 256, 256, 512, 512, 1024), layers_per_block: int = 2, spatial_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 = 32, norm_eps: float = 1e-06, spatial_padding_mode: str = 'reflect', decoder_num_layers: int = 36, decoder_num_attention_heads: int = 32, decoder_attention_head_dim: int = 64, decoder_num_register_tokens: int = 4, decoder_ffn_mult: int = 4, decoder_rope_theta: float = 100.0, decoder_rope_dim_ratio: float = 0.75, decoder_norm_eps: float = 1e-05, latents_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))

ソース

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[[diffusers.AutoencoderKLPH3Image.encode]]

encode(x: Tensor, return_dict: bool = True)

ソース

パラメータ:

x (torch.Tensor) : シングルフレーム動画として扱われる入力画像のバッチ。形状は (batch_size, in_channels, 1, height, width) です。

return_dict (bool、任意、デフォルトはTrue) : プレーンなタプルではなくAutoencoderKLOutputを返すかどうか。

戻り値:

エンコードされた画像の潜在分布。なお、潜在変数はその後 latents_mean / latents_std で正規化されます。

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

decode[[diffusers.AutoencoderKLPH3Image.decode]]

decode(z: Tensor, return_dict: bool = True)

ソース

パラメータ:

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[[diffusers.AutoencoderKLPH3Image.enable_tiling]]

enable_tiling(tile_sample_min_height: int | None = None, tile_sample_min_width: int | None = None, tile_sample_min_overlap_height: int | None = None, tile_sample_min_overlap_width: int | None = None)

ソース

パラメータ:

tile_sample_min_height (int, 任意) : ピクセル空間におけるタイルの高さ。この値より高いフレームは、高さの次元に沿って分割されます。

tile_sample_min_width (int, optional) : ピクセル空間におけるタイルの幅。この幅を超えるフレームは、幅方向に分割されます。

tile_sample_min_overlap_height (int, optional) : 2つの連続する縦方向のタイル間の最小重複量(ピクセル単位)。

tile_sample_min_overlap_width (int, optional) : 2つの連続する水平タイル間の最小オーバーラップ量(ピクセル単位)。

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

forward[[diffusers.AutoencoderKLPH3Image.forward]]

forward(sample: Tensor, sample_posterior: bool = False, generator: typing.Optional[torch.Generator] = None, return_dict: bool = True)

ソース

パラメータ:

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)です。

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

Xet Storage Details

Size:
8.24 kB
·
Xet hash:
e1e7597f7441e8e8d2706397ab998dd0ddb0575f7398de9d8432eea1d73ea6e9

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.