Phase 08: Generative AI

ستايلجان

معظم المولدات تتحركzفي كل طبقة في نفس الوقت. ستايلجان تقسيمها إلى جانبها: الخريطة الأولىzإلى مركز متوسط w، ثم حقن wهذا التغيير الوحيد فك الفضاء الخفيف وجعل الوجهات الصورية حقيقية مشكلة حل لسبع سنوات متتالية.

Type: Build

Languages: Python

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

Time: ~45 minutes

المشكلة

خرائط " دي سي جيان "zإلى صورة من خلال كومة من التحولات المنقولة. المشكلة:zيسيطر على كل شيء وضع، الإضاءة، الهوية، الخلفية متصمة مع بعضها البعض.zلا يمكنك أن تسأل النموذج " نفس الشخص، وضع مختلف" لأن التمثيل لا يعد ذلك العامل.

Karras et al. (2019, NVIDIA) اقترح: توقف عن التغذية zمباشرة إلى طبقات المكوكات.4×4×512التنسور كمدخول الشبكة. تعلم MLP من 8 طبقات التي تقوم بتخريط z ∈ Z → w ∈ W. حقنwفي كل قرار عبر طبيعية الحالة التكيفية (AdaIN): الطبيعية كل خريطة ميزات conv، ثم النطاق والتحول من خلال التنبؤات التواصلية من wإضافة ضجيج لكل طبقة للتفاصيل المثقلة (مسام الجلد، حبل الشعر).

النتيجة:Wيحتوي على محورات متقاطعة تقريبًا لـ "نمط مستوى عالٍ" (موقف، هوية) مقابل "نمطٍ جيد" (إضاءة، لون). يمكنك تبادل الأساليب بين صورين باستخدام صورة A wللاستراتيجية منخفضة الدقة والصور B wهذا التحرير المفتوح، التوسيع عبر النطاقات، وخط البحث بأكمله "التحول إلى "ستايلجان".

المفهوم

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

Mapping network. f: Z → W، 8 طبقات MLP. Z = N(0, I)^512. .Wلا يجبر على أن يكون غوسياً يتعلم شكلًا مُتكيفًا مع البيانات

Synthesis network.يبدأ من ثابتة تعلم4×4×512كل كتلة تحديد:upsample → conv → AdaIN(w_i) → noise → conv → AdaIN(w_i) → noiseالقرارات المزدوجة: 4، 8، 16، 32، 64، 128، 256، 512، 1024.

AdaIN.

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

أينy_scaleوy_biasتأتي من توقعات متقاربةw. تعاديل لكل خريطة ميزة، ثم إعادة التصميم. "السلسلة" هنا هي الإحصاءات من الدرجة الأولى والثانية من خريطة ميزة.

Per-layer noise.ضجيج غوسي القناة الواحدة يضاف إلى كل خريطة ميزة، مقياسًا عن طريق عامل تعلم لكل قناة. يتحكم بالتفاصيل الاستوكاسية دون التأثير على الهيكل العالمي.

Truncation trick.عند الاستنتاج، العينة z، الحسابw = mapping(z)، ثمw' = ŵ + ψ·(w - ŵ)أينŵهو المتوسطwعلى عدة عيناتψ < 1يتداول التنوع مقابل الجودة.ψ ≈ 0.7. . .

ستايلجان 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 ستايلجان3 لا يزال الافتراضي (أ) لـ (تصور النطاق الضيق في FPS العالي، (ب) تكييف النطاق القليل من الصور (التدريب على مجموعة بيانات جديدة مع 100 صورة، خريطة التجميد) ، (ج) التحرير القائم على العكس (العثور على wالذي يعيد بناء صورة حقيقية، ثم تحرير ذلك w) بالنسبة للمجال المفتوح من النص إلى الصورة، ليست أداة انتشار هو.

بناءها

code/main.pyيطبق لعبة "style-GAN lite" في 1-D: MLP الخريطة، وظيفة التكوين التي تأخذ متجه ثابت تعلم وتقوم بتحويله مع w-المتحدرات/التحيزات، والضوضاء لكل طبقة.wعبر تطابقات التكيف أو ضربات تتراكمzإلى مدخلات المولد.

الخطوة الأولى: شبكة الخرائط

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

الخطوة 2: تطبيع الحالة التكيفية

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]

