Diffusers documentation

SanaControlNetModel

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

SanaControlNetModel

O modelo ControlNet foi introduzido em Adding Conditional Control to Text-to-Image Diffusion Models por Lvmin Zhang, Anyi Rao e Maneesh Agrawala. Ele oferece um maior grau de controle sobre a geração de imagens a partir de texto ao condicionar o modelo em entradas adicionais, como mapas de bordas, mapas de profundidade, mapas de segmentação e pontos-chave para detecção de pose.

O resumo do artigo é:

Apresentamos o ControlNet, uma arquitetura de rede neural para adicionar controles de condicionamento espacial a grandes modelos de difusão de texto para imagem pré-treinados. O ControlNet trava os grandes modelos de difusão prontos para produção e reutiliza suas camadas de codificação profundas e robustas, pré-treinadas com bilhões de imagens, como uma base forte para aprender um conjunto diversificado de controles condicionais. A arquitetura neural é conectada por “convoluções zero” (camadas de convolução inicializadas em zero) que crescem progressivamente os parâmetros a partir de zero e garantem que nenhum ruído prejudicial possa afetar o ajuste fino. Testamos vários controles de condicionamento, por exemplo, bordas, profundidade, segmentação, pose humana, etc., com o Stable Diffusion, usando condições únicas ou múltiplas, com ou sem prompts. Mostramos que o treinamento dos ControlNets é robusto com conjuntos de dados pequenos (<50k) e grandes (>1m). Resultados extensos mostram que o ControlNet pode facilitar aplicações mais amplas para controlar modelos de difusão de imagem.

Este modelo foi contribuído por ishan24. ❤️ A base de código original pode ser encontrada em NVlabs/Sana, e você pode encontrar checkpoints oficiais do ControlNet no perfil do Hub de Efficient-Large-Model.

SanaControlNetModel

classe 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)) — hidden_states de entrada.
  • encoder_hidden_states (torch.Tensor) — Incorporações condicionais (incorporações calculadas a partir das condições de entrada, como prompts) a serem usadas.
  • timestep (torch.LongTensor) — Usado para indicar o passo de desruido.
  • controlnet_cond (torch.Tensor) — O tensor de entrada condicional para o ControlNet.
  • conditioning_scale (float, opcional, padrão 1.0) — Fator de escala para as saídas do ControlNet.
  • encoder_attention_mask (torch.Tensor, opcional) — Máscara de atenção aplicada a encoder_hidden_states.
  • attention_mask (torch.Tensor, opcional) — Máscara de atenção aplicada a hidden_states.
  • attention_kwargs (dict, opcional) — Um dicionário de kwargs que, se especificado, é passado ao AttentionProcessor conforme definido em self.processor em diffusers.models.attention_processor.
  • return_dict (bool, opcional, padrão True) — Se deve ou não retornar um ~models.transformer_2d.Transformer2DModelOutput em vez de uma tupla simples.

Retorna

~models.transformer_2d.Transformer2DModelOutput ou tuple

Se return_dict for True, um ~models.transformer_2d.Transformer2DModelOutput é retornado; caso contrário, uma tuple simples é retornada.

SanaControlNetOutput

classe diffusers.models.controlnets.controlnet_sana.SanaControlNetOutput

< >

( controlnet_block_samples: tuple[torch.Tensor] )

Update on GitHub