Diffusers 文件
FluxControlNetModel
並獲得增強的文件體驗
開始使用
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
< source >( 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
< source >( 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.processor
的AttentionProcessor
。 - return_dict (
bool
, 可選, 預設為True
) — 是否返回~models.transformer_2d.Transformer2DModelOutput
而不是純元組。
FluxTransformer2DModel 的 forward 方法。
設定注意力處理器
< source >( processor )
設定用於計算注意力的注意力處理器。