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.