نطاق الخريطة المميزة والتحيز يأتي منwعبر التنبيه الخطى

الخطوة الثالثة: ضجيج لكل طبقة

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

سيغما على القناة يمكن تعلمها

الفخاخ

  • Droplet artifacts.أنتج StyleGAN 1 قطرة ضخمة في خرائط الميزات لأن AdaIN قد أُصفر عن المتوسط. تحلّل نظام تحميل الوزن في StyleGAN 2 ذلك عن طريق تحميل أوزان التخزين بدلاً من ذلك.
  • Texture sticking.تتبع النسيج StyleGAN 1 و 2 إحداثيات البيكسل ، وليس إحداثيات الكائن (ملاحظة عند التقاطع). تحللات StyleGAN 3 الخالية من الاسم تصلح هذا مع مرشحات سينك المزودة بالزجاجات.
  • Mode coverage.التقطيعψ < 0.7تبدو نظيفة ولكن عينات من مخروط ضيقة ؛ استخدام ψ = 1.0إذا كنت بحاجة إلى التنوع.
  • Inversion is lossy.إعادة صورة حقيقية إلىWعادة ما يتم من خلال التحسين أو مرموز (e4e ، ReStyle ، HyperStyle). النتائج تتحرك عبر العديد من التكرارات.

استخدمها

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

بالنسبة إلى عرضات عرضية ذات مستوى منتج حيث تكون الإجابة "صورة وجه شخص" ، تضرب StyleGAN التوزيع على تكلفة الاستنتاج (مرة واحدة إلى الأمام ، <10ms على 4090) والحادة لنفس شريط الجودة.

أرسله

إنقاذoutputs/skill-stylegan-inversion.md. تلتقط مهارة صورة حقيقية وتخرجات: طريقة التحول (e4e / ReStyle / HyperStyle) ، الخسارة المتوقعة الخفية ، ميزانية التحرير (كم في Wيمكنك التحرك قبل الأثاث) ، و قائمة من المعروفة جيدة التحرير الاتجاهات (العمر، والتعبير، وضعية).

التمارين

  1. Easy.أركضcode/main.pyمعadain_on=Trueوadain_on=Falseمقارنة انتشار الخروج لخاطئ ثابت مقابل خاطئ مشوش
  2. Medium.تنفيذ تنظيم الخلط: لفرقة تدريبية، الحساب w_a،w_bو تطبقw_aفي النصف الأول من التوليد وw_bهل يتعلم المفكّر أنماطًا مختلطة؟
  3. Hard.خذ نموذج StyleGAN3 FFHQ المُدرب مسبقاً (ffhq-1024.pkl).wالتوجيه الذي يتحكم في "الإبتسامة" عن طريق تدريب المدير السريع على عينات معينة؛ تقرير إلى أي مدى يمكنك دفع قبل أن تتحرك الهوية.

الشروط الرئيسية

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.

ملاحظة الإنتاج: لماذا ستايلجان لا تزال تشحن في عام 2026

ستايلجان3 على 4090 يخلق وجه 10242 FFHQ في أقل من 10 ms num_steps = 1لا توجد تشخيصات VAE، لا توجد مرسلات الانتباه المتقاطعة. من حيث الإنتاج هذه هي تأخير الأرضية لأي مولد الصور. خط أنابيب تشخيص SDXL + VAE 50 خطوة بنفس القرار هو ~ 3 ثواني. وهذا هو 300× gapوبالنسبة للمنتجات ذات النطاق الضيق (خدمات الأفاطار، خطوط أنابيب وثائق الهوية، وتوليد مخزون الوجه) فاز على TCO.

عواقب عمليّتين:

  • No scheduler, no batcher.الحزمة الدقيقة في الموقع المستهدف هي المثلى. الحزمة المستمرة (التي تكون ضرورية لـ LLM والانتشار) توفر صفر فائدة لأن كل طلب يحصل على نفس FLOPs.
  • Truncation ψ is the safety knob. ψ < 0.7عينات من مخروط ضيقة من نطاق شبكة الخرائط. هذه هي الرافعة الوحيدة التي لديها طبقة الخدمة على اختلاف العينة.ψعند ذروة الحمل، رفعها للمستخدمين المتميزين.

المزيد من القراءة

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.