Generative AI ile Görsel Üretimi: Stable Diffusion Rehberi
Generative AI ve Görsel Üretim Nedir?
Generative AI (Üretken Yapay Zekâ), mevcut verilerden öğrenerek yeni ve özgün içerikler oluşturabilen yapay zekâ modellerinin genel adıdır. Bu teknoloji; metin, müzik, video ve görsel gibi birçok farklı türde içerik üretebilir. Görsel üretimi alanında ise son yılların en çığır açan gelişmelerinden biri şüphesiz Stable Diffusion olmuştur.
Stable Diffusion, 2022 yılında Stability AI tarafından açık kaynak olarak yayınlanan bir latent diffusion model'dir. Metin tabanlı komutlardan (prompt) yüksek kaliteli görseller üretebilmesi, düşük donanım gereksinimleriyle çalışabilmesi ve açık kaynak yapısı sayesinde kısa sürede büyük bir topluluk oluşturmuştur.
Stable Diffusion Nasıl Çalışır?
Stable Diffusion'ın çalışma prensibini anlamak için diffusion (yayılım) kavramını bilmek gerekir. Diffusion modelleri iki temel aşamadan oluşur:
- Forward Process (İleri Süreç): Bir görsele kademeli olarak Gaussian gürültüsü eklenir. Bu süreç sonunda görsel tamamen rastgele bir gürültü haritasına dönüşür.
- Reverse Process (Geri Süreç): Model, bu gürültüyü adım adım temizleyerek anlamlı bir görsel oluşturmayı öğrenir. İşte asıl "üretim" bu aşamada gerçekleşir.
Stable Diffusion'ı diğer diffusion modellerinden ayıran en önemli özellik, bu işlemleri doğrudan piksel uzayında değil, latent (gizli) uzayda gerçekleştirmesidir. Bu sayede hesaplama maliyeti ciddi ölçüde düşer. Modelin temel bileşenleri şunlardır:
- VAE (Variational Autoencoder): Görseli piksel uzayından latent uzaya sıkıştırır ve geri açar.
- U-Net: Latent uzayda gürültü temizleme işlemini gerçekleştiren sinir ağıdır.
- Text Encoder (CLIP): Metin komutlarını modelin anlayabileceği vektör temsillerine dönüştürür.
- Scheduler: Gürültü ekleme ve çıkarma adımlarını yöneten zamanlayıcıdır.
Geliştirme Ortamını Hazırlama
Stable Diffusion ile çalışmaya başlamak için Python ortamınızı hazırlamanız gerekir. En yaygın kullanılan kütüphane Hugging Face'in diffusers paketidir.
Gereksinimler
- Python 3.9 veya üzeri
- CUDA destekli bir NVIDIA GPU (en az 6 GB VRAM önerilir)
- PyTorch 2.0+
- diffusers, transformers, accelerate kütüphaneleri
Kurulum
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121
pip install diffusers transformers accelerate safetensors
pip install invisible-watermark xformers
Kurulumdan sonra GPU'nuzun düzgün çalıştığını doğrulamak için şu kodu çalıştırabilirsiniz:
import torch
print(f"PyTorch sürümü: {torch.__version__}")
print(f"CUDA kullanılabilir: {torch.cuda.is_available()}")
if torch.cuda.is_available():
print(f"GPU: {torch.cuda.get_device_name(0)}")
print(f"VRAM: {torch.cuda.get_device_properties(0).total_mem / 1e9:.1f} GB")
İlk Görselinizi Üretme
Artık ortamınız hazır olduğuna göre, ilk görselinizi üretebilirsiniz. Aşağıdaki kod, Stable Diffusion XL (SDXL) modelini kullanarak bir görsel oluşturur:
from diffusers import StableDiffusionXLPipeline
import torch
# Modeli yükle
pipe = StableDiffusionXLPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
torch_dtype=torch.float16,
variant="fp16",
use_safetensors=True
)
pipe.to("cuda")
# Bellek optimizasyonu
pipe.enable_model_cpu_offload()
pipe.enable_vae_slicing()
# Görsel üret
prompt = "Kapadokya'da gün batımında sıcak hava balonları, sinematik fotoğraf, 8K"
negative_prompt = "bulanık, düşük kalite, deforme, çirkin"
image = pipe(
prompt=prompt,
negative_prompt=negative_prompt,
num_inference_steps=30,
guidance_scale=7.5,
width=1024,
height=1024
).images[0]
image.save("kapadokya_balonlar.png")
print("Görsel başarıyla oluşturuldu!")
Temel Parametreleri Anlamak
Üretim kalitesini doğrudan etkileyen birkaç kritik parametre vardır. Bunları iyi anlamak, istediğiniz sonuçlara ulaşmanızı kolaylaştırır.
num_inference_steps (Çıkarım Adımı Sayısı)
Modelin gürültüyü temizlemek için kaç adım atacağını belirler. Genellikle 20-50 arasında bir değer uygundur. Daha fazla adım daha detaylı sonuçlar verebilir ancak üretim süresi de artar. 30 adım çoğu senaryo için iyi bir başlangıç noktasıdır.
guidance_scale (CFG - Classifier-Free Guidance)
Modelin metne ne kadar sadık kalacağını kontrol eder. Düşük değerler (1-5) daha yaratıcı ama metinden sapabilen sonuçlar üretirken, yüksek değerler (10-20) metne daha bağlı kalır ancak aşırı doygun görsellere yol açabilir. 7-9 arası genellikle ideal dengeyi sağlar.
negative_prompt (Negatif Komut)
Görselde istemediğiniz özellikleri belirtmenizi sağlar. Yaygın negatif komut örnekleri:
negative_prompt = (
"blurry, low quality, low resolution, deformed, ugly, "
"bad anatomy, bad hands, extra fingers, missing fingers, "
"watermark, text, signature, oversaturated"
)
Seed (Tohum Değeri)
Aynı parametrelerle tekrarlanabilir sonuçlar almak için seed değeri kullanabilirsiniz:
generator = torch.Generator(device="cuda").manual_seed(42)
image = pipe(
prompt="Fütüristik İstanbul silüeti, neon ışıklar, cyberpunk tarzı",
generator=generator,
num_inference_steps=30,
guidance_scale=7.5
).images[0]
Prompt Mühendisliği İpuçları
Stable Diffusion'dan en iyi sonuçları almak için prompt yazma sanatını öğrenmek çok önemlidir. İşte etkili prompt yazmanın temel kuralları:
- Spesifik olun: "Güzel bir manzara" yerine "Uludağ'ın karlı zirvesinden Bursa ovası manzarası, altın saat ışığı, geniş açı" yazın.
- Stil belirtin: "Yağlı boya tablo tarzında", "sinematik fotoğraf", "anime tarzı", "minimalist illüstrasyon" gibi stil belirleyiciler ekleyin.
- Kalite tetikleyicileri kullanın: "8K", "ultra detaylı", "profesyonel fotoğraf", "ödüllü" gibi ifadeler kaliteyi artırabilir.
- Işık ve atmosfer belirtin: "Gün batımı ışığı", "volumetrik ışık", "stüdyo aydınlatması", "dramatik gölgeler" gibi tanımlar ekleyin.
- Kamera açısı verin: "Kuş bakışı", "yakın çekim", "geniş açı lens", "85mm portre lensi" gibi fotoğrafçılık terimleri kullanın.
Image-to-Image: Mevcut Görselleri Dönüştürme
Stable Diffusion sadece sıfırdan görsel üretmekle kalmaz, mevcut görselleri de dönüştürebilir. Bu özellik, taslak çizimlerden detaylı görseller oluşturmak veya mevcut fotoğrafları farklı tarzlara dönüştürmek için kullanılır.
from diffusers import StableDiffusionXLImg2ImgPipeline
from PIL import Image
import torch
pipe = StableDiffusionXLImg2ImgPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
torch_dtype=torch.float16,
variant="fp16"
)
pipe.to("cuda")
# Kaynak görseli yükle
init_image = Image.open("taslak_cizim.png").resize((1024, 1024))
image = pipe(
prompt="Detaylı dijital sanat, fantastik şehir manzarası, epik",
image=init_image,
strength=0.75,
num_inference_steps=30,
guidance_scale=7.5
).images[0]
image.save("donusturulmus_gorsel.png")
Burada strength parametresi, orijinal görsele ne kadar sadık kalınacağını belirler. 0.0 orijinal görseli olduğu gibi bırakırken, 1.0 tamamen yeni bir görsel üretir. Genellikle 0.5-0.8 arası iyi sonuçlar verir.
ControlNet ile Hassas Kontrol
ControlNet, Stable Diffusion'a ek koşullar (kenar haritası, poz tahmini, derinlik haritası vb.) sağlayarak üretim üzerinde çok daha hassas kontrol imkânı sunar.
from diffusers import StableDiffusionXLControlNetPipeline, ControlNetModel
import torch
controlnet = ControlNetModel.from_pretrained(
"diffusers/controlnet-canny-sdxl-1.0",
torch_dtype=torch.float16
)
pipe = StableDiffusionXLControlNetPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
controlnet=controlnet,
torch_dtype=torch.float16
)
pipe.to("cuda")
pipe.enable_model_cpu_offload()
ControlNet'in en popüler kullanım alanları şunlardır:
- Canny Edge: Kenar haritasına göre görsel üretimi
- OpenPose: İnsan pozu referansıyla görsel üretimi
- Depth: Derinlik haritasına göre sahneleme
- Scribble: Basit çizimlerden detaylı görseller üretme
Bellek Optimizasyonu ve Performans
Stable Diffusion modelleri yüksek VRAM tüketebilir. Sınırlı GPU belleğiyle çalışanlar için bazı optimizasyon teknikleri:
# Attention slicing - bellek kullanımını düşürür
pipe.enable_attention_slicing()
# VAE slicing - büyük görsellerde bellek tasarrufu
pipe.enable_vae_slicing()
# Model CPU offload - kullanılmayan bileşenleri CPU'ya taşır
pipe.enable_model_cpu_offload()
# xformers ile hızlandırma (kuruluysa)
pipe.enable_xformers_memory_efficient_attention()
# Float16 ile çalışmak bellek kullanımını yarıya indirir
pipe = StableDiffusionXLPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
torch_dtype=torch.float16
)
Bu optimizasyonlarla 6 GB VRAM'a sahip bir GPU'da bile SDXL modelini çalıştırmanız mümkün olabilir.
LoRA ile Model İnce Ayarı
LoRA (Low-Rank Adaptation), büyük modelleri düşük maliyetle belirli bir stile veya konsepte uyarlamak için kullanılan popüler bir tekniktir. Topluluk tarafından oluşturulmuş binlerce LoRA modeli mevcuttur.
from diffusers import StableDiffusionXLPipeline
import torch
pipe = StableDiffusionXLPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
torch_dtype=torch.float16
)
pipe.to("cuda")
# LoRA ağırlıklarını yükle
pipe.load_lora_weights("path/to/lora_weights.safetensors")
# LoRA etkisini ayarla (0.0 - 1.0 arası)
pipe.fuse_lora(lora_scale=0.8)
image = pipe(
prompt="Belirli bir stilde portre fotoğrafı",
num_inference_steps=30
).images[0]
Toplu Görsel Üretimi
Birden fazla görsel üretmek istediğinizde farklı seed değerleriyle döngü kurabilirsiniz:
import torch
from diffusers import StableDiffusionXLPipeline
pipe = StableDiffusionXLPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
torch_dtype=torch.float16
)
pipe.to("cuda")
prompt = "Minimalist logo tasarımı, geometrik şekiller, mavi tonlar"
seeds = [42, 123, 456, 789, 1024]
for i, seed in enumerate(seeds):
generator = torch.Generator(device="cuda").manual_seed(seed)
image = pipe(
prompt=prompt,
generator=generator,
num_inference_steps=30,
guidance_scale=7.5
).images[0]
image.save(f"logo_varyasyon_{i+1}_seed{seed}.png")
print(f"Varyasyon {i+1} (seed={seed}) oluşturuldu.")
Etik Kullanım ve Sorumluluk
Generative AI ile görsel üretimi güçlü bir araçtır ve beraberinde etik sorumluluklar getirir:
- Telif hakları: Üretilen görsellerin ticari kullanımı konusunda modelin lisans şartlarını mutlaka inceleyin.
- Deepfake riski: Gerçek kişilerin izinsiz görsellerini üretmekten kaçının.
- Şeffaflık: AI ile üretilmiş görselleri paylaşırken bunu belirtmek iyi bir uygulamadır.
- Önyargı farkındalığı: Modeller eğitim verilerindeki önyargıları yansıtabilir; sonuçları eleştirel gözle değerlendirin.
Sonuç ve İleriye Bakış
Stable Diffusion, görsel üretimi alanını demokratikleştiren ve herkesin erişimine açan devrim niteliğinde bir teknolojidir. Açık kaynak yapısı sayesinde sürekli gelişen bir ekosisteme sahiptir. SDXL Turbo, Stable Diffusion 3 ve FLUX gibi yeni nesil modeller, hem kaliteyi hem de hızı sürekli artırmaktadır.
Bu rehberde ele aldığımız konular — temel kurulum, prompt mühendisliği, image-to-image dönüşüm, ControlNet, LoRA ve optimizasyon teknikleri — Stable Diffusion ile üretken projeler geliştirmeniz için sağlam bir temel oluşturur. Artık kendi projelerinizde bu teknolojileri deneyerek yaratıcılığınızın sınırlarını keşfedebilirsiniz.