Stable Diffusion Rehberi: txt2img, Inpainting, LoRA ve Performans Optimizasyonu
Stable Diffusion Kullanım Rehberleri

Stable Diffusion Rehberi: txt2img, Inpainting, LoRA ve Performans Optimizasyonu

Stable Diffusion Kullanım Rehberleri

7 dk okuma süresi
Bu rehber, Stable Diffusion’ı pratik şekilde kullanmak isteyenler için Latent Diffusion temellerinden başlayarak txt2img ve inpainting akışlarına, ardından LoRA ile parametre-verimli özelleştirmeye ve hız/bellek optimizasyonlarına kadar adım adım yol gösterir. Üretim (ticari/kurumsal) kullanım öncesi, seçtiğiniz modelin lisansını/model kartını doğrulamanız gerektiğini de özetler.
Stable Diffusion Rehberi: txt2img, Inpainting, LoRA ve Performans Optimizasyonu

Stable Diffusion, metin komutlarından (prompt) görsel üretebilmesiyle yaygınlaşan bir “difüzyon” modeli ailesidir. Bu yazı; ilk kez deneyenler, daha kontrollü çıktılar isteyenler ve inpainting (bölgesel düzenleme) / LoRA (özelleştirme) ile işini ilerletmek isteyenler için pratik bir yol haritası sunar.

Not (lisans): Üretimde (ticari veya kurumsal) kullanmadan önce seçtiğiniz modelin lisansını/model kartını mutlaka inceleyin; nihai referans ilgili lisans dosyasıdır. Örnek lisans metni için: LICENSE-MODEL.


1) Stable Diffusion mantığı: “Latent Diffusion” ne demek?

Stable Diffusion’ın teknik temelinde Latent Diffusion Model (LDM) yaklaşımı bulunur. Klasik difüzyon modelleri pikseller üzerinde çalışırken, LDM görüntüyü daha sıkıştırılmış bir latent (gizil) temsilde işler; bu da pratikte daha verimli örneklemeyi hedefler. Yaklaşımın ayrıntıları için: Rombach vd., Latent Diffusion Models.

Uygulama tarafında bu yaklaşım, aynı model ailesiyle farklı iş akışlarını kullanabilmenizi sağlar:

  • txt2img: Metinden sıfırdan görsel üretimi.
  • img2img: Var olan bir görseli dönüştürerek yeni görsel üretimi.
  • inpainting: Bir görselin belirli bir bölgesini maske ile seçip o bölgeyi yeniden üretme/düzeltme.

2) Başlamadan önce: Kurulum, donanım ve lisans

2.1 UI mı, kod mu?

Web arayüzleri hızlı denemeler için pratiktir. Ancak tekrarlanabilirlik, entegrasyon ve runtime kontrolü için kod tabanlı yaklaşım çoğu ekipte daha yönetilebilir olur.

2.2 Donanım beklentisi: Neyi garanti edemeyiz?

“Kaç GB VRAM gerekir?” sorusunun tek bir doğru yanıtı yoktur. Gereksinimler; model sürümüne, çözünürlüğe, örnekleme adımlarına ve seçtiğiniz optimizasyonlara göre değişir. En sağlıklı yöntem, hedef çözünürlük ve iş yükünüzle yerel test yapıp “çalışan ayarları” dokümante etmektir.

2.3 Lisans ve kullanım koşulları (özellikle ticari kullanım)

Stable Diffusion modelleri genellikle bir model kartı ve lisans metni ile gelir; bazı kullanım senaryoları kısıtlanabilir veya ek yükümlülükler doğurabilir. Üretimde kullanmadan önce resmi lisansı okuyun ve gerekiyorsa hukuk ekibinizle değerlendirin: Stability AI Stable Diffusion lisansı (LICENSE-MODEL).


3) txt2img: Temel üretim iş akışı ve pratik prompt yazımı

3.1 txt2img’de en kritik parametreler

txt2img çıktısını en çok etkileyen alanlar:

  • Prompt: İçerik, stil, ışık, kompozisyon, kamera dili.
  • Negative prompt (opsiyonel): İstemediğiniz özellikler (bulanıklık, düşük detay vb.).
  • Seed: Aynı ayarlarla aynı çıktıyı yeniden üretme (tekrarlanabilirlik).
  • Guidance (CFG): Prompt’a ne kadar “sadık” kalınacağı (aşırı yüksek değerler artefakt oluşturabilir).
  • Steps: Örnekleme adımı; kalite-süre dengesini etkiler.
  • Çözünürlük: Hem kaliteyi hem bellek tüketimini ciddi etkiler.

