Diffusers documentation
PriorTransformer
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
< source >( 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 tonum_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
< source >( 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メソッドです。
カスタムアテンションプロセッサを無効にし、デフォルトのアテンション実装を設定します。
PriorTransformerOutput
class diffusers.models.transformers.prior_transformer.PriorTransformerOutput
< source >( predicted_image_embedding: Tensor )
PriorTransformerの出力。