Buckets:
| # ControlNetModel | |
| ControlNet modeli, Lvmin Zhang, Anyi Rao ve Maneesh Agrawala tarafından [Adding Conditional Control to Text-to-Image Diffusion Models](https://huggingface.co/papers/2302.05543) makalesinde tanıtılmıştır. Kenar haritaları, derinlik haritaları, segmentasyon haritaları ve poz algılama için anahtar noktalar gibi ek girdiler üzerinde modeli koşullandırarak metinden görüntüye üretim üzerinde daha yüksek bir kontrol derecesi sağlar. | |
| Makalenin özeti şudur: | |
| *ControlNet'i sunuyoruz; bu, büyük, önceden eğitilmiş metinden görüntüye difüzyon modellerine uzamsal koşullandırma kontrolleri eklemek için tasarlanmış bir sinir ağı mimarisidir. ControlNet, üretim için hazır büyük difüzyon modellerini kilitler ve milyarlarca görüntüyle önceden eğitilmiş derin ve sağlam kodlama katmanlarını, çeşitli bir koşullu kontrol seti öğrenmek için güçlü bir omurga olarak yeniden kullanır. Sinir mimarisi, parametreleri sıfırdan kademeli olarak büyüten ve finetuning'i (ince ayar) etkileyebilecek zararlı gürültünün olmasını engelleyen "sıfır konvolüsyonlar" (sıfır başlatılmış konvolüsyon katmanları) ile bağlanır. Stable Diffusion ile tekil veya birden fazla koşul kullanarak, istemlerle (prompt) veya istemsiz olarak kenarlar, derinlik, segmentasyon, insan pozu gibi çeşitli koşullandırma kontrollerini test ediyoruz. ControlNet'lerin eğitiminin küçük (<50k) ve büyük (>1m) veri setleriyle sağlam olduğunu gösteriyoruz. Kapsamlı sonuçlar, ControlNet'in görüntü difüzyon modellerini kontrol etmek için daha geniş uygulamaları kolaylaştırabileceğini göstermektedir.* | |
| ## Orijinal formattan yükleme | |
| Varsayılan olarak [ControlNetModel](/docs/diffusers/main/tr/api/models/controlnet#diffusers.ControlNetModel), [from_pretrained()](/docs/diffusers/main/tr/api/models/overview#diffusers.ModelMixin.from_pretrained) ile yüklenmelidir; ancak aşağıdaki gibi `FromOriginalModelMixin.from_single_file` kullanılarak orijinal biçimden de yüklenebilir: | |
| ```py | |
| from diffusers import StableDiffusionControlNetPipeline, ControlNetModel | |
| url = "https://huggingface.co/lllyasviel/ControlNet-v1-1/blob/main/control_v11p_sd15_canny.pth" # can also be a local path | |
| controlnet = ControlNetModel.from_single_file(url) | |
| url = "https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5/blob/main/v1-5-pruned.safetensors" # can also be a local path | |
| pipe = StableDiffusionControlNetPipeline.from_single_file(url, controlnet=controlnet) | |
| ``` | |
| ## Control LoRA'dan yükleme | |
| Control-LoRA, Stability AI tarafından [stabilityai/control-lora](https://huggingface.co/stabilityai/control-lora) ile ControlNet'e düşük rütbeli, parametre verimli ince ayar eklenerek tanıtılmıştır. Bu yaklaşım, model kontrolünü daha geniş bir tüketici GPU yelpazesine getirmek için daha verimli ve kompakt bir yöntem sunar. | |
| ```py | |
| from diffusers import ControlNetModel, UNet2DConditionModel | |
| lora_id = "stabilityai/control-lora" | |
| lora_filename = "control-LoRAs-rank128/control-lora-canny-rank128.safetensors" | |
| unet = UNet2DConditionModel.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", subfolder="unet", dtype=torch.bfloat16).to("cuda") # or "mps", "xpu", "cpu" | |
| controlnet = ControlNetModel.from_unet(unet).to(device="cuda", dtype=torch.bfloat16) | |
| controlnet.load_lora_adapter(lora_id, weight_name=lora_filename, prefix=None, controlnet_config=controlnet.config) | |
| ``` | |
| ## ControlNetModel[[diffusers.ControlNetModel]] | |
| #### diffusers.ControlNetModel[[diffusers.ControlNetModel]] | |
| ```python | |
| diffusers.ControlNetModel(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'), mid_block_type: str | None = 'UNetMidBlock2DCrossAttn', 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 = (16, 32, 96, 256), global_pool_conditions: bool = False, addition_embed_type_num_heads: int = 64) | |
| ``` | |
| [Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/controlnets/controlnet.py#L111) | |
| **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 `(16, 32, 96, 256)`) : `conditioning_embedding` katmanındaki her blok için çıktı kanalı sayısı içeren demet. | |
| global_pool_conditions (`bool`, varsayılan `False`) : TODO(Patrick) - kullanılmayan parametre. | |
| addition_embed_type_num_heads (`int`, varsayılan 64) : `TextTimeEmbedding` katmanında kullanılacak baş sayısı. | |
| Bir ControlNet modeli. | |
| #### forward[[diffusers.ControlNetModel.forward]] | |
| ```python | |
| forward(sample: Tensor, timestep: typing.Union[torch.Tensor, float, int], encoder_hidden_states: Tensor, controlnet_cond: Tensor, conditioning_scale: 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, guess_mode: bool = False, return_dict: bool = True) | |
| ``` | |
| [Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/controlnets/controlnet.py#L602) | |
| **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 (`torch.Tensor`) : `(batch_size, sequence_length, hidden_size)` biçimindeki koşullu girdi tensörü. | |
| 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üğü. | |
| 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 [ControlNetOutput](/docs/diffusers/main/tr/api/models/controlnet#diffusers.models.controlnets.ControlNetOutput) döndürülecek mi? | |
| **Dönüş:** [ControlNetOutput](/docs/diffusers/main/tr/api/models/controlnet#diffusers.models.controlnets.ControlNetOutput) **veya** `tuple` | |
| `return_dict` `True` ise [ControlNetOutput](/docs/diffusers/main/tr/api/models/controlnet#diffusers.models.controlnets.ControlNetOutput) döndürülür, aksi takdirde bir tuple döndürülür ve bu tuple'ın ilk öğesi örnek tensörüdür. | |
| [ControlNetModel](/docs/diffusers/main/tr/api/models/controlnet#diffusers.ControlNetModel) ileri yöntemi. | |
| #### from_unet[[diffusers.ControlNetModel.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, conditioning_channels: int = 3) | |
| ``` | |
| [Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/controlnets/controlnet.py#L444) | |
| **Parametreler:** | |
| unet (`UNet2DConditionModel`) : [ControlNetModel](/docs/diffusers/main/tr/api/models/controlnet#diffusers.ControlNetModel)'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)'den bir [ControlNetModel](/docs/diffusers/main/tr/api/models/controlnet#diffusers.ControlNetModel) örneği oluşturun. | |
| #### set_attention_slice[[diffusers.ControlNetModel.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.py#L537) | |
| **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.ControlNetModel.set_default_attn_processor]] | |
| ```python | |
| set_default_attn_processor() | |
| ``` | |
| [Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/controlnets/controlnet.py#L521) | |
| Özel dikkat işleyicilerini devre dışı bırakır ve varsayılan dikkat uygulamasını ayarlar. | |
| ## ControlNetOutput[[diffusers.models.controlnets.ControlNetOutput]] | |
| #### diffusers.models.controlnets.ControlNetOutput[[diffusers.models.controlnets.ControlNetOutput]] | |
| ```python | |
| diffusers.models.controlnets.ControlNetOutput(down_block_res_samples: tuple, mid_block_res_sample: Tensor) | |
| ``` | |
| [Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/controlnets/controlnet.py#L47) | |
| **Parametreler:** | |
| down_block_res_samples (`tuple[torch.Tensor]`) : Her indirgeme bloğu için farklı çözünürlüklerdeki indirgeme aktivasyonlarından oluşan bir tuple. Her tensorin şekli `(batch_size, channel * resolution, height //resolution, width // resolution)` olmalıdır. Çıktı, orijinal UNet'in indirgeme aktivasyonlarını koşullandırmak için kullanılabilir. | |
| mid_down_block_re_sample (`torch.Tensor`) : Orta bloğun aktivasyonu (en düşük örnek çözünürlüğü). Her tensörün şekli `(batch_size, channel * lowest_resolution, height // lowest_resolution, width // lowest_resolution)` olmalıdır. Çıktı, orijinal UNet'in orta blok aktivasyonunu koşullandırmak için kullanılabilir. | |
| [ControlNetModel](/docs/diffusers/main/tr/api/models/controlnet#diffusers.ControlNetModel)'nin çıktısı. | |
Xet Storage Details
- Size:
- 15.9 kB
- Xet hash:
- 5c2c18dae66f139bfd0e17b15cbe404328e528da2e1d8a3c0b340b234e29e5c7
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.