Diffusers 文件

FluxControlNetModel

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

FluxControlNetModel

FluxControlNetModel 是 ControlNet for Flux.1 的一個實現。

ControlNet 模型由 Lvmin Zhang、Anyi Rao、Maneesh Agrawala 在《Adding Conditional Control to Text-to-Image Diffusion Models》中提出。透過對模型進行額外的輸入(如邊緣圖、深度圖、分割圖和姿態檢測的關鍵點)進行條件化,它提供了對文字到影像生成的更大程度的控制。

論文摘要如下:

我們提出了 ControlNet,一種神經網路架構,用於為大型預訓練文字到影像擴散模型新增空間條件控制。ControlNet 鎖定生產級大型擴散模型,並重新利用其用數十億影像預訓練的深層、穩健的編碼層作為強大的主幹,以學習多樣化的條件控制。該神經網路架構透過“零卷積”(零初始化卷積層)連線,這些層從零開始逐步增長引數,並確保不會有害的噪聲影響微調。我們測試了各種條件控制,例如,邊緣、深度、分割、人體姿態等,與 Stable Diffusion 配合使用,可以使用單個或多個條件,帶或不帶提示。我們表明,ControlNet 的訓練對於小型(<50k)和大型(>1m)資料集都非常穩健。大量結果表明,ControlNet 可能有助於更廣泛地應用以控制影像擴散模型。

從原始格式載入

預設情況下,FluxControlNetModel 應使用 from_pretrained() 載入。

from diffusers import FluxControlNetPipeline
from diffusers.models import FluxControlNetModel, FluxMultiControlNetModel

controlnet = FluxControlNetModel.from_pretrained("InstantX/FLUX.1-dev-Controlnet-Canny")
pipe = FluxControlNetPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", controlnet=controlnet)

controlnet = FluxControlNetModel.from_pretrained("InstantX/FLUX.1-dev-Controlnet-Canny")
controlnet = FluxMultiControlNetModel([controlnet])
pipe = FluxControlNetPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", controlnet=controlnet)

FluxControlNetModel

class diffusers.FluxControlNetModel

< >

( patch_size: int = 1 in_channels: int = 64 num_layers: int = 19 num_single_layers: int = 38 attention_head_dim: int = 128 num_attention_heads: int = 24 joint_attention_dim: int = 4096 pooled_projection_dim: int = 768 guidance_embeds: bool = False axes_dims_rope: typing.List[int] = [16, 56, 56] num_mode: int = None conditioning_embedding_channels: int = None )

forward

< >

( hidden_states: Tensor controlnet_cond: Tensor controlnet_mode: Tensor = None conditioning_scale: float = 1.0 encoder_hidden_states: Tensor = None pooled_projections: Tensor = None timestep: LongTensor = None img_ids: Tensor = None txt_ids: Tensor = None guidance: Tensor = None joint_attention_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = None return_dict: bool = True )

引數

  • hidden_states (torch.FloatTensor,形狀為 (批大小, 通道, 高度, 寬度)) — 輸入的 hidden_states
  • controlnet_cond (torch.Tensor) — 形狀為 (批大小, 序列長度, 隱藏大小) 的條件輸入張量。
  • controlnet_mode (torch.Tensor) — 形狀為 (批大小, 1) 的模式張量。
  • conditioning_scale (float, 預設為 1.0) — ControlNet 輸出的比例因子。
  • encoder_hidden_states (torch.FloatTensor,形狀為 (批大小, 序列長度, 嵌入維度)) — 要使用的條件嵌入(從提示等輸入條件計算的嵌入)。
  • pooled_projections (torch.FloatTensor,形狀為 (批大小, 投影維度)) — 從輸入條件的嵌入投影而來的嵌入。
  • timestep (torch.LongTensor) — 用於指示去噪步驟。
  • block_controlnet_hidden_states — (torch.Tensor 列表):如果指定,將新增到變壓器塊殘差中的張量列表。
  • joint_attention_kwargs (dict, 可選) — 一個 kwargs 字典,如果指定,將作為引數傳遞給 diffusers.models.attention_processor 中定義的 self.processorAttentionProcessor
  • return_dict (bool, 可選, 預設為 True) — 是否返回 ~models.transformer_2d.Transformer2DModelOutput 而不是純元組。

FluxTransformer2DModel 的 forward 方法。

設定注意力處理器

< >

( processor )

引數

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

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

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

FluxControlNetOutput

class diffusers.models.controlnet_flux.FluxControlNetOutput

< >

( *args **kwargs )

< > 在 GitHub 上更新

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