3.2 Prompt şablonları (kopyala-uygula)

  • Ürün görseli: “(ürün adı), clean studio lighting, white background, soft shadows, high detail, product photography”
  • Portre: “portrait of (subject), natural light, 85mm lens look, shallow depth of field, realistic skin texture”
  • İllüstrasyon: “(scene), detailed illustration, vibrant colors, cinematic composition, concept art”

İpucu: Çok uzun prompt bazen işe yarar; bazen de modeli “kararsız” bırakır. Küçük artışlarla ilerleyip işe yarayan parçaları bir “prompt kütüphanesi” olarak saklamak verimi yükseltir.

3.3 Python ile txt2img (örnek iskelet)

Aşağıdaki kod, kavramsal akışı göstermek için bir iskelettir. Kullanacağınız sınıf/parametre isimleri seçtiğiniz modele ve kütüphane sürümlerine göre değişebilir; bu nedenle kullandığınız aracın resmi dokümantasyonunu esas alın.

Python iskeleti (txt2img):

from diffusers import StableDiffusionPipeline
import torch

model_id = "..."
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16)
pipe = pipe.to("cuda")

prompt = "..."
image = pipe(prompt=prompt, num_inference_steps=..., guidance_scale=...).images[0]
image.save("output.png")

Bellek/hız notu: FP16 kullanımı ve bazı performans seçenekleri (ör. bellek verimli attention, derleme) kimi ortamlarda fayda sağlayabilir. Bu tür seçeneklere dair örnek ve notlar için (inpainting özelinde) Hugging Face dokümantasyonuna bakın: diffusers inpaint.


4) Inpainting rehberi: Maske ile kontrollü düzenleme

Inpainting, bir görselin belirli bir bölgesini yeniden üretmek için idealdir: yüz detayı düzeltme, arka plan değiştirme, obje ekleme/çıkarma gibi.

4.1 Maske mantığı: Beyaz ve siyah neyi ifade eder?

Hugging Face diffusers inpainting dokümantasyonundaki maske yorumuna göre (kaynak):

  • Beyaz alan: Yeniden doldurulacak / üretilecek bölge.
  • Siyah alan: Korunacak bölge.

Maske hazırlarken “ne değişsin?” sorusunu beyazla işaretlediğinizden emin olun.

4.2 İyi bir inpainting sonucu için 6 ipucu

  1. Maske kenarlarını yumuşatın: Çok keskin kenarlar dikiş izine benzer geçişlere neden olabilir.
  2. Prompt’ta bağlam verin: Sadece eklenecek nesneyi değil, ışık/ortamı da tarif edin.
  3. Tutarlılık hedefleyin: “same perspective, matching lighting” gibi ifadeler yardımcı olabilir.
  4. Çok büyük alanları tek seferde değiştirmeyin: Büyük değişiklikleri parçalara bölmek daha kontrollüdür.
  5. Seed ile iterasyon yapın: Aynı maske ve prompt ile farklı seed’ler deneyip en iyi sonucu seçin.
  6. Sonradan iyileştirme planlayın: Gerekirse ayrı bir upscale/iyileştirme adımı düşünün.

4.3 diffusers ile inpainting (örnek iskelet)

Python iskeleti (inpaint):

from diffusers import AutoPipelineForInpainting
import torch

pipe = AutoPipelineForInpainting.from_pretrained("...", torch_dtype=torch.float16)
pipe = pipe.to("cuda")

prompt = "..."
# image: PIL Image, mask_image: PIL Image (beyaz=doldur, siyah=koru)
result = pipe(prompt=prompt, image=image, mask_image=mask_image).images[0]

Detaylı örnekler ve (inpainting akışında) bellek/performans notları için: Hugging Face diffusers: Inpainting.


5) İleri seviye: Özelleştirme (LoRA) ve ne zaman gerekir?

Prompt ile istediğiniz stile/karaktere/marka diline yaklaşmak zor olduğunda, ince ayar (fine-tuning) veya daha hafif uyarlama yöntemleri devreye girer. LoRA (Low-Rank Adaptation), önceden eğitilmiş ağırlıkları tamamen güncellemek yerine düşük-rank adaptörler üzerinden öğrenilebilir parametre sayısını azaltmayı hedefleyen bir yaklaşımdır (LoRA makalesi).

Verimlilik notu: LoRA, çoğu senaryoda eğitim için gereken öğrenilebilir parametreleri azaltır; pratikte bellek kullanımı, eğitim süresi ve toplam maliyet etkisi veri boyutu, çözünürlük, batch, altyapı ve eğitim stratejinize bağlı olarak değişebilir. Bu nedenle küçük benchmark koşuları yapmak en güvenilir yaklaşımdır.

