النماذج التوليدية2019متوسط11 دقيقة قراءة
بنية مولِّد قائمة على الأنماط للشبكات التوليدية التنافسية
A Style-Based Generator Architecture for Generative Adversarial Networks
Karras, T. · Laine, S. · Aila, T. — CVPR
المشكلة
بحلول 2018، أصبحت شبكات GAN قادرة على توليد صور بدقّة عالية بفضل (ProGAN)، لكن المولِّد ظلّ صندوقاً أسود لا نفهم ما يجري بداخله. Z كان متشابكاً: تعديل بُعد واحد فيه يُغيّر عدّة سمات بصرية دفعة واحدة — الوضعية، الهوية، لون الشعر، كلّها تتحرّك معاً. لم تكن هناك وسيلة للتحكم في سمة بعينها عند التنقّل داخل هذا الفضاء، ولم يكن المولِّد يكشف عن أي شيء حول كيفية توزيعه للسمات البصرية على مستويات الدقة المختلفة.
الإسهام
بنية مولِّد جديدة مستوحاة من فكرة نقل النمط العصبي. شبكة تعيين من 8 طبقات تُحوِّل الفضاء Z إلى فضاء كامن وسيط W أكثر انفصالاً بين السمات. تحويلات أفينية مُتعلَّمة تُترجم W إلى أنماط تُحقن في كل طبقة عبر AdaIN. مدخلات ضجيج عشوائي تُضيف تفاصيل دقيقة على مستوى البكسل. النتيجة: فصل تلقائي للسمات العامة (كالوضعية والهوية) عن التفاصيل العشوائية (كالنمش وتوزّع الشعر)، وتحقيق FID يبلغ 4.40 على مجموعة FFHQ، ومقياسان جديدان لتقييم فكّ التشابك — والفصل الخطي.
الأثر
رسّخ StyleGAN المولِّد القائم على الأنماط بوصفه المنهجية السائدة في توليد الصور المُتحكَّم به. أصبح فضاؤه W الركيزة التي قامت عليها تطبيقات تعديل الوجوه وعكس الصور والتعديل المنفصل للسمات. ثم عالج StyleGAN2 وStyleGAN3 مشكلات التشوّهات والتعرّج. وامتدّ أثر هذه البنية إلى نماذج الانتشار وكل منظومة لاحقة للتوليد المُتحكَّم به. كما أصبحت مجموعة FFHQ التي أُطلقت معه معياراً مرجعياً راسخاً في أبحاث توليد الوجوه.
التقليدي في شبكات GAN يشبه سكب دلو من ألوان مخلوطة على لوحة بيضاء — المتّجه العشوائي z يتحكّم في كل شيء دفعة واحدة، فلا تستطيع تغيير شكل الوجه دون أن يتبدّل لون العينين معه.
StyleGAN يطرح فكرة مختلفة تماماً: مرسم احترافي منظّم. قبل أن يلمس الرسّام اللوحة، يفتح دليل الأنماط () الذي يأخذ الإلهام الغامض (z) ويُحوّله إلى تعليمات واضحة (w) لكل جانب من اللوحة. بعدها، عند كل مرحلة — الرسم التخطيطي الخشن، ثم الملامح المتوسطة، ثم التفاصيل الدقيقة — يرجع الرسّام إلى الصفحة المناسبة من الدليل ويُطبّقها بتقنية محدّدة (). وبشكل مستقل تماماً، يرشّ رملاً ناعماً (الضجيج) لإضفاء القوام — نمش، مسام، شعيرات طائشة — وهذا لا علاقة له بهوية الوجه.
النتيجة: تحكّم كامل. بدِّل صفحة «شكل الوجه» بين لوحتين، وستجد أن الوضعية انتقلت بينما بقيت كل التفاصيل الأخرى في مكانها.
مشكلة التشابك: لماذا تفتقر المولِّدات التقليدية إلى التحكم
في التقليدية، يأخذ المولِّد متّجهاً عشوائياً z من بسيط ويُدخله مباشرة إلى الشبكة. المشكلة هنا أن هذا المتّجه الوحيد مُطالَب بحمل كل معلومات الصورة — الوضعية، الهوية، الإضاءة، القوام، الخلفية — في حزمة واحدة متشابكة.
تخيّل z كأنه قفل توافقي لكنّ مقابضه مربوطة ببعضها: حين تُدير مقبضاً لتغيير تسريحة الشعر، يدور معه مقبض لون البشرة. تحاول تدوير الوجه؟ تتبدّل الخلفية. السبب أن أبعاد الفضاء الكامن Z لا تتوافق مع السمات البصرية الفعلية. على الشبكة أن «تفكّ» الشكل الغاوسي المفروض على Z وتربطه بسطح الصور الطبيعية — وهو سطح لاخطي شديد التعقيد.
التدريجي في ProGAN حلّ مشكلة الدقة — بتنمية المولِّد من 4×4 إلى 1024×1024 — لكنه لم يمسّ مشكلة التحكم. ظلّ الفضاء الكامن متشابكاً كما هو.
بنية StyleGAN: التعيين والتركيب والضجيج
مولِّد StyleGAN يقوم على ثلاث أفكار رئيسية تعمل معاً. الأولى: شبكة التعيين التي تُحوِّل z إلى وسيط w. الثانية: التي تبني الصورة بدءاً من ثابت مُتعلَّم، وتحقن النمط w في كل مستوى دقة عبر التطبيع التكيُّفي للنُّسَخ (AdaIN). الثالثة: مدخلات ضجيج عشوائي تُضيف تنوّعاً على مستوى البكسل دون أن تمسّ النمط.
الفكرة الجوهرية هنا هي فصل المسؤوليات: شبكة التعيين تُقرّر ماذا نُولِّد (خيارات النمط)، وشبكة التركيب تُقرّر كيف نرسمه (البنية المكانية)، والضجيج يتكفّل بـالقوام العشوائي — تلك التفاصيل الدقيقة التي تختلف من عيّنة لأخرى حتى لو كان النمط واحداً.
شبكة التعيين: من الفضاء المتشابك Z إلى الفضاء المفكوك W
شبكة التعيين f هي ببساطة من 8 طبقات، تأخذ المدخل z ∈ Z وتُخرج w ∈ W. كلا الفضاءين ببُعد 512، لكنّ طبيعتهما مختلفة تماماً.
لماذا نحتاج هذا التحويل أصلاً؟ الفضاء Z مُقيَّد بشكل توزيع غاوسي ثابت. لكنّ السمات البصرية الحقيقية لا تتبع هذا التوزيع — بعض التوليفات لا تحدث في الواقع ببساطة. فكّر مثلاً: كم وجهاً يجمع بين ملامح طفل ولحية كثيفة؟ حين يُجبَر المولِّد على الانطلاق من فضاء غاوسي مباشرة نحو الصور، يضطرّ إلى ليّ هذا الفضاء وتشويهه ليُغطّي التوليفات غير الواقعية، وهنا ينشأ التشابك — مناطق تُنتج فيها نقاط متجاورة صوراً مختلفة تماماً.
ما تفعله شبكة التعيين هو أنها تتعلّم «فكّ هذا الليّ»: تُحوِّل Z إلى فضاء جديد W شكّلت بيانات التدريب توزيعه بدلاً من فرض قالب غاوسي عليه. في W، النقاط القريبة من بعضها تُعطي صوراً متشابهة، وكل اتجاه يُقابل سمة بصرية مختلفة. هذا هو جوهر : كل اتجاه في W يتحكّم بعامل دلالي واحد دون أن يُحرّك البقية.
AdaIN: كيف يتحكم النمط في شبكة التركيب
شبكة التركيب لا تستقبل z أو w كمدخل مباشر. بدلاً من ذلك، تنطلق من ثابت مُتعلَّم — مُوتّر بأبعاد 4×4×512 يلعب دور اللوحة البيضاء. بعدها يُحقن «النمط» في كل طبقة التفافية عبر التطبيع التكيُّفي للنُّسَخ (AdaIN).
آلية عمل AdaIN تمرّ بثلاث خطوات. أولاً: يُطبّع كل بحيث يُصبح متوسطها صفراً وتباينها واحداً — وكأنه يمسح النمط القديم تماماً. ثانياً: مُتعلَّم (مجرّد طبقة خطية) يأخذ w ويُنتج منه زوجاً من معاملات القياس (γ) والإزاحة (β) لكل قناة. ثالثاً: هذه المعاملات تُعيد ضبط مقياس السمات المُطبَّعة وإزاحتها، فتكتب النمط الجديد فوق البنية المكانية.
فكّر فيها كأنها كتاب تلوين: شبكة التركيب ترسم الخطوط والحدود (البنية المكانية)، وAdaIN يملأ الألوان والقوام (النمط). والمميّز أن النمط يمكن أن يختلف في كل مستوى دقة — الطبقات الخشنة تتحكّم بشكل الوجه والوضعية، والطبقات الوسطى تتحكّم بالملامح، والطبقات الدقيقة تتحكّم بنظام الألوان والتفاصيل الصغرى.
مزج الأنماط: الجمع بين أنماط من مصادر مختلفة
بما أن النمط يُحقن بشكل مستقل في كل طبقة، يُتيح StyleGAN عملية بالغة القوة: . الفكرة أنه أثناء التدريب، تُولَّد نسبة من الصور باستخدام رمزين كامنين مختلفين — w₁ لبعض الطبقات وw₂ للبقية. يُعرف هذا بـتنظيم المزج، وفائدته أنه يمنع الشبكة من بناء ارتباطات وهمية بين الطبقات المتجاورة.
النتيجة العملية هي درجة تحكّم مذهلة في الصورة المُولَّدة. الطبقات الـ 18 في شبكة التركيب تنتظم من تلقاء نفسها في ثلاث مجموعات. الطبقات الخشنة (4×4 إلى 8×8) تتحكّم في الوضعية وشكل الوجه والبنية العامة. الطبقات الوسطى (16×16 إلى 32×32) تتحكّم في الملامح وتسريحة الشعر والعينين. الطبقات الدقيقة (64×64 إلى 1024×1024) تتحكّم في لوحة الألوان والإضاءة والبنية المجهرية.
خذ الأنماط الخشنة من المصدر A والأنماط الدقيقة من المصدر B، وستحصل على صورة بوضعية A وشكل وجهه لكن بألوان B وقوامه — وهذا مستحيل في المولِّدات التقليدية.
الضجيج العشوائي: فصل الهوية عن العشوائية
كثير من تفاصيل صورة الوجه هي بطبيعتها عشوائية — يمكن أن تبدو مختلفة دون أن تتغيّر هوية الشخص. مواقع الشعيرات المنفردة، ونمط النمش، ومسام البشرة، وبقايا الذقن — كلّها أمثلة على تنوّع عشوائي بحت. في المولِّد التقليدي، تُحشر هذه التفاصيل كلّها في ، فتستهلك جزءاً من سعته التمثيلية على أشياء لا تُحدّد الهوية.
StyleGAN يحلّ هذه المشكلة بإضافة مدخلات ضجيج مستقلة لكل طبقة — ضجيج غاوسي غير مترابط يُبثّ على الأبعاد المكانية لكل خريطة سمات. يُضرب هذا الضجيج في وزن مُتعلَّم لكل قناة قبل إضافته. بهذا تملك الشبكة مصدراً مُخصّصاً للعشوائية يتولّى التفاصيل العشوائية، ويُحرّر المتّجه الكامن ليُركّز على الجوانب الحتمية — الهوية، الوضعية، التعبير — التي تُحدّد ماهية الوجه.
الأثر يختلف حسب مستوى الدقة. الضجيج في الطبقات الخشنة يُنتج تجعيداً واسعاً في الشعر أو تباينات في الخلفية. الضجيج في الطبقات الدقيقة يُنتج قواماً على مستوى المسام وخصلات شعر منفردة وتغيّرات جلدية طفيفة. وحين تُزيل الضجيج من جميع الطبقات، تحصل على صور تشبه اللوحات الزيتية — ناعمة وخالية من القوام، لكن الهوية والوضعية لم تتغيّرا.
قياس فكّ التشابك: طول المسار الإدراكي والفصل الخطي
كيف نتحقّق من أن W مفكوك التشابك فعلاً أكثر من Z؟ اقترح الباحثون مقياسين كمّيين لهذا الغرض.
المقياس الأول: طول المسار الإدراكي. الفكرة بسيطة: حين نُجري بين رمزين كامنين، نريد أن يتغيّر خرج المولِّد بسلاسة وتدرّج. في فضاء مفكوك التشابك، يكون الانتقال هادئاً. أما في فضاء متشابك، فالمسار يمرّ عبر «ثغرات» تقفز فيها عدّة سمات دفعة واحدة، فتُحدث تغيّرات بصرية مفاجئة. القاعدة: كلّما قصر هذا المسار الإدراكي، كان فكّ التشابك أفضل.
المقياس الثاني: . نأخذ سمات ثنائية (ذكر/أنثى، نظارات/بدون) ونسأل: هل يمكن فصلها بـ خطي في الفضاء الكامن؟ في فضاء مفكوك، تتجمّع كل سمة في عنقود واضح يكفيه بسيط. في فضاء متشابك، يكون حدّ القرار ملتوياً ومتشعّباً.
أظهرت النتائج تفوّقاً واضحاً لـ W على Z في كلا المقياسين، وهذا يُثبت أن شبكة التعيين نجحت فعلاً في فكّ تشابك .
مجموعة FFHQ والنتائج: معيار جديد لتوليد الوجوه
قدّم الباحثون مجموعة بيانات Flickr-Faces-HQ (FFHQ) التي تضمّ 70,000 صورة وجه عالية الجودة بدقة 1024×1024. صُمّمت هذه المجموعة لتكون أغنى تنوّعاً من CelebA-HQ من حيث الأعمار والأعراق والإكسسوارات والخلفيات — وهذا التنوّع ضروري لتدريب مولِّد قادر على إنتاج وجوه متباينة.
على FFHQ، حقّق StyleGAN قيمة بلغت 4.40، وهو تحسّن كبير مقارنة بـ ProGAN. لكنّ الأهمّ من الرقم نفسه هو أن فصل النمط عن الضجيج أنتج وجوهاً يمكن التحكّم بسماتها العامة وتفاصيلها الدقيقة كلٌّ على حدة — وهو أمر لم يستطع أي مولِّد سابق تحقيقه.
، حين طُبّقت في الفضاء W بدلاً من Z، أعطت مفاضلة أفضل بين الجودة والتنوّع. الفكرة هي تقريب w من المتوسط w̄ عبر الاستيفاء: كلّما اقتربت من المتوسط، زادت جودة الصورة لكن قلّ تنوّعها — مع انحدار أكثر نعومة في الجودة مقارنة بالاقتطاع في Z.
نظرة على الكود: وحدة التركيب البرمجية
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
class SynthesisBlock(nn.Module):
"""وحدة بمستوى دقة واحد في شبكة التركيب.
تستقبل النمط w والضجيج لكل بكسل."""
def __init__(self, in_ch, out_ch, w_dim=512):
super().__init__()
self.conv = nn.Conv2d(in_ch, out_ch, 3, padding=1)
self.noise_weight = nn.Parameter(torch.zeros(1))
# تحويل أفيني مُتعلَّم: w → (قياس، إزاحة) لكل قناة
self.affine = nn.Linear(w_dim, out_ch * 2)
self.act = nn.LeakyReLU(0.2)
def forward(self, x, w, noise):
# 1. الطبقة الالتفافية
x = self.conv(x)
# 2. إضافة الضجيج بعد ضربه بوزن مُتعلَّم (تنوّع عشوائي)
x = x + self.noise_weight * noise
# 3. AdaIN: تطبيع ثم تطبيق النمط
mean = x.mean(dim=[2, 3], keepdim=True)
std = x.std(dim=[2, 3], keepdim=True) + 1e-8
x = (x - mean) / std
# 4. تعديل النمط من w
style = self.affine(w) # [B, 2*C]
gamma, beta = style.chunk(2, dim=1) # كلّ منهما [B, C]
gamma = gamma.unsqueeze(-1).unsqueeze(-1)
beta = beta.unsqueeze(-1).unsqueeze(-1)
x = gamma * x + beta
return self.act(x)من ProGAN إلى StyleGAN3: مسار التطوّر
2018
ProGAN — التنمية التدريجية للشبكات التوليدية
طرح فكرة التدريب التدريجي: تنمية المولِّد والمُميِّز من دقة 4×4 إلى 1024×1024 خلال التدريب. حقّق دقة غير مسبوقة، لكن فضاءه الكامن ظلّ متشابكاً.
2019
StyleGAN — المولِّد القائم على الأنماط
فصل المولِّد إلى شبكة تعيين (z→w) وشبكة تركيب تعتمد AdaIN. قدّم الفضاء W ومزج الأنماط وحقن الضجيج ومجموعة FFHQ. تحسّنت نتيجة FID بنحو 20% مقارنة بـ ProGAN.
2020
StyleGAN2 — إزالة التشوّهات
استبدل AdaIN بإزالة تعديل الأوزان للتخلّص من تشوّهات «البُقع». أضاف تنظيم طول المسار وتبنّى بنية غير تدريجية. حقّق أرقاماً قياسية جديدة في FID على عدّة مجموعات بيانات.
2021
StyleGAN3 — التوليد الخالي من التعرّج
عالج مشكلة التصاق القوام بإحداثيات البكسلات عبر فرض تساوٍ صارم تحت الإزاحة والدوران. اعتمد تفسيراً إشارياً مستمراً بحيث لم تعد السمات مرتبطة بمواقع بكسلات بعينها.
الإسهام الباقي لـ StyleGAN لا يقتصر على وجوه أجمل — بل هو الإدراك بأن بنية المولِّد لا تقلّ أهمية عن دالة الهدف المُستخدمة في التدريب. بفصل النمط عن البنية المكانية، والبنية عن الضجيج، جعل StyleGAN التمثيلات الداخلية لـالمولِّد قابلة للفهم والتحكّم. أصبح الفضاء W بمثابة لغة مشتركة للتعامل مع الصور: طرق العكس مثل GAN inversion، وطرق التعديل مثل InterFaceGAN وStyleCLIP، والتطبيقات التي تلت في تركيب الفيديو وتوليد الوجوه ثلاثية الأبعاد — كلّها قامت على الأساس الذي وضعه هذا العمل.
المرجعKarras, Laine, Aila. A Style-Based Generator Architecture for Generative Adversarial Networks. CVPR, 2019.
مصطلحات هذه الورقة
- الشبكات التوليدية التنافسيةGenerative Adversarial Network (GAN)
- الموّلد التخليقيGenerator
- الـمُميِّز الحاكمDiscriminator
- الفضاء الكامنLatent Space
- المتجه الكامنLatent Vector
- الرمز الكامنLatent Code
- التمثيل المُفكَّكDisentangled Representation
- شبكة التعيينMapping Network
- التطبيع التكيُّفي للنُّسَخAdaptive Instance Normalization
- مزج الأنماطStyle Mixing
- التنوّع العشوائيStochastic Variation
- التدريب التدريجيProgressive Training
- خريطة السماتFeature Map
- التحويل التآلفيAffine Transformation
- تسوية النسخةInstance Normalization