Buckets:

hf-doc-build/doc / diffusers /main /tr /api /models /controlnet_union.md
mishig's picture
|
download
raw
12.9 kB
# ControlNetUnionModel
ControlNetUnionModel, Stable Diffusion XL için ControlNet'in bir uygulamasıdır.
ControlNet modeli, xinsir6 tarafından [ControlNetPlus](https://github.com/xinsir6/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](/docs/diffusers/main/tr/api/models/controlnet_union#diffusers.ControlNetUnionModel), [from_pretrained()](/docs/diffusers/main/tr/api/models/overview#diffusers.ModelMixin.from_pretrained) ile yüklenmelidir.
```py
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]]
```python
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)
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/controlnets/controlnet_union.py#L85)
**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]]
```python
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)
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/controlnets/controlnet_union.py#L541)
**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](/docs/diffusers/main/tr/api/models/controlnet_union#diffusers.ControlNetUnionModel) ileri yöntemi.
#### from_unet[[diffusers.ControlNetUnionModel.from_unet]]
```python
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)
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/controlnets/controlnet_union.py#L389)
**Parametreler:**
unet (`UNet2DConditionModel`) : [ControlNetUnionModel](/docs/diffusers/main/tr/api/models/controlnet_union#diffusers.ControlNetUnionModel)'e kopyalanacak UNet model ağırlıkları. Uygulanabilir tüm yapılandırma seçenekleri de kopyalanır.
[UNet2DConditionModel](/docs/diffusers/main/tr/api/models/unet2d-cond#diffusers.UNet2DConditionModel) içinden bir [ControlNetUnionModel](/docs/diffusers/main/tr/api/models/controlnet_union#diffusers.ControlNetUnionModel) örnekleyin.
#### set_attention_slice[[diffusers.ControlNetUnionModel.set_attention_slice]]
```python
set_attention_slice(slice_size: str | int | list[int])
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/controlnets/controlnet_union.py#L476)
**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]]
```python
set_default_attn_processor()
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/controlnets/controlnet_union.py#L460)
Ö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.