Diffusers documentation

SD3ControlNetModel

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

SD3ControlNetModel

SD3ControlNetModel, Stable Diffusion 3 için ControlNet'in bir uygulamasıdır.

ControlNet modeli, Lvmin Zhang, Anyi Rao ve Maneesh Agrawala tarafından Adding Conditional Control to Text-to-Image Diffusion Models 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 SD3ControlNetModel, from_pretrained() ile yüklenmelidir.

from diffusers import StableDiffusion3ControlNetPipeline
from diffusers.models import SD3ControlNetModel, SD3MultiControlNetModel

controlnet = SD3ControlNetModel.from_pretrained("InstantX/SD3-Controlnet-Canny")
pipe = StableDiffusion3ControlNetPipeline.from_pretrained("stabilityai/stable-diffusion-3-medium-diffusers", controlnet=controlnet)

SD3ControlNetModel

sınıf diffusers.SD3ControlNetModel

< >

( sample_size: int = 128patch_size: int = 2in_channels: int = 16num_layers: int = 18attention_head_dim: int = 64num_attention_heads: int = 18joint_attention_dim: int = 4096caption_projection_dim: int = 1152pooled_projection_dim: int = 2048out_channels: int = 16pos_embed_max_size: int = 96extra_conditioning_channels: int = 0dual_attention_layers: tuple = ()qk_norm: str | None = Nonepos_embed_type: str | None = 'sincos'use_pos_embed: bool = Trueforce_zeros_for_pooled_projection: bool = True )

Parametreler

  • sample_size (int, varsayılan 128) — Latentlerin genişlik/yüksekliği. Eğitim sırasında sabittir çünkü bir dizi konum gömme (position embedding) öğrenmek için kullanılır.
  • patch_size (int, varsayılan 2) — Girdi verisini küçük yamalar (patch) haline getirmek için yama boyutu.
  • in_channels (int, varsayılan 16) — Girdideki gizli kanal sayısı.
  • num_layers (int, varsayılan 18) — Kullanılacak transformer bloğu katman sayısı.
  • attention_head_dim (int, varsayılan 64) — Her baştaki kanal sayısı.
  • num_attention_heads (int, varsayılan 18) — Çok başlı dikkat (multi-head attention) için kullanılacak baş sayısı.
  • joint_attention_dim (int, varsayılan 4096) — Ortak metin-görsel dikkati için kullanılacak gömme boyutu.
  • caption_projection_dim (int, varsayılan 1152) — Başlık gömme vektörlerinin gömme boyutu.
  • pooled_projection_dim (int, varsayılan 2048) — Toplanmış metin projeksiyonlarının gömme boyutu.
  • out_channels (int, varsayılan 16) — Çıktıdaki gizli kanal sayısı.
  • pos_embed_max_size (int, varsayılan 96) — Konumsal gömme (positional embeddings) için en büyük gizli (latent) yükseklik/genişlik.
  • extra_conditioning_channels (int, varsayılan 0) — Patch gömme için koşullandırmada kullanılacak ek kanal sayısı.
  • dual_attention_layers (tuple[int, ...], varsayılan ()) — Kullanılacak çift akışlı dönüştürücü bloklarının sayısı.
  • qk_norm (str, isteğe bağlı, varsayılan None) — Dikkat katmanında sorgu ve anahtar için kullanılacak normalizasyon. None ise normalizasyon kullanılmaz.
  • pos_embed_type (str, varsayılan "sincos") — Kullanılacak konumsal gömme türü. "sincos" ve None arasında seçim yapın.
  • use_pos_embed (bool, varsayılan True) — Konumsal gömme kullanılıp kullanılmayacağı.
  • force_zeros_for_pooled_projection (bool, varsayılan True) — Pooled projection gömme değerleri için sıfır zorlaması uygulanıp uygulanmayacağı. Bu, ControlNet modelinin config değerini okuyarak pipeline'lerde ele alınır.

Stable Diffusion 3 için ControlNet modeli.

enable_forward_chunking

< >

( chunk_size: int | None = Nonedim: int = 0 )

Parametreler

  • chunk_size (int, isteğe bağlı) — İleri besleme katmanlarının parça boyutu. Belirtilmezse, ileri besleme katmanı dim boyutlu her tensör üzerinde ayrı ayrı çalıştırılır.
  • dim (int, isteğe bağlı, varsayılan 0) — İleri besleme (feed-forward) hesabının parçalanacağı boyut. dim=0 (batch) veya dim=1 (dizi uzunluğu) arasında seçim yapın.

Dikkat işleyicisini ileri besleme parçalama kullanacak şekilde ayarlar.

forward

< >

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

Parametreler

  • hidden_states (torch.Tensor, şekli (batch size, channel, height, width)) — Girdi hidden_states.
  • controlnet_cond (torch.Tensor) — (batch_size, sequence_length, hidden_size) biçiminde koşullu girdi tensörü.
  • conditioning_scale (float, varsayılan 1.0) — ControlNet çıktıları için ölçekleme faktörü.
  • encoder_hidden_states (torch.Tensor, şekli (batch size, sequence_len, embed_dims)) — Kullanılacak koşullu gömme değerleri (prompt gibi girdi koşullarından hesaplanan gömme değerleri).
  • pooled_projections (torch.Tensor, şekli (batch_size, projection_dim)) — Girdi koşullarının gömülme değerlerinden yansıtılan gömülme değerleri.
  • timestep ( torch.LongTensor) — Gürültü azaltma adımını belirtmek için kullanılır.
  • joint_attention_kwargs (dict, isteğe bağlı) — Belirtilirse, diffusers.models.attention_processor içindeki self.processor altında tanımlanan AttentionProcessor'a iletilen bir kwargs sözlüğü.
  • return_dict (bool, isteğe bağlı, varsayılan True) — Düz bir tuple yerine ~models.transformer_2d.Transformer2DModelOutput döndürülüp döndürülmemesi.

SD3Transformer2DModel ileri yöntemi.

fuse_qkv_projections

< >

( )

Füzyonlu QKV projeksiyonlarını etkinleştirir. Kendi dikkat (self-attention) modülleri için tüm projeksiyon matrisleri (yani sorgu, anahtar, değer) füzyonlanır. Çapraz dikkat (cross-attention) modülleri için anahtar ve değer projeksiyon matrisleri füzyonlanır.

> Bu API 🧪 deneyseldir.

unfuse_qkv_projections

< >

( )

Etkinleştirilmişse birleşik QKV projeksiyonunu devre dışı bırakır.

> Bu API 🧪 deneyseldir.

SD3ControlNetOutput

sınıf diffusers.models.controlnets.SD3ControlNetOutput

< >

( controlnet_block_samples: tuple )

Update on GitHub