Phase 08: Generative AI

StyleGAN

Çoğu jeneratör hareket eder .zStyleGAN onu bölüyor: ilk haritazOrtalama bir kişiye.w, sonra enjekte wAdaIN'den gelen bu tek değişim gizli alanı çözüp fotorealist yüzleri yedi yıl boyunca çözülmüş bir sorun haline getirdi.

Type: Build

Languages: Python

Prerequisites: Phase 8 · 03 (GANs), Phase 4 · 08 (Normalization), Phase 3 · 07 (CNNs)

Time: ~45 minutes

Sorun

DCGAN haritası .zTranspose konvulsiyonları bir yığın yoluyla bir görüntüye.z poz, aydınlatma, kimlik, arka plan birbirine karışmış.zModelle "eşit kişi, farklı duruş" soramazsınız çünkü temsil bu şekilde faktör değildir.

Karras et al. (2019, NVIDIA) önerisi: beslenmeyi bırakın z- Bir sabit besleyin.4×4×5128 katmanlı bir MLP öğrenin ki haritalar yapsın.z ∈ Z → w ∈ W- Enjeksiyonw Adaptive instance normalization (AdaIN) aracılığıyla her çözünürlükte: her bir konv özellik haritasını normalleştirin, sonra wStochastic detaylar için katmanlık gürültü ekleyin (deriden porlar, saç iplikleri).

Sonuç:W"Yüksek seviye stili" (koşul, kimlik) vs. "yenis stili" (yalnızca ışıklandırma, renk) için yaklaşık ortogonal ekseller vardır.wDüşük çözünürlük seviyeleri ve B görüntüleri için wBu kilitlenmemiş düzenleme, alanlar arası stilleştirme ve tüm "StyleGAN-inversion" araştırma hattı.

Anlaşım

!StyleGAN: mapping network + AdaIN + per-layer noise

Mapping network. f: Z → W, 8 katlı bir MLP.Z = N(0, I)^512- Evet .WGaussian olmak zorunda değil veriye göre şekil öğrenir.

Synthesis network.Öğrenilmiş bir sabitden başlar.4×4×512. Her çözünürlük blokları: upsample → conv → AdaIN(w_i) → noise → conv → AdaIN(w_i) → noiseKararlar iki kat: 4, 8, 16, 32, 64, 128, 256, 512, 1024.

AdaIN.

AdaIN(x, y) = y_scale · (x - mean(x)) / std(x) + y_bias

neredey_scaleve y_biasw"Style" burada özellik haritasının birinci ve ikinci sıradaki istatistikleridir.

Per-layer noise.Tek kanallı Gaussian gürültüsü, her özellik haritasına eklenir ve öğrenilen bir kanal açısından ölçeklenir.

Truncation trick.Sonuçta, örnekz, hesaplamaw = mapping(z)O zaman ...w' = ŵ + ψ·(w - ŵ)neredeŵortalama wÇok sayıda örnek üzerinde.ψ < 1Neredeyse her StyleGAN demo kullanıyor ψ ≈ 0.7- Evet .

StyleGAN 1 → 2 → 3

VersionYearInnovation
StyleGAN2019Mapping network + AdaIN + noise + progressive growing.
StyleGAN22020Weight demodulation replaces AdaIN (fixes droplet artifacts); skip/residual architecture; path-length regularization.
StyleGAN32021Alias-free convolution + equivariant kernels; eliminates texture sticking to pixel grid.
StyleGAN-XL2022Class-conditional, 1024², ImageNet.
R3GAN2024Rebrands with stronger reg; closes gap to diffusion on FFHQ-1024 with 20x fewer params.

2026 yılında StyleGAN3 (a) yüksek FPS'de dar alan fotorealismi, (b) birkaç atışlı alan uyarlaması (100 görüntü ile yeni bir veri kümesine tren, dondurma haritalama), (c) tersleme tabanlı düzenleme (gör) için standart olarak kalır.wGerçek bir fotoğrafı yeniden oluşturur, sonra onu düzenler.w). Açık alanlı metin-resim için, yayılma aracı değildir.

Yapın

code/main.py1-D'de bir oyuncak "style-GAN lite" uygulamaktadır: bir haritalama MLP, öğrenilen sabit vektörü alan ve onu modüle eden bir sentez fonksiyonu w-Derived scale/bias, ve per layer gürültü.wAfine modülasyon eşleşmeleri veya çarpmalarla bağlanarak z- Generatör girişine.

Adım 1: haritalama ağı

pythondef mapping(z, M):
    h = z
    for i in range(num_layers):
        h = leaky_relu(add(matmul(M[f"W{i}"], h), M[f"b{i}"]))
    return h

Adım 2: Adaptif durum normalleşmesi

pythondef adain(x, w_scale, w_bias):
    mu = mean(x)
    sd = std(x)
    x_norm = [(xi - mu) / (sd + 1e-8) for xi in x]
    return [w_scale * xi + w_bias for xi in x_norm]

Özellikler haritası ölçeği ve önyargısı wDüzsel projeksiyon yoluyla.

Adım 3: Katmanlık gürültü

pythondef add_noise(x, sigma, rng):
    return [xi + sigma * rng.gauss(0, 1) for xi in x]

