Buckets:
ControlNetUnionModel
ControlNetUnionModel, Stable Diffusion XL için ControlNet'in bir uygulamasıdır.
ControlNet modeli, xinsir6 tarafından ControlNetPlus ile tanıtıldı. Hesaplama yükünü artırmadan birden çok koşullandırma girdisini destekler.
10'dan fazla kontrol türünü destekleyebilen ve görsel olarak midjourney ile karşılaştırılabilir yüksek çözünürlüklü görüntüler üretebilen yeni bir mimari tasarladık. Ağ, orijinal ControlNet mimarisine dayanmaktadır; aynı ağ parametresini kullanarak farklı görüntü koşullarını desteklemek için orijinal ControlNet'i genişletmek ve hesaplama offload'ini artırmadan çoklu koşul girişini desteklemek üzere iki yeni modül öneriyoruz. Bu, özellikle görüntüleri detaylı olarak düzenlemek isteyen tasarımcılar için önemlidir; farklı koşullar aynı koşul kodlayıcısını kullanır ve ek hesaplama veya parametre eklenmez.
Yükleniyor
Varsayılan olarak ControlNetUnionModel, from_pretrained() ile yüklenmelidir.
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 = ('CrossAttnDownBlock2D', 'CrossAttnDownBlock2D', 'CrossAttnDownBlock2D', 'DownBlock2D'), only_cross_attention: bool | tuple[bool] = False, block_out_channels: tuple = (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)
Parametreler:
in_channels (int, varsayılan 4) : Girdi örneğindeki kanal sayısı.
flip_sin_to_cos (bool, varsayılan True) : Zaman gömümünde sin'in cos'a çevrilip çevrilmeyeceğini belirtir.
freq_shift (int, varsayılan 0) : Zaman gömümüne uygulanacak frekans kayması.
down_block_types (tuple[str], varsayılan ("CrossAttnDownBlock2D", "CrossAttnDownBlock2D", "CrossAttnDownBlock2D", "DownBlock2D")) : Kullanılacak indirgeme bloklarının demeti.
only_cross_attention (bool | tuple[bool], varsayılan False) --
block_out_channels (tuple[int], varsayılan (320, 640, 1280, 1280)) : Her blok için çıktı kanalları demeti.
layers_per_block (int, varsayılan 2) : Blok başına katman sayısı.
downsample_padding (int, varsayılan 1) : Küçültme konvolüsyonu için kullanılacak dolgu.
mid_block_scale_factor (float, varsayılan 1) : Orta blok için kullanılacak ölçekleme faktörü.
act_fn (str, varsayılan "silu") : Kullanılacak aktivasyon fonksiyonu.
norm_num_groups (int, isteğe bağlı, varsayılan 32) : Normalizasyon için kullanılacak grup sayısı. None ise, işleme sonrası aşamasında normalizasyon ve aktivasyon katmanları atlanır.
norm_eps (float, varsayılan 1e-5) : Normalizasyon için kullanılacak epsilon.
cross_attention_dim (int, varsayılan 1280) : Çapraz dikkat özelliklerinin boyutu.
transformer_layers_per_block (int veya tuple[int], isteğe bağlı, varsayılan 1) : BasicTransformerBlock türündeki transformer bloklarının sayısı. Yalnızca ~models.unet_2d_blocks.CrossAttnDownBlock2D, ~models.unet_2d_blocks.CrossAttnUpBlock2D, ~models.unet_2d_blocks.UNetMidBlock2DCrossAttn için geçerlidir.
encoder_hid_dim (int, isteğe bağlı, varsayılanı None) : encoder_hid_dim_type tanımlıysa, encoder_hidden_states encoder_hid_dim boyutundan cross_attention_dim boyutuna yansıtılır.
encoder_hid_dim_type (str, isteğe bağlı, varsayılan None) : Verilirse, encoder_hidden_states ve potansiyel olarak diğer gömlemeler, encoder_hid_dim_type'e göre cross_attention boyutlu metin gömlemelerine indirgenir.
attention_head_dim (int | tuple[int], varsayılan 8) : Dikkat başlarının boyutu.
use_linear_projection (bool, varsayılan False) --
class_embed_type (str, isteğe bağlı, varsayılan None) : Sonunda zaman gömme değerleriyle toplanan sınıf gömme türü. None, "timestep", "identity", "projection" veya "simple_projection" seçeneklerinden birini seçin.
addition_embed_type (str, isteğe bağlı, varsayılan None) : Zaman gömme değerleriyle toplanacak isteğe bağlı bir gömme yapılandırır. None veya "text" seçeneklerinden birini seçin. "text", TextTimeEmbedding katmanını kullanır.
num_class_embeds (int, opsiyonel, varsayılan 0) : class_embed_type None olduğunda sınıf koşullandırması yapılırken, öğrenilebilir gömme matrisinin time_embed_dim'e yansıtılacağı giriş boyutu.
upcast_attention (bool, varsayılan False) --
resnet_time_scale_shift (str, varsayılan "default") : ResNet blokları için zaman ölçeği kaydırma yapılandırması (bkz. ResnetBlock2D). default veya scale_shift seçeneklerinden birini seçin.
projection_class_embeddings_input_dim (int, isteğe bağlı, varsayılan None) : class_embed_type="projection" olduğunda class_labels girdisinin boyutu. class_embed_type="projection" olduğunda zorunludur.
controlnet_conditioning_channel_order (str, varsayılan "rgb") : Koşullu görüntünün kanal sırası. bgr ise rgb olarak dönüştürülür.
conditioning_embedding_out_channels (tuple[int], opsiyonel, varsayılan (48, 96, 192, 384)) : conditioning_embedding katmanındaki her blok için çıktı kanalı sayısı içeren demet.
global_pool_conditions (bool, varsayılan False) --
A ControlNetUnion modeli.
forward[[diffusers.ControlNetUnionModel.forward]]
forward(sample: Tensor, timestep: typing.Union[torch.Tensor, float, int], encoder_hidden_states: Tensor, controlnet_cond: list, control_type: Tensor, control_type_idx: list, 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)
Parametreler:
sample (torch.Tensor) : Gürültülü girdi tensörü.
timestep (torch.Tensor | float | int) : Bir girdiyi gürültüden arındırmak için kullanılacak zaman adımı sayısı.
encoder_hidden_states (torch.Tensor) : Kodlayıcı gizli durumları.
controlnet_cond (list[torch.Tensor]) : Koşullu girdi tensörleri.
control_type (torch.Tensor) : Kontrol tipi kullanılıyorsa 0 veya 1 değerlerine sahip, (batch, num_control_type) biçiminde bir tensör.
control_type_idx (list[int]) : control_type dizinleri.
conditioning_scale (float, varsayılan 1.0) : ControlNet çıktıları için ölçekleme faktörü.
class_labels (torch.Tensor, isteğe bağlı, varsayılan None) : Koşullandırma için isteğe bağlı sınıf etiketleri. Gömümleri, zaman adımları gömümleriyle toplanır.
timestep_cond (torch.Tensor, isteğe bağlı, varsayılan None) : timestep için ek koşullu gömme (embeddings). Sağlanırsa, gömme, self.time_embedding katmanından geçirilen timestep_embedding ile toplanarak nihai timestep gömmeleri elde edilir.
attention_mask (torch.Tensor, isteğe bağlı, varsayılan None) : (batch, key_tokens) biçimindeki bir dikkat maskesi, encoder_hidden_states üzerine uygulanır. Değer 1 ise maske korunur, aksi halde 0 ise atılır. Maske, "at" token'larına karşılık gelen dikkat puanlarına büyük negatif değerler ekleyen bir önyargıya dönüştürülür.
added_cond_kwargs (dict) : Stable Diffusion XL UNet için ek koşullar.
cross_attention_kwargs (dict[str], isteğe bağlı, varsayılan None) : Belirtilirse AttnProcessor'a iletilen bir kwargs sözlüğü.
from_multi (bool, varsayılan False) : MultiControlNetUnionModel tarafından çağrıldığında standart ölçekleme kullanılır.
guess_mode (bool, varsayılan False) : Bu modda, tüm istemleri (prompts) kaldırsanız bile ControlNet kodlayıcısı, girdi içeriğini tanımayı en iyi şekilde yapmaya çalışır. guidance_scale için 3.0 ile 5.0 arasında bir değer önerilir.
return_dict (bool, varsayılan True) : Düz bir tuple yerine ~models.controlnet.ControlNetOutput döndürülecek mi?
Dönüş: ~models.controlnet.ControlNetOutput veya tuple
return_dict True ise ~models.controlnet.ControlNetOutput döndürülür, aksi halde ilk öğesi örnek tensörü olan bir tuple döndürülür.
ControlNetUnionModel ileri yöntemi.
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)
Parametreler:
unet (UNet2DConditionModel) : ControlNetUnionModel'e kopyalanacak UNet model ağırlıkları. Uygulanabilir tüm yapılandırma seçenekleri de kopyalanır.
UNet2DConditionModel içinden bir ControlNetUnionModel örnekleyin.
set_attention_slice[[diffusers.ControlNetUnionModel.set_attention_slice]]
set_attention_slice(slice_size: str | int | list[int])
Parametreler:
slice_size (str veya int veya list(int), isteğe bağlı, varsayılan "auto") : "auto" olduğunda, dikkat başlarına giden girdi yarıya indirilir, böylece dikkat iki adımda hesaplanır. "max" ise, her seferinde yalnızca bir dilim çalıştırılarak maksimum miktarda bellek tasarrufu sağlanır. Bir sayı sağlanırsa, attention_head_dim // slice_size kadar dilim kullanılır. Bu durumda attention_head_dim, slice_size'ın katı olmalıdır.
Dilimlenmiş dikkat (attention) hesaplamasını etkinleştirin.
Bu seçenek etkinleştirildiğinde, dikkat modülü dikkat hesaplamasını birkaç adımda gerçekleştirmek için girdi tensörünü dilimlere ayırır. Bu, hızda küçük bir düşüş karşılığında bellek tasarrufu sağlamak için faydalıdır.
set_default_attn_processor[[diffusers.ControlNetUnionModel.set_default_attn_processor]]
set_default_attn_processor()
Özel dikkat işleyicilerini devre dışı bırakır ve varsayılan dikkat uygulamasını ayarlar.
Xet Storage Details
- Size:
- 12.9 kB
- Xet hash:
- 7e65b61834c45558893f0e1c8df51c69191c568df1ab2daca001bb143a6b1b43
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.