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 была представлена в статье Adding Conditional Control to Text-to-Image Diffusion Models авторами Lvmin Zhang, Anyi Rao, Maneesh Agrawala. Она обеспечивает более высокий уровень контроля над генерацией изображений по тексту, позволяя моделировать модель на основе дополнительных входных данных, таких как карты границ, карты глубины, карты сегментации и ключевые точки для определения позы.

Аннотация из статьи:

Мы представляем ControlNet — архитектуру нейронной сети для добавления пространственного управления условиями к крупным предобученным диффузионным моделям «текст в изображение». ControlNet фиксирует готовые к производству крупные диффузионные модели и повторно использует их глубокие и устойчивые слои кодирования, предобученные на миллиардах изображений, в качестве мощного каркаса для обучения разнообразному набору условных контролей. Нейронная архитектура соединяется с «нулевыми свёртками» (слоями свёртки с нулевой инициализацией), которые постепенно наращивают параметры от нуля и гарантируют, что вредоносный шум не может повлиять на дообучение. Мы тестируем различные условные контроли, например, края, глубину, сегментацию, позу человека и т. д., с Stable Diffusion, используя одно или несколько условий, с промптами или без них. Мы показываем, что обучение ControlNet устойчиво как на малых (<50k), так и на больших (>1m) наборах данных. Обширные результаты демонстрируют, что ControlNet может способствовать более широкому применению для управления диффузионными моделями изображений.

Эта модель была добавлена пользователем ishan24. ❤️ Исходный код можно найти в репозитории NVlabs/Sana, а официальные контрольные точки ControlNet — в профиле Efficient-Large-Model’s на Hub.

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 (torch.Tensor формы (batch_size, channel, height, width)) — Входные 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, который при указании передается в AttentionProcessor, определенный в self.processor в diffusers.models.attention_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