Diffusers documentation
SanaControlNetModel
SanaControlNetModel
Le modèle ControlNet a été introduit dans Adding Conditional Control to Text-to-Image Diffusion Models par Lvmin Zhang, Anyi Rao et Maneesh Agrawala. Il offre un degré de contrôle supérieur sur la génération d’images à partir de texte en conditionnant le modèle sur des entrées supplémentaires telles que des cartes de contours, des cartes de profondeur, des cartes de segmentation et des points clés pour la détection de pose.
L'abstract de l'article est :
Nous présentons ControlNet, une architecture de réseau de neurones permettant d’ajouter des contrôles de conditionnement spatial à de grands modèles de diffusion texte-vers-image pré-entraînés. ControlNet verrouille les grands modèles de diffusion prêts pour la production et réutilise leurs couches d’encodage profondes et robustes, pré-entraînées sur des milliards d’images, comme un socle solide pour apprendre un ensemble varié de contrôles conditionnels. L’architecture neuronale est connectée par des « convolutions nulles » (couches de convolution initialisées à zéro) qui font progressivement croître les paramètres depuis zéro et garantissent qu’aucun bruit nuisible ne puisse affecter l’ajustement fin. Nous testons divers contrôles de conditionnement, par exemple les contours, la profondeur, la segmentation, la pose humaine, etc., avec Stable Diffusion, en utilisant une ou plusieurs conditions, avec ou sans prompts. Nous montrons que l’entraînement des ControlNets est robuste avec des jeux de données petits (<50k) et grands (>1m). Des résultats étendus montrent que ControlNet peut faciliter des applications plus larges pour contrôler les modèles de diffusion d’images.
Ce modèle a été contribué par ishan24. ❤️ La base de code originale peut être trouvée sur NVlabs/Sana, et vous pouvez trouver des points de contrôle officiels de ControlNet sur le profil Hub d'Efficient-Large-Model.
SanaControlNetModel
classe diffusers.SanaControlNetModel
< source >( 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
< source >( 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
Paramètres
- hidden_states (
torch.Tensorde forme(batch_size, channel, height, width)) —hidden_statesd'entrée. - encoder_hidden_states (
torch.Tensor) — Embeddings conditionnels (embeddings calculés à partir des conditions d’entrée telles que les prompts) à utiliser. - timestep (
torch.LongTensor) — Utilisé pour indiquer l'étape de débruitage. - controlnet_cond (
torch.Tensor) — Tenseur d'entrée conditionnel pour le ControlNet. - conditioning_scale (
float, facultatif, par défaut1.0) — Le facteur d'échelle pour les sorties de ControlNet. - encoder_attention_mask (
torch.Tensor, facultatif) — Masque d'attention appliqué àencoder_hidden_states. - attention_mask (
torch.Tensor, facultatif) — Masque d'attention appliqué àhidden_states. - attention_kwargs (
dict, facultatif) — Un dictionnaire de kwargs qui, s'il est spécifié, est transmis à l'AttentionProcessordéfini sousself.processordans diffusers.models.attention_processor. - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un~models.transformer_2d.Transformer2DModelOutputplutôt qu'un simple tuple.
Retourne
~models.transformer_2d.Transformer2DModelOutput ou tuple
Si return_dict est True, un ~models.transformer_2d.Transformer2DModelOutput est renvoyé, sinon
un simple tuple est renvoyé.
SanaControlNetOutput
classe diffusers.models.controlnets.controlnet_sana.SanaControlNetOutput
< source >( controlnet_block_samples: tuple )