Buckets:

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

AutoencoderKL

KL損失付きのバリアンスオートエンコーダ(VAE)モデルは、Diederik P. Kingma氏とMax Welling氏によるAuto-Encoding Variational Bayesで提案されました。このモデルは、🤗 Diffusersにおいて画像を潜在変数(latents)にエンコードし、潜在表現を画像にデコードするために使用されます。

論文の抄録は以下の通りです:

連続潜在変数が取り扱えない事後分布を持ち、かつ大規模なデータセットが存在する場合、有向確率モデルにおいて効率的な推論と学習をどのように行えばよいでしょうか。本稿では、大規模なデータセットにスケーリングでき、ある程度の微分可能性条件の下では、取り扱えないケースでも機能する確率変分推論および学習アルゴリズムを導入します。我々の貢献は2点あります。第一に、変分下界の再パラメータ化により、標準的な確率勾配法を用いて直接的に最適化できる下界の推定量が得られることを示します。第二に、データポイントごとに連続潜在変数を持つ独立同分布(i.i.d.)データセットにおいて、提案した下界の推定量を用いて取り扱えない事後分布に近似推論モデル(認識モデルとも呼ばれる)を適合させることで、事後推論を特に効率的に行えることを示します。理論的な利点は、実験結果にも反映されています。

元の形式から読み込む

デフォルトでは、AutoencoderKLはfrom_pretrained()で読み込む必要がありますが、FromOriginalModelMixin.from_single_fileを使用して元の形式から読み込むこともできます。以下のようにします:

from diffusers import AutoencoderKL

url = "https://huggingface.co/stabilityai/sd-vae-ft-mse-original/blob/main/vae-ft-mse-840000-ema-pruned.safetensors"  # can also be a local file
model = AutoencoderKL.from_single_file(url)

AutoencoderKL[[diffusers.AutoencoderKL]]

diffusers.AutoencoderKL[[diffusers.AutoencoderKL]]

diffusers.AutoencoderKL(in_channels: int = 3, out_channels: int = 3, down_block_types: tuple[str] = ('DownEncoderBlock2D',), up_block_types: tuple[str] = ('UpDecoderBlock2D',), block_out_channels: tuple[int] = (64,), layers_per_block: int = 1, act_fn: str = 'silu', latent_channels: int = 4, norm_num_groups: int = 32, sample_size: int = 32, scaling_factor: float = 0.18215, shift_factor: float | None = None, latents_mean: tuple[float] | None = None, latents_std: tuple[float] | None = None, force_upcast: bool = True, use_quant_conv: bool = True, use_post_quant_conv: bool = True, mid_block_add_attention: bool = True)

ソース

パラメータ:

in_channels (int, optional, デフォルトは 3) : 入力画像のチャネル数。

out_channels (int, optional, デフォルトは 3) : 出力のチャネル数。

down_block_types (tuple[str]、任意、デフォルトは("DownEncoderBlock2D",)) : ダウンサンプルブロックのタイプのタプル。

up_block_types (tuple[str]、任意、デフォルトは("UpDecoderBlock2D",)) : アップサンプリングブロックのタイプのタプル。

block_out_channels (tuple[int]、optional、デフォルトは(64,)) : ブロックの出力チャネルのタプル。

act_fn (str、任意、デフォルトは"silu") : 使用する活性化関数。

latent_channels (int、任意、デフォルトは 4) : 潜在空間のチャネル数。

sample_size (int、任意、デフォルトは32) : サンプル入力サイズ。

scaling_factor (float、optional、デフォルト値は 0.18215) : 学習セットの最初のバッチを使用して計算された、学習済み潜在空間の要素ごとの標準偏差です。これは、拡散モデルの学習時に潜在空間を分散 1 にスケーリングするために使用されます。潜在変数は、拡散モデルに渡される前に z = z * scaling_factor という式でスケーリングされます。デコード時には、z = 1 / scaling_factor * z という式で元のスケールに戻されます。詳細については、High-Resolution Image Synthesis with Latent Diffusion Models 論文のセクション 4.3.2 と D.1 を参照してください。

force_upcast (bool、任意、デフォルトはTrue) : 有効にすると、SD-XL などの高解像度画像パイプラインにおいて、VAE を float32 で実行するよう強制します。VAE を精度を大きく失わずに低い範囲でファインチューニング / 学習できる場合、force_upcast を False に設定できます - 参考: https://huggingface.co/madebyollin/sdxl-vae-fp16-fix

mid_block_add_attention (bool, 任意, デフォルトは True) : 有効な場合、Encoder と Decoder の mid_block に attention ブロックが含まれます。false に設定すると、mid_block には resnet ブロックのみが含まれます。

KL損失を用いて画像を潜在変数にエンコードし、潜在表現を画像にデコードするためのVAEモデル。

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

decode[[diffusers.AutoencoderKL.decode]]

decode(z: FloatTensor, return_dict: bool = True, generator = None)

ソース

パラメータ:

