Diffüzyon modellerine kenar tespiti, iskelet pozu ve derinlik haritası gibi yapısal koşullar ekleyerek görüntü üretimini hassas biçimde yönlendiren sinir ağı mimarisi.

ControlNet, Lvmin Zhang ve Maneesh Agrawala tarafından 2023 yılında yayımlanan "Adding Conditional Control to Text-to-Image Diffusion Models" makalesiyle tanıtılan bir sinir ağı mimarisidir. Stable Diffusion gibi önceden eğitilmiş diffüzyon modellerine, metin koşullamasına ek olarak yapısal görsel koşullar eklemeyi mümkün kılar; böylece üretilen görüntü üzerinde yalnızca metinle ifade edilemeyen kenar, şekil, poz ve derinlik bilgilerini doğrudan kullanıcı kontrolüne sunar. Mimari olarak ControlNet, mevcut UNet tabanlı diffüzyon modelinin kodlayıcı katmanlarını "kilitleyerek" kopyalar. Orijinal ağırlıklar donuk tutulur ve eğitim yalnızca kopyalanan yan daldaki ek katmanlarda gerçekleşir. Bu yaklaşım iki önemli avantaj sağlar: (1) Mevcut model bilgisi korunur — büyük ölçekli yeniden eğitim gerekmez; (2) Koşullama mekanizması ayrı tutulduğundan yeni kontrol türleri (farklı kenar dedektörleri, iskelet formatları vb.) modüler biçimde eklenebilir. ControlNet'in desteklediği başlıca koşullama türleri şunlardır: Canny kenar tespiti (nesne sınırlarını tel kafes olarak aktarma), HED ve MLSD çizgi dedektörleri, OpenPose insan iskelet pozu (vücut anahtar noktaları), Midas derinlik haritası (ön plan/arka plan mesafesi), normal harita (yüzey yönelimi), segmentasyon haritası (SemanticSegmentation) ve scribble (serbest çizim). Kullanıcı bu koşullardan bir veya birkaçını birleştirebilir. Teknik uygulama açısından ControlNet, diffüzyon modelinin her adımında gürültü tahminini iki farklı girdiyle besler: metin gömmeleri ve koşul görüntüsü. Yan ağın çıktıları "sıfır evrişim" (zero convolution) katmanları aracılığıyla ana ağa eklenir; eğitim başında bu katmanlar sıfır ağırlıkla başlar, böylece model eğitim öncesinde orijinal çıktıyı bozmaz. Pratik kullanımda ControlNet, AUTOMATIC1111 ve ComfyUI gibi Stable Diffusion arayüzleriyle entegre çalışır. Karakter tutarlılığı, mimari görselleştirme, animasyon kare-kare çalışma ve kolaj-fotoğraf dönüşümü gibi profesyonel üretim senaryolarında yaygın kullanım bulur. Diffusers kütüphanesi üzerinden Python ile de kolayca erişilebilir.

Neden ControlNet? Metin Koşullamasının Sınırları

Metin-görüntü diffüzyon modelleri güçlü olmakla birlikte yalnızca metinle ifade edilemeyen yapısal kısıtlamaları uygulamakta yetersiz kalır. "Sol elini kaldıran bir karakter" yazıldığında model doğru pozu garanti edemez; mimarî bir taslak verildiğinde hangi duvarın nerede biteceğini belirlemek imkânsızlaşır. ControlNet bu boşluğu, mevcut bir görüntüden çıkarılan yapısal bilgiyi (kenar haritası, iskelet, derinlik) diffüzyon sürecine doğrudan koşullama olarak enjekte ederek kapatır.

Mimari: Kilitle-Kopyala-Koşullandır

ControlNet, Stable Diffusion'ın UNet kodlayıcı bloklarını değiştirmek yerine kopyalar. Kopyalanan ağ, koşul görüntüsünü işlerken orijinal ağırlıklar tamamen dondurulur. Yan ağın her çıkışı, "sıfır evrişim" adı verilen özel katmanlardan geçirilip orijinal ağ aktivasyonlarına eklenir. Eğitim başında sıfır ağırlıklı bu bağlantılar modeli kademeli olarak koşullamayı öğrenmeye yönlendirir; bu sayede hem kısa eğitim süresi hem de stabil başlangıç davranışı elde edilir.

