Diffusers documentation

VQModel

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

VQModel

VQ-VAEモデルは、Aaron van den Oord、Oriol Vinyals、Koray Kavukcuogluによる論文Neural Discrete Representation Learningで提案されました。このモデルは、🤗 Diffusersにおいて潜在表現を画像にデコードするために使用されます。AutoencoderKLとは異なり、VQModelは量子化された潜在空間で動作します。

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

教師なしで有用な表現を学習することは、機械学習における重要な課題であり続けます。本論文では、そのような離散表現を学習する、シンプルでありながら強力な生成モデルを提案します。我々のモデルである Vector Quantised-Variational AutoEncoder (VQ-VAE) は、VAE と 2 つの重要な点で異なります。1 つは、エンコーダーネットワークが連続的なコードではなく離散なコードを出力すること、もう 1 つは、事前分布が静的ではなく学習されることです。離散な潜在表現を学習するために、ベクトル量子化 (VQ) のアイデアを取り入れています。VQ 手法を用いることで、強力な自己回帰デコーダーと組み合わせられた際に潜在変数が無視される「後方崩壊 (posterior collapse)」の問題を回避できます。これは VAE フレームワークで典型的に観察される現象です。これらの表現に自己回帰事前分布を組み合わせることで、モデルは高品質な画像、動画、音声の生成だけでなく、高品質な話者変換や音素の教師なし学習も実現でき、学習された表現の有用性をさらに裏付けるものとなります。

VQModel

class diffusers.VQModel

< >

( in_channels: int = 3out_channels: int = 3down_block_types: tuple = ('DownEncoderBlock2D',)up_block_types: tuple = ('UpDecoderBlock2D',)block_out_channels: tuple = (64,)layers_per_block: int = 1act_fn: str = 'silu'latent_channels: int = 3sample_size: int = 32num_vq_embeddings: int = 256norm_num_groups: int = 32vq_embed_dim: int | None = Nonescaling_factor: float = 0.18215norm_type: str = 'group'mid_block_add_attention = Truelookup_from_codebook = Falseforce_upcast = False )

パラメータ

  • 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、任意、デフォルトは 3) — 潜在空間のチャネル数。
  • sample_size (int、任意、デフォルトは 32) — サンプルの入力サイズ。
  • num_vq_embeddings (int、任意、デフォルトは256) — VQ-VAEにおけるコードブックベクトルの数。
  • norm_num_groups (int、任意、デフォルトは32) — 正規化レイヤーのグループ数。
  • vq_embed_dim (int, 省略可) — VQ-VAEにおけるコードブックベクトルの隠れ層の次元数。
  • scaling_factor (float、任意、デフォルトは 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 を参照してください。
  • norm_type (str、任意、デフォルトは "group") — 使用する正規化レイヤーの種類。"group" または "spatial" のいずれかです。

潜在表現をデコードするためのVQ-VAEモデル。

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

forward

< >

( sample: Tensorreturn_dict: bool = True ) → VQEncoderOutput or tuple

パラメータ

戻り値

VQEncoderOutput または tuple

return_dict が True の場合、VQEncoderOutput が返され、それ以外の場合は通常の tuple が返されます。

VQModelのforwardメソッド。

VQEncoderOutput

クラス diffusers.models.autoencoders.vq_model.VQEncoderOutput

< >

( latents: Tensor )

パラメータ

  • latents (torch.Tensor、形状 (batch_size, num_channels, height, width)) — モデルの最終層からのエンコードされた出力サンプルです。

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

Update on GitHub