z (torch.Tensor) : 潜在ベクトルの入力バッチ。

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

戻り値: ~models.vae.DecoderOutput または tuple

return_dict が True の場合、~models.vae.DecoderOutput が返され、それ以外の場合は通常の tuple が返されます。

画像のバッチをデコードします。

encode[[diffusers.AutoencoderKL.encode]]

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

ソース

パラメータ:

x (torch.Tensor) : 画像の入力バッチ。

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

戻り値:

エンコードされた画像の潜在表現。return_dictがTrueの場合、~models.autoencoder_kl.AutoencoderKLOutputが返され、それ以外の場合は通常のtupleが返されます。

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

forward[[diffusers.AutoencoderKL.forward]]

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

ソース

パラメータ:

sample (torch.Tensor) : 入力サンプル。

sample_posterior (bool、任意、デフォルトはFalse) : 事後分布からサンプリングするかどうか。

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

generator (torch.Generator, 任意) : サンプリングを決定論的にするための torch.Generator。

戻り値: ~models.vae.DecoderOutput または tuple

return_dict が True の場合、~models.vae.DecoderOutput が返され、それ以外の場合は通常の tuple が返されます。

fuse_qkv_projections[[diffusers.AutoencoderKL.fuse_qkv_projections]]

fuse_qkv_projections()

ソース

融合されたQKV投影を有効にします。自己注意(self-attention)モジュールでは、すべての投影行列(つまり、クエリ、キー、バリュー)が融合されます。相互注意(cross-attention)モジュールでは、キーとバリューの投影行列が融合されます。

> このAPIは🧪実験的です。

set_default_attn_processor[[diffusers.AutoencoderKL.set_default_attn_processor]]

set_default_attn_processor()

ソース

カスタムアテンションプロセッサを無効にし、デフォルトのアテンション実装を設定します。

tiled_decode[[diffusers.AutoencoderKL.tiled_decode]]

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

ソース

パラメータ:

z (torch.Tensor) : 潜在ベクトルの入力バッチ。

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

戻り値: ~models.vae.DecoderOutput または tuple

return_dict が True の場合、~models.vae.DecoderOutput が返され、それ以外の場合は通常の tuple が返されます。

タイル化されたデコーダーを使用して、画像のバッチをデコードします。

tiled_encode[[diffusers.AutoencoderKL.tiled_encode]]

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

ソース

パラメータ:

x (torch.Tensor) : 画像の入力バッチ。

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

戻り値: ~models.autoencoder_kl.AutoencoderKLOutput または tuple

If return_dict is True, a ~models.autoencoder_kl.AutoencoderKLOutput is returned, otherwise a plain tuple is returned.

タイル化されたエンコーダーを使用して、画像のバッチをエンコードします。

このオプションを有効にすると、VAE は入力テンソルをタイルに分割し、エンコーディングを複数ステップで計算します。これにより、画像サイズに関係なくメモリ使用量を一定に保つことができます。タイル化されたエンコーディングの結果は、タイル化されていない場合と異なります。これは、各タイルが異なるエンコーダーを使用するためです。タイル化によるアーティファクトを回避するために、タイルはオーバーラップし、滑らかな出力を形成するためにブレンドされます。出力にタイルサイズの变化が見られる場合もありますが、以前よりもはるかに目立たなくなります。

unfuse_qkv_projections[[diffusers.AutoencoderKL.unfuse_qkv_projections]]

unfuse_qkv_projections()

ソース

有効化されている場合、融合された QKV 投影を無効にします。

> このAPIは🧪実験的です。

AutoencoderKLOutput[[diffusers.models.modeling_outputs.AutoencoderKLOutput]]

diffusers.models.modeling_outputs.AutoencoderKLOutput[[diffusers.models.modeling_outputs.AutoencoderKLOutput]]

diffusers.models.modeling_outputs.AutoencoderKLOutput(latent_dist: DiagonalGaussianDistribution)

ソース

パラメータ:

latent_dist (DiagonalGaussianDistribution) : Encoder のエンコード済み出力を、DiagonalGaussianDistribution の平均と logvar として表したものです。DiagonalGaussianDistribution を使用すると、この分布から潜在変数をサンプリングできます。

AutoencoderKLのエンコードメソッドの出力。

DecoderOutput[[diffusers.models.autoencoders.vae.DecoderOutput]]

diffusers.models.autoencoders.vae.DecoderOutput[[diffusers.models.autoencoders.vae.DecoderOutput]]

diffusers.models.autoencoders.vae.DecoderOutput(sample: Tensor, commit_loss: typing.Optional[torch.FloatTensor] = None)

ソース

パラメータ:

sample (torch.Tensor、形状 (batch_size, num_channels, height, width)) : モデルの最終層からのデコード済み出力サンプル。

デコードメソッドの出力。

Xet Storage Details

Size:
13.6 kB
·
Xet hash:
580eaa04f04b4df51adbb1c4185fe94e9b0b181cb4652685a1a7b34e0c48f529

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