5.1 LoRA ne zaman mantıklı?

  • Tekrarlanan bir stil üretiyorsanız.
  • Belirli bir ürün/karakter/konsept için tutarlılık istiyorsanız.
  • Prompt karmaşıklığını azaltmak ve daha öngörülebilir sonuç almak istiyorsanız.

5.2 LoRA iş akışı: Uçtan uca kontrol listesi

  1. Hedefi netleştirin: Tek bir ana hedef seçin (stil mi, karakter mi, ürün mü?).
  2. Veri hazırlığı: Telif/lisansı uygun görseller kullanın; istenmeyen artefaktlar (filigran vb.) modele taşınabilir.
  3. Caption/etiketleme: Kısa ve tutarlı açıklamalar kontrolü artırabilir.
  4. İteratif eğitim: Küçük denemeler yapıp çıktı kalitesini kıyaslayın.
  5. Doğrulama seti: Eğitimde kullanılmayan örneklerle aşırı uyumu kontrol edin.
  6. Sürümleme: LoRA’yı (v1, v2) ve hangi temel modelle uyumlu olduğunu not edin.

6) Runtime optimizasyonu: Daha hızlı ve daha az bellekle çalışmak

En sık sorunlar “yavaş üretim” ve “GPU belleği yetmedi” hatalarıdır. Genellikle birkaç tekniği birlikte denemek gerekir. Inpainting senaryosu üzerinden bazı bellek/performans seçenekleri için başlangıç referansı: diffusers inpaint.

6.1 Hız/bellek için pratik ayarlar (genel yaklaşım)

  • FP16 (half precision): Uyumlu GPU’larda bellek tüketimini azaltabilir.
  • Bellek verimli attention: Kurulumunuza bağlı olarak bellek/performans dengesini iyileştirebilir (örnek ve notlar için dokümantasyona bakın).
  • Derleme/optimizasyon: Bazı iş yüklerinde hız kazancı sağlayabilir; her ortamda aynı sonucu vermeyebilir (sürüm/driver bağımlı olabilir).
  • Offload/iş yükünü bölme: VRAM darboğazında çözüm olabilir (çoğu zaman hız pahasına).
  • Çözünürlük ve batch: VRAM’i en çok etkileyen değişkenlerdendir.

6.2 Optimizasyonları güvenli biçimde uygulama planı

  1. Önce kalite hedefini sabitleyin: Örn. çözünürlük ve steps aralığı.
  2. Sonra tek tek değiştirin: Aynı seed ile A/B kıyas yapın.
  3. Log tutun: Süre, bellek kullanımı, hata oranı, sürüm bilgileri (PyTorch/CUDA) gibi metrikleri kaydedin.
  4. Dağıtımda kilitleyin: Model ve bağımlılık sürümlerini sabitleyin.

7) Üretim kalitesi: Tekrarlanabilirlik, güvenlik ve yönetişim

7.1 Tekrarlanabilirlik (reproducibility) için minimumlar

  • Seed kaydı (her görsel için).
  • Model sürümü ve temel checkpoint bilgisi.
  • Prompt ve ayarlar (steps, guidance, çözünürlük).
  • Kitaplık sürümleri ve çalışma cihazı notu.

7.2 Lisans ve içerik politikaları

Kurumsal kullanımda iki ayrı boyut vardır: (1) model lisansı/kullanım koşulları, (2) üretilen içeriğin kullanım senaryosu (marka güvenliği, telif ve etik riskler). Model kartlarında yer alan kısıtlar ve yükümlülükler bağlayıcı olabilir. Bu nedenle lisansı doğrudan kaynağından okuyun: LICENSE-MODEL.


8) Hızlı başlangıç özeti (1 sayfalık checklist)

  • Temel: txt2img ile prompt + seed + çözünürlük + steps dengesini oturtun.
  • Düzenleme: Inpainting’de maske mantığını doğru uygulayın (beyaz=doldur, siyah=koru).
  • Optimizasyon: FP16 ve bellek/hız seçeneklerini kendi iş yükünüzde A/B test edin.
  • Özelleştirme: Tutarlılık gerekiyorsa LoRA gibi parametre-verimli uyarlamaları değerlendirin.
  • Yönetişim: Model lisansını ve kullanım koşullarını üretimden önce doğrulayın.

Kaynaklar

Yorumlar

Henüz yorum yapılmamış. İlk yorumu sen yaz.