Diffusers 文件

PriorTransformer

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

PriorTransformer

Prior Transformer 最初由 Ramesh 等人在《使用 CLIP 潛在變數進行分層文字條件影像生成》中提出。它用於從 CLIP 文字嵌入預測 CLIP 影像嵌入;影像嵌入透過去噪擴散過程進行預測。

論文摘要如下:

對比模型(如 CLIP)已被證明能夠學習到捕獲影像語義和風格的魯棒表示。為了利用這些表示進行影像生成,我們提出了一個兩階段模型:一個先驗模型,根據文字標題生成 CLIP 影像嵌入;一個解碼器,根據影像嵌入生成影像。我們發現,明確生成影像表示可以提高影像多樣性,同時最大限度地減少照片真實感和標題相似度的損失。我們的解碼器在影像表示的條件下,還可以生成影像的變體,這些變體既保留了語義和風格,又改變了影像表示中不存在的非必要細節。此外,CLIP 的聯合嵌入空間能夠以零樣本方式進行語言引導的影像操作。我們將擴散模型用於解碼器,並對先驗模型同時進行自迴歸和擴散模型的實驗,發現後者在計算上更高效,並能生成更高質量的樣本。

PriorTransformer

class diffusers.PriorTransformer

< >

( num_attention_heads: int = 32 attention_head_dim: int = 64 num_layers: int = 20 embedding_dim: int = 768 num_embeddings = 77 additional_embeddings = 4 dropout: float = 0.0 time_embed_act_fn: str = 'silu' norm_in_type: typing.Optional[str] = None embedding_proj_norm_type: typing.Optional[str] = None encoder_hid_proj_type: typing.Optional[str] = 'linear' added_emb_type: typing.Optional[str] = 'prd' time_embed_dim: typing.Optional[int] = None embedding_proj_dim: typing.Optional[int] = None clip_embed_dim: typing.Optional[int] = 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 的附加 token 數量。所用 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_statesNone,請將其設定為 None
  • added_emb_type (str, 可選, 預設為 prd) — 用於調節模型的附加嵌入。可選擇 prdNone。如果選擇 prd,它將預置一個 token,表示文字嵌入和影像嵌入之間的(量化)點積,如 unclip 論文 https://huggingface.co/papers/2204.06125 中所提出的。如果為 None,則不會預置任何附加嵌入。
  • time_embed_dim (int, *可選*, 預設為 None) -- 時間步嵌入的維度。如果為 None,將設定為 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_states timestep: typing.Union[torch.Tensor, float, int] proj_embedding: Tensor encoder_hidden_states: typing.Optional[torch.Tensor] = None attention_mask: typing.Optional[torch.BoolTensor] = None return_dict: bool = True ) PriorTransformerOutput or tuple

引數

  • hidden_states (torch.Tensor, 形狀為 (batch_size, embedding_dim)) — 當前預測的影像嵌入。
  • timestep (torch.LongTensor) — 當前去噪步驟。
  • proj_embedding (torch.Tensor, 形狀為 (batch_size, embedding_dim)) — 去噪過程所依賴的投影嵌入向量。
  • encoder_hidden_states (torch.Tensor, 形狀為 (batch_size, num_embeddings, embedding_dim)) — 去噪過程所依賴的文字嵌入的隱藏狀態。
  • attention_mask (torch.BoolTensor, 形狀為 (batch_size, num_embeddings)) — 文字嵌入的文字掩碼。
  • return_dict (bool, 可選, 預設為 True) — 是否返回 PriorTransformerOutput 而不是普通元組。

返回

PriorTransformerOutputtuple

如果 return_dict 為 True,則返回 PriorTransformerOutput,否則返回一個元組,其中第一個元素是樣本張量。

PriorTransformer 前向方法。

設定注意力處理器

< >

