Diffusers documentation

SanaControlNetModel

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

SanaControlNetModel

El modelo ControlNet se presentó en Adding Conditional Control to Text-to-Image Diffusion Models de Lvmin Zhang, Anyi Rao y Maneesh Agrawala. Ofrece un mayor grado de control sobre la generación de imágenes a partir de texto al condicionar el modelo con entradas adicionales, como mapas de bordes, mapas de profundidad, mapas de segmentación y puntos clave para la detección de pose.

El resumen del artículo es:

Presentamos ControlNet, una arquitectura de red neuronal para añadir controles de condicionamiento espacial a grandes modelos de difusión de texto a imagen preentrenados. ControlNet bloquea los grandes modelos de difusión listos para producción y reutiliza sus capas de codificación profundas y robustas, preentrenadas con miles de millones de imágenes, como una base sólida para aprender un conjunto diverso de controles condicionales. La arquitectura neuronal se conecta mediante «convoluciones cero» (capas de convolución inicializadas en cero) que hacen crecer progresivamente los parámetros desde cero y garantizan que ningún ruido perjudicial pueda afectar el ajuste fino. Probamos varios controles de condicionamiento, por ejemplo, bordes, profundidad, segmentación, pose humana, etc., con Stable Diffusion, utilizando una o varias condiciones, con o sin indicaciones. Mostramos que el entrenamiento de ControlNets es robusto con conjuntos de datos pequeños (<50k) y grandes (>1m). Resultados extensos muestran que ControlNet puede facilitar aplicaciones más amplias para controlar los modelos de difusión de imágenes.

Este modelo fue aportado por ishan24. ❤️ La base de código original se encuentra en NVlabs/Sana, y puedes encontrar los puntos de control oficiales de ControlNet en el perfil de Hub de Efficient-Large-Model.

SanaControlNetModel

clase 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

Parámetros

  • hidden_states (torch.Tensor de forma (batch_size, channel, height, width)) — Estados ocultos de entrada hidden_states.
  • encoder_hidden_states (torch.Tensor) — Embeddings condicionales (embeddings calculados a partir de las condiciones de entrada, como los prompts) a utilizar.
  • timestep (torch.LongTensor) — Se utiliza para indicar el paso de desruido.
  • controlnet_cond (torch.Tensor) — Tensor de entrada condicional para ControlNet.
  • conditioning_scale (float, opcional, valor predeterminado 1.0) — El factor de escala para las salidas de ControlNet.
  • encoder_attention_mask (torch.Tensor, opcional) — Máscara de atención aplicada a encoder_hidden_states.
  • attention_mask (torch.Tensor, opcional) — Máscara de atención aplicada a hidden_states.
  • attention_kwargs (dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa al AttentionProcessor definido en self.processor dentro de diffusers.models.attention_processor.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un ~models.transformer_2d.Transformer2DModelOutput en lugar de una tupla simple.

Devuelve

~models.transformer_2d.Transformer2DModelOutput o tuple

Si return_dict es True, se devuelve un ~models.transformer_2d.Transformer2DModelOutput, de lo contrario se devuelve una tuple simple.

SanaControlNetOutput

clase diffusers.models.controlnets.controlnet_sana.SanaControlNetOutput

< >

( controlnet_block_samples: tuple[torch.Tensor] )

Update on GitHub