Diffusers documentation

PriorTransformer

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

PriorTransformer

Prior Transformer は、Ramesh らによる Hierarchical Text-Conditional Image Generation with CLIP Latents で初めて紹介されました。CLIP テキスト埋め込みから CLIP 画像埋め込みを予測するために使用され、画像埋め込みはデノイジング拡散プロセスを通じて予測されます。

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

CLIPのような対照的モデルは、意味とスタイルの両方を捉える画像の頑健な表現を学習できることが示されています。これらの表現を画像生成に活用するために、2段階のモデルを提案します。1つは、テキストキャプションが与えられたときにCLIPの画像埋め込みを生成する事前分布(prior)、もう1つは、画像埋め込みを条件として画像を生成するデコーダーです。画像表現を明示的に生成することで、フォトリアリズムとキャプション類似度の損失を最小限に抑えながら、画像の多様性を向上させることを示します。画像表現を条件とする私たちのデコーダーは、画像表現に含まれていない非本質的な詳細を変化させつつ、意味とスタイルの両方を保持した画像のバリエーションを生成することもできます。さらに、CLIPの結合埋め込み空間により、ゼロショットで言語による画像操作が可能になります。デコーダーには拡散モデルを使用し、事前分布には自己回帰モデルと拡散モデルの両方を試しましたが、後者の方が計算効率が良く、より高品質なサンプルを生成することがわかりました。

PriorTransformer

class diffusers.PriorTransformer

< >

( num_attention_heads: int = 32attention_head_dim: int = 64num_layers: int = 20embedding_dim: int = 768num_embeddings = 77additional_embeddings = 4dropout: float = 0.0time_embed_act_fn: str = 'silu'norm_in_type: str | None = Noneembedding_proj_norm_type: str | None = Noneencoder_hid_proj_type: str | None = 'linear'added_emb_type: str | None = 'prd'time_embed_dim: int | None = Noneembedding_proj_dim: int | None = Noneclip_embed_dim: int | None = None )

パラメータ

  • num_attention_heads (int、任意、デフォルトは 32) — マルチヘッドアテンションで使用するヘッド数。
  • attention_head_dim (int、任意、デフォルトは 64) — 各ヘッドのチャネル数。
  • num_layers (int、任意、デフォルト値は 20) — 使用する Transformer ブロックの層数。
  • embedding_dim (int、任意、デフォルトは 768) — モデルの入力 hidden_states の次元
  • num_embeddings (int、任意、デフォルト値は 77) — モデルの入力 hidden_states の埋め込み数
  • additional_embeddings (int、任意、デフォルトは 4) — 投影されたhidden_statesに追加されるトークンの数です。実際に使用されるhidden_statesの長さはnum_embeddings + additional_embeddingsです。
  • dropout (float、任意、デフォルト値は 0.0) — 使用する dropout の確率です。
  • time_embed_act_fn (str、任意、デフォルトは ‘silu’) — タイムステップ埋め込みの作成に使用する活性化関数。
  • norm_in_type (str、任意、デフォルトは None) — Transformer ブロックに渡す前に、隠れ状態に適用する正規化レイヤーです。正規化が不要な場合は None に設定してください。
  • embedding_proj_norm_type (str、任意、デフォルトは None) — 入力 proj_embedding に適用する正規化レイヤーです。正規化が不要な場合は None に設定してください。
  • encoder_hid_proj_type (str、任意、デフォルトは linear) — 入力 encoder_hidden_states に適用する投影層です。encoder_hidden_states が None の場合は、None に設定してください。
  • added_emb_type (str、任意、デフォルトは prd) — モデルを条件付けするための追加の埋め込み。 prd または None から選択します。prd を選択した場合、unclip の論文https://huggingface.co/papers/2204.06125で提案されているように、テキスト埋め込みと画像埋め込みの(量子化された)内積を示すトークンを先頭に付加します。None の場合、追加の埋め込みは付加されません。
  • time_embed_dim (int, *optional*, defaults to None) -- The dimension of timestep embeddings. If None, will be set to num_attention_heads * attention_head_dim`
  • embedding_proj_dim (int、任意、デフォルトは None)— proj_embedding の次元です。None の場合、embedding_dim に設定されます。
  • clip_embed_dim (int、任意、デフォルトは None)— 出力の次元です。None の場合、embedding_dim に設定されます。

事前学習済み Transformer モデル。

forward

< >

( hidden_statestimestep: typing.Union[torch.Tensor, float, int]proj_embedding: Tensorencoder_hidden_states: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.BoolTensor] = Nonereturn_dict: bool = True ) → PriorTransformerOutput or tuple

パラメータ

  • hidden_states (torch.Tensor、形状 (batch_size, embedding_dim)) — 現在予測されている画像埋め込みです。
  • timestep (torch.LongTensor) — 現在のデノイジングステップです。
  • proj_embedding (torch.Tensor、shape (batch_size, embedding_dim)) — デノイジング過程の条件付けに使用される、射影された埋め込みベクトル。
  • encoder_hidden_states (torch.Tensor、形状 (batch_size, num_embeddings, embedding_dim)) — デノイジング過程の条件となるテキスト埋め込みの隠れ状態です。
  • attention_mask (torch.BoolTensor、shape (batch_size, num_embeddings)) — テキスト埋め込み用のテキストマスク。
  • return_dict (bool、省略可、デフォルトは True) — True の場合、通常のタプルではなく PriorTransformerOutput を返します。

戻り値

PriorTransformerOutput または tuple

return_dict が True の場合、PriorTransformerOutput が返され、それ以外の場合は、最初の要素がサンプルテンソルであるタプルが返されます。

PriorTransformerのforwardメソッドです。

set_default_attn_processor

< >

( )

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

PriorTransformerOutput

class diffusers.models.transformers.prior_transformer.PriorTransformerOutput

< >

( predicted_image_embedding: Tensor )

パラメータ

  • predicted_image_embedding (torch.Tensor、形状 (batch_size, embedding_dim)) — CLIP テキスト埋め込み入力を条件として予測される CLIP 画像埋め込みです。

PriorTransformerの出力。

Update on GitHub