( processor: typing.Union[diffusers.models.attention_processor.AttnProcessor, diffusers.models.attention_processor.CustomDiffusionAttnProcessor, diffusers.models.attention_processor.AttnAddedKVProcessor, diffusers.models.attention_processor.AttnAddedKVProcessor2_0, diffusers.models.attention_processor.JointAttnProcessor2_0, diffusers.models.attention_processor.PAGJointAttnProcessor2_0, diffusers.models.attention_processor.PAGCFGJointAttnProcessor2_0, diffusers.models.attention_processor.FusedJointAttnProcessor2_0, diffusers.models.attention_processor.AllegroAttnProcessor2_0, diffusers.models.attention_processor.AuraFlowAttnProcessor2_0, diffusers.models.attention_processor.FusedAuraFlowAttnProcessor2_0, diffusers.models.attention_processor.FluxAttnProcessor2_0, diffusers.models.attention_processor.FluxAttnProcessor2_0_NPU, diffusers.models.attention_processor.FusedFluxAttnProcessor2_0, diffusers.models.attention_processor.FusedFluxAttnProcessor2_0_NPU, diffusers.models.attention_processor.CogVideoXAttnProcessor2_0, diffusers.models.attention_processor.FusedCogVideoXAttnProcessor2_0, diffusers.models.attention_processor.XFormersAttnAddedKVProcessor, diffusers.models.attention_processor.XFormersAttnProcessor, diffusers.models.attention_processor.XLAFlashAttnProcessor2_0, diffusers.models.attention_processor.AttnProcessorNPU, diffusers.models.attention_processor.AttnProcessor2_0, diffusers.models.attention_processor.MochiVaeAttnProcessor2_0, diffusers.models.attention_processor.MochiAttnProcessor2_0, diffusers.models.attention_processor.StableAudioAttnProcessor2_0, diffusers.models.attention_processor.HunyuanAttnProcessor2_0, diffusers.models.attention_processor.FusedHunyuanAttnProcessor2_0, diffusers.models.attention_processor.PAGHunyuanAttnProcessor2_0, diffusers.models.attention_processor.PAGCFGHunyuanAttnProcessor2_0, diffusers.models.attention_processor.LuminaAttnProcessor2_0, diffusers.models.attention_processor.FusedAttnProcessor2_0, diffusers.models.attention_processor.CustomDiffusionXFormersAttnProcessor, diffusers.models.attention_processor.CustomDiffusionAttnProcessor2_0, diffusers.models.attention_processor.SlicedAttnProcessor, diffusers.models.attention_processor.SlicedAttnAddedKVProcessor, diffusers.models.attention_processor.SanaLinearAttnProcessor2_0, diffusers.models.attention_processor.PAGCFGSanaLinearAttnProcessor2_0, diffusers.models.attention_processor.PAGIdentitySanaLinearAttnProcessor2_0, diffusers.models.attention_processor.SanaMultiscaleLinearAttention, diffusers.models.attention_processor.SanaMultiscaleAttnProcessor2_0, diffusers.models.attention_processor.SanaMultiscaleAttentionProjection, diffusers.models.attention_processor.IPAdapterAttnProcessor, diffusers.models.attention_processor.IPAdapterAttnProcessor2_0, diffusers.models.attention_processor.IPAdapterXFormersAttnProcessor, diffusers.models.attention_processor.SD3IPAdapterJointAttnProcessor2_0, diffusers.models.attention_processor.PAGIdentitySelfAttnProcessor2_0, diffusers.models.attention_processor.PAGCFGIdentitySelfAttnProcessor2_0, diffusers.models.attention_processor.LoRAAttnProcessor, diffusers.models.attention_processor.LoRAAttnProcessor2_0, diffusers.models.attention_processor.LoRAXFormersAttnProcessor, diffusers.models.attention_processor.LoRAAttnAddedKVProcessor]]] )

引數

  • processor (AttentionProcessordict 或僅為 AttentionProcessor) — 將設定為 所有 Attention 層的處理器的例項化處理器類或處理器類字典。

    如果 processor 是一個字典,則鍵需要定義到相應交叉注意力處理器的路徑。強烈建議在設定可訓練注意力處理器時這樣做。

設定用於計算注意力的注意力處理器。

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 的輸出。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.