Sigma kanal başına öğrenilmelidir.

Tuzaklar

  • Droplet artifacts.StyleGAN 1 özellik haritalarında bir damla damlasını üretti çünkü AdaIN ortalamayı sıfırladı. StyleGAN 2'nin ağırlık demodülasyonu, bunun yerine kıvrım ağırlıklarını ölçeklendirip düzeltir.
  • Texture sticking.StyleGAN 1 ve 2 dokuları, nesne koordinatları değil, piksel koordinatları takip eder (interpolasyon sırasında görünür). StyleGAN 3'ün takma isimsiz kıvrımları bunu pencerelmiş sink filtreleri ile düzeltir.
  • Mode coverage.Çarpışmaψ < 0.7temiz görünüyor ama dar bir kutuptan örnekler; kullan ψ = 1.0Eğer çeşitliliğe ihtiyacınız varsa.
  • Inversion is lossy.Gerçek bir fotoğrafı WGenellikle optimizasyon veya bir kodlayıcı (e4e, ReStyle, HyperStyle) yoluyla yapılır.

Kullan

Use caseApproach
Photoreal human faces (anime, product, narrow)StyleGAN3 FFHQ / custom fine-tune
Face editing from a photoe4e inversion + StyleSpace / InterFaceGAN directions
Face swap / reenactmentStyleGAN + encoder + blending
Avatar pipelinesStyleGAN3 w/ ADA for low-data fine-tune
Domain adaptation from a few imagesFreeze mapping network, fine-tune synthesis
Multi-modal or text-conditioned generationDon't — use diffusion

Cevabı "bir kişinin yüzünün fotoğrafı" olduğu ürün sınıfı gösterimleri için StyleGAN, sonuçlama maliyetinde yayılım (tek ileri geçiş, <10ms bir 4090) ve aynı kalite çubuğu için keskinliği yener.

Gönder

  • Kaydet .outputs/skill-stylegan-inversion.md. Skill gerçek bir fotoğraf çekir ve sonuçlar: tersleme yöntemi (e4e / ReStyle / HyperStyle), beklenen gizli kayb, düzenleme bütçesi (ne kadar uzun Weserlerden önce hareket edebilirsiniz) ve bilinen iyi düzenleme yönlerinin (yaş, ifade, poz) bir listesini.

Egzersizler

  1. Easy.Çık .code/main.py- Evet .adain_on=Trueve adain_on=False- Sıkı bir latente ile rahatsız edilmiş bir latente için çıkışların yayılmasını karşılaştırın.
  2. Medium.Karıştırma düzenlenmesini uygula: bir eğitim parti için hesaplamaw_a- Evet .w_b, ve uygulanır w_aSintezin ilk yarısında ve w_bDekodör çözülmüş stiller öğrenir mi?
  3. Hard.Önceden eğitilmiş bir StyleGAN3 FFHQ modeli (ffhq-1024.pkl) alın.wEtiketlenmiş örnekler üzerinde bir SVM'yi eğitirek "gümüş" kontrol eden yön; kimlik sürüklemeden önce ne kadar ileri gidebileceğinizi bildirin.

Anahtar Terimler

TermWhat people sayWhat it actually means
Mapping network"The MLP"f: Z → W, 8 layers, decouples latent geometry from data statistics.
W space"The style space"Output of the mapping network; roughly disentangled.
AdaIN"Adaptive instance norm"Normalize feature map, then scale + shift by w-projection.
Truncation trick"Psi"w = mean + ψ·(w - mean), ψ<1 trades diversity for quality.
Path-length regularization"PL reg"Penalizes large changes in image per unit change in w; makes W smoother.
Weight demodulation"The StyleGAN2 fix"Normalize conv weights instead of activations; kills droplet artifacts.
Alias-free"StyleGAN3's trick"Windowed sinc filters; eliminates texture sticking to the pixel grid.
Inversion"Find w for a real image"Optimize or encode x → w so G(w) ≈ x.

Üretim notu: StyleGAN'ın neden 2026'da hala gemiye gönderiliyor

StyleGAN3 4090'da 10242 FFHQ yüzü 10 ms'ten kısa bir süre içinde üretir num_steps = 1Bu, herhangi bir görüntü jeneratörü için zemin gecikmesi. 50 adımlı bir SDXL + VAE-decode borusu aynı çözünürlükte ~ 3 saniye.300× gap, ve dar alan ürünleri için (avatar hizmetleri, kimlik belgeleri boru hattı, stok yüzü üretimi) TCO'da kazanır.

İki operasyonsal sonuç:

  • No scheduler, no batcher.Hedefli işlevdeki statik parti en iyisidir. Sürekli partileşme (LLM ve yayım için gereklidir) her talep aynı FLOP'leri aldığı için sıfır fayda sağlar.
  • Truncation ψ is the safety knob. ψ < 0.7Karteleme ağının aralığındaki dar bir kutuptan örnekler. Bu, servis katmanının örnek değişkenliği üzerinde sahip olduğu tek kaldıraç.ψEn yüksek yükte, premium kullanıcılar için yükseltin.

Daha Fazla Okumak

This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.

Browse the complete course catalog or open this lesson on GitHub.