Diffusers documentation

FluxControlNetModel

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

FluxControlNetModel

FluxControlNetModel — это реализация ControlNet для Flux.1.

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

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

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

Загрузка из исходного формата

По умолчанию FluxControlNetModel следует загружать с помощью from_pretrained().

from diffusers import FluxControlNetPipeline
from diffusers.models import FluxControlNetModel, FluxMultiControlNetModel

controlnet = FluxControlNetModel.from_pretrained("InstantX/FLUX.1-dev-Controlnet-Canny")
pipe = FluxControlNetPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", controlnet=controlnet)

controlnet = FluxControlNetModel.from_pretrained("InstantX/FLUX.1-dev-Controlnet-Canny")
controlnet = FluxMultiControlNetModel([controlnet])
pipe = FluxControlNetPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", controlnet=controlnet)

FluxControlNetModel

класс diffusers.FluxControlNetModel

< >

( patch_size: int = 1in_channels: int = 64num_layers: int = 19num_single_layers: int = 38attention_head_dim: int = 128num_attention_heads: int = 24joint_attention_dim: int = 4096pooled_projection_dim: int = 768guidance_embeds: bool = Falseaxes_dims_rope: list[int] = [16, 56, 56]num_mode: int = Noneconditioning_embedding_channels: int = None )

forward

< >

( hidden_states: Tensorcontrolnet_cond: Tensorcontrolnet_mode: Tensor = Noneconditioning_scale: float = 1.0encoder_hidden_states: Tensor = Nonepooled_projections: Tensor = Nonetimestep: LongTensor = Noneimg_ids: Tensor = Nonetxt_ids: Tensor = Noneguidance: Tensor = Nonejoint_attention_kwargs: dict[str, typing.Any] | None = Nonereturn_dict: bool = True )

Параметры

  • hidden_states (torch.FloatTensor формы (batch size, channel, height, width)) — Входные hidden_states.
  • controlnet_cond (torch.Tensor) — Условный входной тензор формы (batch_size, sequence_length, hidden_size).
  • controlnet_mode (torch.Tensor) — Тензор режима формы (batch_size, 1).
  • conditioning_scale (float, по умолчанию 1.0) — Коэффициент масштабирования для выходов ControlNet.
  • encoder_hidden_states (torch.FloatTensor формы (batch size, sequence_len, embed_dims)) — Условные эмбеддинги (эмбеддинги, вычисленные на основе входных условий, таких как промпты), которые следует использовать.
  • pooled_projections (torch.FloatTensor формы (batch_size, projection_dim)) — Векторы, полученные проецированием эмбеддингов входных условий.
  • timestep ( torch.LongTensor) — Используется для указания шага денойзинга.
  • img_ids (torch.Tensor) — Позиционные идентификаторы для токенов изображения.
  • txt_ids (torch.Tensor) — Позиционные идентификаторы для текстовых токенов.
  • guidance (torch.Tensor, необязательный) — Тензор масштаба, используемый в дистиллированных вариантах модели с guidance.
  • joint_attention_kwargs (dict, необязательный) — Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor в модуле diffusers.models.attention_processor.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать ~models.transformer_2d.Transformer2DModelOutput вместо обычного кортежа.

Метод forward модели FluxTransformer2DModel.

FluxControlNetOutput

класс diffusers.models.controlnets.FluxControlNetOutput

< >

( controlnet_block_samples: tuple[torch.Tensor]controlnet_single_block_samples: tuple[torch.Tensor] )

Update on GitHub