Koşullama Türleri ve Kullanım Senaryoları

Canny kenar tespiti: nesne sınırlarını ve genel kompozisyonu koruyarak yeniden yorumlar — ürün görseli ve logo yeniden üretiminde kullanılır. OpenPose iskeleti: insan vücut pozunu anahtar noktalarla aktarır — karakter animasyonu ve dans referansı için idealdir. Midas derinlik haritası: ön-arka plan mesafe bilgisini aktarır — mimari görselleştirme ve sahne derinliği için kullanılır. Segmentasyon haritası: her nesnenin piksel maskesini aktararak tam düzen kontrolü sağlar. Kullanıcılar bu koşulları birleştirerek hem pozu hem de derinliği aynı anda aktarabilir.

Python ile ControlNet Kullanımı

HuggingFace Diffusers kütüphanesi, StableDiffusionControlNetPipeline sınıfıyla ControlNet entegrasyonunu birkaç satıra indirir: ControlNetModel.from_pretrained ile istenen koşullama modeli yüklenir, pipeline oluşturulur, koşul görüntüsü ve metin istemi birlikte verilir. AUTOMATIC1111 ve ComfyUI kullanıcıları için ControlNet eklentisi grafik arayüzden yüklenerek aynı iş akışına dahil edilebilir; komut satırı gerektirmez. Birden fazla ControlNet modeli aynı pipeline içinde zincirlenerek karmaşık koşullamalar oluşturulabilir.

Sık Sorulan Sorular

  • check_circle ControlNet hangi Stable Diffusion sürümleriyle çalışır?: SD 1.5 ve SDXL için ayrı ControlNet ağırlık setleri mevcuttur; bu iki sürüm ağırlık uyumlu değildir. SD 1.5 ControlNet modelleri daha yaygın ve çeşitlidir; SDXL için seçenek sayısı giderek artmaktadır. HuggingFace Hub veya Civitai üzerinden ilgili sürüm etiketine dikkat ederek indirmek gerekir.
  • check_circle ControlNet ve img2img arasındaki fark nedir?: img2img, kaynak görüntüyü gürültülendirerek yeniden üretir — genel renk ve kompozisyon korunur ancak yapısal kesinlik düşüktür. ControlNet ise kaynak görüntüyü doğrudan içerik olarak değil, yapısal referans olarak kullanır: yalnızca kenar, poz veya derinlik bilgisi aktarılır, renk ve stil tamamen metinden belirlenir. Bu da ControlNet'i yapısal tutarlılık gerektiren senaryolarda çok daha güçlü kılar.
  • check_circle Birden fazla ControlNet koşulu aynı anda kullanılabilir mi?: Evet. Diffusers MultiControlNetModel sınıfı ve AUTOMATIC1111/ComfyUI arayüzleri birden fazla koşullama girişini destekler. Her koşulun ağırlığı (conditioning_scale) ayrı ayrı ayarlanabilir; örneğin OpenPose ağırlığını 1.0, Canny ağırlığını 0.5 yaparak poza daha fazla, kenarlara daha az öncelik verilebilir.
  • check_circle ControlNet eğitmek ne kadar kaynak gerektirir?: Yeni bir koşullama türü için ControlNet ince ayarı (fine-tune), tam model eğitiminden çok daha hafiftir: yalnızca yan dal ağırlıkları güncellenir. 24 GB VRAM'li bir GPU ile birkaç bin görüntüden oluşan küçük veri setiyle 24-48 saatte kullanılabilir bir model elde edilebilir. HuggingFace diffusers train_controlnet.py scripti bu süreci otomatize eder.
  • check_circle ControlNet ile üretilen görseller ticari kullanıma uygun mu?: Bu, temel diffüzyon modelinin lisansına bağlıdır. Stable Diffusion 1.5 CreativeML Open RAIL-M lisansıyla dağıtılır — ticari kullanıma izin verir ancak zararlı içerik üretimi yasaktır. SDXL ise CreativeML OpenRAIL++-M lisansını kullanır. ControlNet mimarisinin kendisi Apache 2.0 lisansıyla açık kaynaklıdır.