Diffusers documentation

SanaControlNetModel

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

SanaControlNetModel

ControlNet 模型由 Lvmin Zhang、Anyi Rao 和 Maneesh Agrawala 在 Adding Conditional Control to Text-to-Image Diffusion Models 中提出。它通过以边缘图、深度图、分割图以及用于姿态检测的关键点等额外输入作为条件,为文本到图像生成提供了更强的控制能力。

该论文的摘要如下:

我们提出了 ControlNet,一种用于为大型预训练文本到图像扩散模型添加空间条件控制的神经网络架构。ControlNet 锁定生产就绪的大型扩散模型,并复用其使用数十亿张图像预训练得到的深层且鲁棒的编码层作为强大的骨干网络,以学习多样化的条件控制。该神经架构通过“零卷积”(零初始化的卷积层)进行连接,这些层使参数从零开始逐步增长,并确保在微调过程中不会产生有害噪声。我们使用 Stable Diffusion 测试了多种条件控制,例如边缘、深度、分割、人体姿态等,支持使用单一或多个条件,以及有或无提示词的情况。我们展示了 ControlNet 的训练在小规模(<50k)和大规模(>1m)数据集上均具有鲁棒性。大量结果表明,ControlNet 有助于将图像扩散模型的应用扩展到更广泛的领域。

该模型由 ishan24 贡献。❤️ 原始代码库可在 NVlabs/Sana 中找到,您可以在 Efficient-Large-Model 的 Hub 主页上找到官方的 ControlNet 检查点。

SanaControlNetModel

类 diffusers.SanaControlNetModel

< >

( in_channels: int = 32out_channels: int | None = 32num_attention_heads: int = 70attention_head_dim: int = 32num_layers: int = 7num_cross_attention_heads: int | None = 20cross_attention_head_dim: int | None = 112cross_attention_dim: int | None = 2240caption_channels: int = 2304mlp_ratio: float = 2.5dropout: float = 0.0attention_bias: bool = Falsesample_size: int = 32patch_size: int = 1norm_elementwise_affine: bool = Falsenorm_eps: float = 1e-06interpolation_scale: int | None = None )

forward

< >

( hidden_states: Tensorencoder_hidden_states: Tensortimestep: LongTensorcontrolnet_cond: Tensorconditioning_scale: float = 1.0encoder_attention_mask: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneattention_kwargs: dict[str, typing.Any] | None = Nonereturn_dict: bool = True ) → ~models.transformer_2d.Transformer2DModelOutput or tuple

参数

  • hidden_states(形状为 (batch_size, channel, height, width) 的 torch.Tensor)— 输入的 hidden_states。
  • encoder_hidden_states (torch.Tensor) — 要使用的条件嵌入(从输入条件(例如提示词)计算得出的嵌入)。
  • timestep (torch.LongTensor) — 用于指示去噪步骤。
  • controlnet_cond (torch.Tensor) — ControlNet 的条件输入张量。
  • conditioning_scale (float,可选,默认为 1.0) — ControlNet 输出的缩放因子。
  • encoder_attention_mask (torch.Tensor, 可选) — 应用于 encoder_hidden_states 的注意力掩码。
  • attention_mask (torch.Tensor, 可选) — 应用于 hidden_states 的注意力掩码。
  • attention_kwargs (dict, 可选) — 一个 kwargs 字典,如果指定,将传递给 diffusers.models.attention_processor 中定义的 AttentionProcessor,该处理器在 self.processor 下定义。
  • return_dict (bool,可选,默认为 True) — 是否返回 ~models.transformer_2d.Transformer2DModelOutput 而不是普通的元组。

返回值

~models.transformer_2d.Transformer2DModelOutput 或 tuple

如果 return_dict 为 True,则返回 ~models.transformer_2d.Transformer2DModelOutput,否则返回普通的 tuple。

SanaControlNetOutput

类 diffusers.models.controlnets.controlnet_sana.SanaControlNetOutput

< >

( controlnet_block_samples: tuple[torch.Tensor] )

Update on GitHub