Buckets:
ControlNetUnionModel
ControlNetUnionModel es una implementación de ControlNet para Stable Diffusion XL.
El modelo ControlNet se introdujo en ControlNetPlus por xinsir6. Admite múltiples entradas de condicionamiento sin aumentar la computación.
Diseñamos una nueva arquitectura que puede soportar más de 10 tipos de control en la generación de imágenes a partir de texto condicional y que puede generar imágenes de alta resolución visualmente comparables con midjourney. La red se basa en la arquitectura original de ControlNet; proponemos dos nuevos módulos para: 1 Extender la ControlNet original para soportar diferentes condiciones de imagen usando el mismo parámetro de red. 2 Soportar la entrada de múltiples condiciones sin aumentar el offload de cómputo, lo cual es especialmente importante para los diseñadores que desean editar la imagen en detalle; las diferentes condiciones usan el mismo codificador de condición, sin añadir cálculos ni parámetros adicionales.
Cargando
Por defecto, el ControlNetUnionModel debe cargarse con from_pretrained().
from diffusers import StableDiffusionXLControlNetUnionPipeline, ControlNetUnionModel
controlnet = ControlNetUnionModel.from_pretrained("xinsir/controlnet-union-sdxl-1.0")
pipe = StableDiffusionXLControlNetUnionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", controlnet=controlnet)
ControlNetUnionModel[[diffusers.ControlNetUnionModel]]
diffusers.ControlNetUnionModel[[diffusers.ControlNetUnionModel]]
diffusers.ControlNetUnionModel(in_channels: int = 4, conditioning_channels: int = 3, flip_sin_to_cos: bool = True, freq_shift: int = 0, down_block_types: tuple[str, ...] = ('CrossAttnDownBlock2D', 'CrossAttnDownBlock2D', 'CrossAttnDownBlock2D', 'DownBlock2D'), only_cross_attention: bool | tuple[bool] = False, block_out_channels: tuple[int, ...] = (320, 640, 1280, 1280), layers_per_block: int = 2, downsample_padding: int = 1, mid_block_scale_factor: float = 1, act_fn: str = 'silu', norm_num_groups: int | None = 32, norm_eps: float = 1e-05, cross_attention_dim: int = 1280, transformer_layers_per_block: int | tuple[int, ...] = 1, encoder_hid_dim: int | None = None, encoder_hid_dim_type: str | None = None, attention_head_dim: int | tuple[int, ...] = 8, num_attention_heads: int | tuple[int, ...] | None = None, use_linear_projection: bool = False, class_embed_type: str | None = None, addition_embed_type: str | None = None, addition_time_embed_dim: int | None = None, num_class_embeds: int | None = None, upcast_attention: bool = False, resnet_time_scale_shift: str = 'default', projection_class_embeddings_input_dim: int | None = None, controlnet_conditioning_channel_order: str = 'rgb', conditioning_embedding_out_channels: tuple[int, ...] | None = (48, 96, 192, 384), global_pool_conditions: bool = False, addition_embed_type_num_heads: int = 64, num_control_type: int = 6, num_trans_channel: int = 320, num_trans_head: int = 8, num_trans_layer: int = 1, num_proj_channel: int = 320)
Parámetros:
in_channels (int, por defecto 4) : El número de canales en la muestra de entrada.
flip_sin_to_cos (bool, por defecto True) : Si se debe cambiar el sin por el cos en la incrustación temporal.
freq_shift (int, por defecto 0) : El desplazamiento de frecuencia que se aplica a la incrustación temporal.
down_block_types (tuple[str], por defecto ("CrossAttnDownBlock2D", "CrossAttnDownBlock2D", "CrossAttnDownBlock2D", "DownBlock2D")) : La tupla de bloques de muestreo descendente a utilizar.
only_cross_attention (bool | tuple[bool], por defecto False) --
block_out_channels (tuple[int], por defecto (320, 640, 1280, 1280)) : La tupla de canales de salida para cada bloque.
layers_per_block (int, por defecto 2) : El número de capas por bloque.
downsample_padding (int, por defecto 1) : El relleno a utilizar para la convolución de muestreo descendente.
mid_block_scale_factor (float, por defecto 1) : El factor de escala a utilizar para el bloque intermedio.
act_fn (str, por defecto "silu") : La función de activación a utilizar.
norm_num_groups (int, opcional, valor predeterminado 32) : El número de grupos a utilizar para la normalización. Si es None, se omiten las capas de normalización y activación en el posprocesamiento.
norm_eps (float, por defecto 1e-5) : El epsilon a utilizar para la normalización.
cross_attention_dim (int, por defecto 1280) : La dimensión de las características de la atención cruzada.
transformer_layers_per_block (int o tuple[int], opcional, valor predeterminado 1) : El número de bloques de transformador de tipo BasicTransformerBlock. Solo es relevante para ~models.unet_2d_blocks.CrossAttnDownBlock2D, ~models.unet_2d_blocks.CrossAttnUpBlock2D, ~models.unet_2d_blocks.UNetMidBlock2DCrossAttn.
encoder_hid_dim (int, opcional, valor predeterminado None) : Si encoder_hid_dim_type está definido, encoder_hidden_states se proyectará de la dimensión encoder_hid_dim a cross_attention_dim.
encoder_hid_dim_type (str, opcional, valor predeterminado None) : Si se proporciona, encoder_hidden_states y posiblemente otras incrustaciones se proyectan hacia abajo a incrustaciones de texto de dimensión cross_attention según encoder_hid_dim_type.
attention_head_dim (int | tuple[int], por defecto 8) : La dimensión de las cabezas de atención.
use_linear_projection (bool, por defecto False) --
class_embed_type (str, opcional, valor predeterminado None) : El tipo de embedding de clase a utilizar, que finalmente se suma a los embeddings de tiempo. Elija entre None, "timestep", "identity", "projection" o "simple_projection".
addition_embed_type (str, opcional, valor predeterminado None) : Configura un embedding opcional que se sumará con los embeddings de tiempo. Elige entre None o "text". "text" utilizará la capa TextTimeEmbedding.
num_class_embeds (int, opcional, valor predeterminado 0) : Dimensión de entrada de la matriz de incrustación aprendible que se proyectará a time_embed_dim al realizar condicionamiento por clase con class_embed_type igual a None.
upcast_attention (bool, por defecto False) --
resnet_time_scale_shift (str, por defecto "default") : Configuración de desplazamiento de escala de tiempo para los bloques ResNet (ver ResnetBlock2D). Elija entre default o scale_shift.
projection_class_embeddings_input_dim (int, opcional, valor predeterminado None) : La dimensión de la entrada class_labels cuando class_embed_type="projection". Obligatorio cuando class_embed_type="projection".
controlnet_conditioning_channel_order (str, por defecto "rgb") : El orden de los canales de la imagen condicional. Se convertirá a rgb si es bgr.
conditioning_embedding_out_channels (tuple[int], opcional, valor predeterminado (48, 96, 192, 384)) : La tupla de canales de salida para cada bloque en la capa conditioning_embedding.
global_pool_conditions (bool, por defecto False) --
Un modelo ControlNetUnion.
forward[[diffusers.ControlNetUnionModel.forward]]
forward(sample: Tensor, timestep: typing.Union[torch.Tensor, float, int], encoder_hidden_states: Tensor, controlnet_cond: list[torch.Tensor], control_type: Tensor, control_type_idx: list[int], conditioning_scale: float | list[float] = 1.0, class_labels: typing.Optional[torch.Tensor] = None, timestep_cond: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, added_cond_kwargs: dict[str, torch.Tensor] | None = None, cross_attention_kwargs: dict[str, typing.Any] | None = None, from_multi: bool = False, guess_mode: bool = False, return_dict: bool = True)
Parámetros:
sample (torch.Tensor) : El tensor de entrada con ruido.
timestep (torch.Tensor | float | int) : El número de pasos de tiempo para desruidar una entrada.
encoder_hidden_states (torch.Tensor) : Los estados ocultos del codificador.
controlnet_cond (list[torch.Tensor]) : Los tensores de entrada condicionales.
control_type (torch.Tensor) : Un tensor de forma (batch, num_control_type) con valores 0 o 1 según si se utiliza el tipo de control.
control_type_idx (list[int]) : Los índices de control_type.
conditioning_scale (float, por defecto 1.0) : El factor de escala para las salidas de ControlNet.
class_labels (torch.Tensor, opcional, valor predeterminado None) : Etiquetas de clase opcionales para la condición. Sus incrustaciones se sumarán con las incrustaciones del paso de tiempo.
timestep_cond (torch.Tensor, opcional, valor predeterminado None) : Incrustaciones condicionales adicionales para el paso de tiempo. Si se proporcionan, las incrustaciones se sumarán con la timestep_embedding pasada a través de la capa self.time_embedding para obtener las incrustaciones finales del paso de tiempo.
attention_mask (torch.Tensor, opcional, valor predeterminado None) : Una máscara de atención de forma (batch, key_tokens) se aplica a encoder_hidden_states. Si es 1, la máscara se conserva; en caso contrario, si es 0, se descarta. La máscara se convertirá en un sesgo, que añade valores negativos grandes a las puntuaciones de atención correspondientes a los tokens "descartados".
added_cond_kwargs (dict) : Condiciones adicionales para el UNet de Stable Diffusion XL.
cross_attention_kwargs (dict[str], opcional, valor predeterminado None) : Un diccionario de kwargs que, si se especifica, se pasa al AttnProcessor.
from_multi (bool, por defecto False) : Usa escalado estándar cuando se llama desde MultiControlNetUnionModel.
guess_mode (bool, por defecto False) : En este modo, el codificador de ControlNet intenta reconocer el contenido de la entrada lo mejor posible, incluso si eliminas todos los prompts. Se recomienda un guidance_scale entre 3.0 y 5.0.
return_dict (bool, por defecto True) : Si se devuelve un ~models.controlnet.ControlNetOutput en lugar de una tupla simple.
Devuelve: ~models.controlnet.ControlNetOutput o tuple
Si return_dict es True, se devuelve un ~models.controlnet.ControlNetOutput; en caso contrario, se devuelve una tupla cuyo primer elemento es el tensor de la muestra.
El método forward de ControlNetUnionModel.
from_unet[[diffusers.ControlNetUnionModel.from_unet]]
from_unet(unet: UNet2DConditionModel, controlnet_conditioning_channel_order: str = 'rgb', conditioning_embedding_out_channels: tuple[int, ...] | None = (16, 32, 96, 256), load_weights_from_unet: bool = True)
Parámetros:
unet (UNet2DConditionModel) : Los pesos del modelo UNet que se copiarán al ControlNetUnionModel. Todas las opciones de configuración también se copian cuando sea aplicable.
Instancia un ControlNetUnionModel a partir de UNet2DConditionModel.
set_attention_slice[[diffusers.ControlNetUnionModel.set_attention_slice]]
set_attention_slice(slice_size: str | int | list[int])
Parámetros:
slice_size (str o int o list(int), opcional, por defecto "auto") : Cuando es "auto", la entrada a las cabezas de atención se reduce a la mitad, por lo que la atención se calcula en dos pasos. Si es "max", se ahorra la máxima cantidad de memoria ejecutando solo una porción a la vez. Si se proporciona un número, se utilizan tantas porciones como attention_head_dim // slice_size. En este caso, attention_head_dim debe ser un múltiplo de slice_size.
Habilitar el cálculo de atención segmentada.
Cuando esta opción está habilitada, el módulo de atención divide el tensor de entrada en fragmentos para calcular la atención en varios pasos. Esto es útil para ahorrar algo de memoria a cambio de una pequeña disminución en la velocidad.
set_default_attn_processor[[diffusers.ControlNetUnionModel.set_default_attn_processor]]
set_default_attn_processor()
Desactiva los procesadores de atención personalizados y establece la implementación de atención predeterminada.
Xet Storage Details
- Size:
- 13.3 kB
- Xet hash:
- b2511befacc6d9cf370699d118d76fb4587e58e3ac2c9fb8ddb4017956da8215
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.