الرؤية الحاسوبية2017متوسط9 دقيقة قراءة
ترجمة الصور بالشبكات التنافسية التوليدية المشروطة
Image-to-Image Translation with Conditional Adversarial Networks
Isola, P. · Zhu, J.-Y. · Zhou, T. · Efros, A. A. — CVPR
المشكلة
تحويل الصور من شكل إلى آخر — كتحويل خرائط التجزئة الدلالية إلى صور واقعية، أو الحواف إلى أجسام، أو مشاهد النهار إلى ليل — مشكلة تتكرر في كل فروع . قبل pix2pix كانت كل مهمة تحتاج دالة خسارة مصنوعة يدوياً: واحدة لإعادة البناء، وأخرى للأسلوب البصري، وثالثة خاصة بالتطبيق. عملياً كان الباحث يُعيد اختراع هدف من الصفر في كل مرة. والأسوأ أن دوال الخسارة التقليدية مثل L1 وL2 تُنتج صوراً ضبابية، لأنها تحسب المتوسط بين كل المخرجات المحتملة فتذوب التفاصيل وتضيع الحدة.
الإسهام
إطار عام لترجمة الصور المقترنة باستخدام الشبكات التنافسية التوليدية المشروطة، يقوم على ثلاث أفكار محورية. الأولى: تقييد الشبكة بصورة مُدخَلة حتى يتعلّم المولِّد عملية تحويل حقيقية بدلاً من التوليد العشوائي من ضوضاء. الثانية: استخدام معمارية U-Net بوصلات تخطّي تحافظ على التفاصيل المكانية الدقيقة رغم مرورها . الثالثة: مُميِّز من نوع PatchGAN يُصنِّف رقعاً محلية متداخلة بدلاً من الصورة ككل، فيُوجّه إشارة التنافس نحو واقعية النسيج المحلي. الجمع بين خسارة L1 يُعطي مخرجات حادة وواقعية دون الحاجة لهندسة خاصة بكل مهمة.
الأثر
رسّخ pix2pix الشبكات التنافسية التوليدية المشروطة كأداة عملية قابلة للاستخدام الفوري، وصار خط الأساس المرجعي لترجمة الصور المقترنة. فتح الباب أمام CycleGAN للترجمة بدون أزواج، وpix2pixHD للتوليد بدقة عالية، وSPADE للتوليد الموجَّه دلالياً، ومنظومة كاملة من أدوات معالجة الصور المبنية على الشبكات التنافسية التوليدية. تبنّاه باحثون وفنانون حول العالم في تطبيقات تمتد من التصيير المعماري إلى التصوير الطبي، فأصبح من أكثر الأوراق البحثية تأثيراً في الرؤية الحاسوبية التوليدية.
تخيّل كابينة ترجمة فورية في مؤتمر دولي. على جانب يتحدث شخص بلغةٍ ما (خريطة حواف، قناع تجزئة، رسم تخطيطي). على الجانب الآخر يجلس مترجم — هو — ومهمته أن يُنتج الكلام نفسه بلغة مختلفة تماماً (صورة واقعية).
لكن هناك طرف ثالث: مراقب جودة — هو — يسمع النسخة الأصلية والترجمة معاً، ويحكم: هل تبدو الترجمة طبيعية كأن متحدثاً أصلياً قالها، أم أنها ترجمة آلية مكشوفة؟
يظل المترجم يُحسّن أداءه حتى يعجز المراقب عن التفريق بين الترجمة الحقيقية والمُولَّدة. والمفتاح هنا أن الكابينة نفسها تعمل مع أي زوج من اللغات — لا تحتاج لبناء كابينة جديدة لكل مهمة.
المشكلة: كل مهمة تحويل صورة تحتاج دالة خسارة خاصة بها
إذا تأملت مسائل الرؤية الحاسوبية ستجد أن كثيراً منها يعود في جوهره إلى مهمة واحدة: خُذ صورة كمُدخَل وأنتج صورة مختلفة كمُخرَج. تحوّل الصور إلى خرائط تسميات. التلوين يحوّل الصور الرمادية إلى ملونة. يحوّلها إلى رسوم خطية. و يأخذ صورة صغيرة ويُنتج نسخة عالية الوضوح.
قبل pix2pix، كان كل باحث يتعامل مع هذه المهام كمسائل منفصلة ويُصمّم مخصوصة لكل واحدة. وأبسط هذه الدوال — مثل L1 وL2 — كانت تُعاني من مشكلة جوهرية: إنها تحسب المتوسط بين كل المخرجات المعقولة. لو كان هناك لونان صحيحان بالقدر نفسه لبكسل واحد، تختار L2 المتوسط بينهما — وهو لون لا يُشبه أياً منهما. النتيجة: صور ضبابية دائماً مهما فعلت.
الفكرة: دع الشبكة تتعلّم دالة الخسارة بنفسها
الفكرة المركزية في pix2pix أبسط مما تتوقع: بدلاً من أن تجلس وتُصمّم يدوياً، دع الشبكة تتعلّمها بنفسها. تعتمد على شبكتين تعملان ضد بعضهما. المولِّد يأخذ الصورة المُدخَلة ويُنتج صورة جديدة. المُميِّز يرى المُدخَل والمُخرَج معاً ويقرر: هل هذا المُخرَج صورة حقيقية أم مُختلَقة؟ المولِّد يتحسّن عندما ينجح في خداع المُميِّز، والمُميِّز يتحسّن عندما يكشف الخداع.
كلمة مشروطة هنا هي المفتاح. العادية تولّد صوراً من ضوضاء عشوائية فقط — بلا أي تحكّم. أما النسخة المشروطة فهي مُقيَّدة بصورة مُدخَلة، وهذا يعني أن المولِّد لا يخترع من فراغ بل يُترجم. والمُميِّز لا يسأل فقط «هل هذه صورة مقنعة؟» بل يسأل «هل هذه ترجمة صحيحة لتلك الصورة المُدخَلة بالذات؟».
دالة الهدف: الخسارة التنافسية + L1
هدف التدريب يقوم على قوتين تُكمّل إحداهما الأخرى. الخسارة التنافسية تدفع المولِّد لإنتاج صور تبدو حقيقية — وهي المسؤولة عن التفاصيل الدقيقة والنسيج. أما خسارة L1 فتدفعه ليكون دقيقاً بنيوياً — فتضبط البنية العامة والمحتوى الأساسي. لا تكفي واحدة بدون الأخرى: الخسارة التنافسية وحدها تُنتج صوراً حيوية لكنها مشوّهة بنيوياً، وL1 وحدها تُنتج صوراً صحيحة لكنها ضبابية. حين تجمعهما معاً تحصل على الأمرين: صحة بنيوية وواقعية بصرية.
المولِّد: معمارية U-Net ذات وصلات التخطّي
تصوّر أنك تريد ضغط صورة في أنبوب ضيّق ثم إعادة بنائها على الجانب الآخر — هذا ما يفعله - التقليدي. يضغط الصورة إلى تمثيل صغير في عنق الزجاجة، ثم يُحاول استعادتها. المشكلة أن التفاصيل الدقيقة — الحواف والنسيج والمواقع الدقيقة — تضيع في هذا الضغط، لأن كل شيء مُجبَر على المرور عبر ممر ضيّق جداً.
تحل هذه المشكلة بفكرة بسيطة وفعّالة: . كل طبقة في المُرمِّز موصولة مباشرةً بالطبقة المقابلة لها في فاكّ الترميز. تخيّلها كـجسور تمتد فوق عنق الزجاجة: الطبقات الأولى في المُرمِّز تلتقط التفاصيل منخفضة المستوى كالحواف والألوان، وهذه التفاصيل تعبر الجسور مباشرةً إلى فاكّ الترميز دون أن تمرّ بعنق الزجاجة أصلاً. عنق الزجاجة يتفرّغ للفهم الدلالي العام فقط، ووصلات التخطّي تتولى نقل الدقة المكانية.
المحصلة: المولِّد يستطيع إنتاج صور صحيحة دلالياً (الأشياء المناسبة في أماكنها الصحيحة) ودقيقة مكانياً (حواف حادة ونسيج واضح) في آنٍ واحد.
من الناحية التقنية، مُرمِّز U-Net يتكون من 8 طبقات تقليص: كل طبقة تُطبّق بخطوة 2 فتُنصّف الأبعاد المكانية، يتبعها ثم كدالة تفعيل. فاكّ الترميز يعكس هذا الترتيب بـ 8 طبقات تكبير تستخدم . في كل مستوى، يُلصق فاكّ الترميز السمات القادمة من وصلة التخطّي مع سماته المُكبَّرة قبل الالتفاف التالي — فيتضاعف عدد القنوات وتبقى المعلومات الدلالية والمكانية محفوظة معاً.
المُميِّز: PatchGAN — التركيز على التفاصيل المحلية
المُميِّز التقليدي ينظر إلى الصورة بأكملها ويُصدر حكماً واحداً: حقيقية أم مُختلَقة. لكن خسارة L1 تتكفّل أصلاً بالبنية العامة بشكل كافٍ. ما ينقص فعلاً هو الواقعية في التفاصيل الدقيقة: حواف حادة، ونسيج طبيعي، وأنماط محلية مقنعة.
PatchGAN يعكس المقاربة تماماً: بدلاً من درجة واحدة للصورة ككل، يُنتج شبكة من الدرجات — درجة لكل رقعة محلية بحجم N×N. كل درجة تسأل: «هل هذه المنطقة بالذات حقيقية أم مُختلَقة؟». بهذا الشكل يتحول المُميِّز إلى ناقد نسيج يفحص كل منطقة محلية على حدة.
حجم الرقعة الافتراضي 70×70 بكسل أعطى أفضل توازن في تجارب الورقة: كبير بما يكفي لالتقاط أنماط نسيج ذات معنى، وصغير بما يكفي ليعمل مع أحجام صور مختلفة. مقارنةً بمُميِّز يعمل على الصورة كاملة، يملك PatchGAN معاملات أقل بكثير ويعمل أسرع، ومع ذلك يُعطي مخرجات أكثر حدةً وثراءً في النسيج.
الصورة الكاملة: كيف تتكامل القطع معاً
نظام pix2pix يجمع ثلاث أفكار في مسار واحد متكامل:
- التقييد بالمُدخَل: المولِّد والمُميِّز كلاهما يستقبل الصورة المُدخَلة، فيتعلّم النظام ترجمة الصور بدلاً من توليدها من الصفر.
- وصلات التخطّي في U-Net: المولِّد يحتفظ بالتفاصيل المكانية التي كانت ستضيع في معمارية عنق الزجاجة التقليدية.
- PatchGAN: المُميِّز يُركّز على واقعية النسيج المحلي، فيُكمّل دور خسارة L1 التي تتولى البنية العامة.
أثناء التدريب يتناوب النظام بين تحديث المُميِّز (ليتحسّن في كشف الأزواج المُختلَقة) وتحديث المولِّد (ليتحسّن في خداع المُميِّز مع الحفاظ على قربه من الصورة الحقيقية عبر L1). المولِّد يستخدم كمصدره الوحيد للعشوائية — متّجهات الضوضاء z التقليدية لم يكن لها أثر يُذكر في تجارب المؤلفين.
الفكرة ذاتها في شيفرة برمجية
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
import torch
import torch.nn as nn
# --- خطوة تدريب pix2pix الأساسية ---
def train_step(G, D, real_input, real_target, opt_G, opt_D, lambda_L1=100):
"""خطوة تدريب واحدة لـ pix2pix."""
# 1. توليد صورة مُختلَقة من المُدخَل
fake_target = G(real_input)
# 2. تدريب المُميِّز
# يرى (المُدخَل، الهدف الحقيقي) ← ينبغي أن يُخرج 1 (حقيقي)
# يرى (المُدخَل، الهدف المُختلَق) ← ينبغي أن يُخرج 0 (مُختلَق)
pred_real = D(real_input, real_target) # شبكة درجات من الرقع
pred_fake = D(real_input, fake_target.detach())
loss_D = 0.5 * (bce(pred_real, ones) + bce(pred_fake, zeros))
opt_D.zero_grad()
loss_D.backward()
opt_D.step()
# 3. تدريب المولِّد
# تنافسياً: خداع المُميِّز ليظن أن المُختلَق حقيقي
# L1: البقاء قريباً من الصورة الحقيقية
pred_fake_for_G = D(real_input, fake_target)
loss_G_adv = bce(pred_fake_for_G, ones) # خداع المُميِّز
loss_G_L1 = nn.L1Loss()(fake_target, real_target)
loss_G = loss_G_adv + lambda_L1 * loss_G_L1
opt_G.zero_grad()
loss_G.backward()
opt_G.step()
return loss_D.item(), loss_G.item()
# bce = nn.BCEWithLogitsLoss()
# ones/zeros = تطابق أبعاد مُخرَج شبكة الرقع PatchGANالنتائج: معمارية واحدة ومهام متعددة
الجانب المدهش في pix2pix أن المؤلفين جرّبوه على تشكيلة واسعة من المهام — جميعها بـالمعمارية نفسها و ذاتها، مع تغيير بيانات التدريب فقط:
- تسميات ← مشاهد شوارع (Cityscapes)
- تسميات معمارية ← واجهات مبانٍ
- رمادي ← ملوّن (تلوين)
- حواف ← صور (حقائب يد، أحذية)
- صور جوية ← خرائط (والعكس)
- نهار ← ليل
- أبيض وأسود ← ملوّن
في تقييمات Amazon Mechanical Turk، نجحت الصور المُولَّدة في بعض المهام بخداع المُقيّمين البشريين في نحو 20% من الحالات — أي أن صورة من كل خمس صور مُولَّدة كانت غير قابلة للتمييز عن صورة حقيقية. مُميِّز PatchGAN بحجم رقعة 70×70 أعطى باستمرار أكثر النتائج حدةً وواقعيةً عبر جميع المهام.
لماذا شكّل هذا العمل نقطة تحوّل
فتح pix2pix اتجاهين بحثيين كبيرين: الأول هو الترجمة بدون أزواج عبر CycleGAN، التي ألغت الحاجة إلى بيانات تدريب مقترنة كلياً. والثاني هو التوليد عالي الدقة والموجَّه دلالياً، وهو المسار الذي أفضى إلى pix2pixHD وSPADE، ومنهما إلى أدوات الذكاء الاصطناعي التوليدي التي تُشغّل تطبيقات تعديل الصور اليوم.
2014
الشبكة التنافسية التوليدية (Goodfellow وآخرون)
الإطار التأسيسي: مولِّد ومُميِّز يتدرّبان بالتنافس. ينتج صوراً من ضوضاء عشوائية، لكن دون أي تحكّم في ماهية المُخرَج.
2014
الشبكة التنافسية التوليدية المشروطة (Mirza وOsindero)
أدخلت معلومات شرطية (تسميات الفئات) إلى المولِّد والمُميِّز معاً، فأصبح التوليد قابلاً للتوجيه. هذه هي الفكرة الأم التي بنى عليها pix2pix لاحقاً.
2015
U-Net (Ronneberger وآخرون)
معمارية مُرمِّز-فاكّ ترميز بوصلات تخطّي صُمِّمت أصلاً لتجزئة الصور الطبية. اعتمدها pix2pix كعمود فقري لبنية المولِّد.
2017
pix2pix (هذه الورقة)
إطار موحَّد للشبكة التنافسية التوليدية المشروطة يصلح لترجمة الصور المقترنة في مهام متنوعة. قدّم معمارية PatchGAN وهدف التدريب الذي يجمع L1 مع الخسارة التنافسية.
2017
CycleGAN (Zhu وآخرون)
وسّعت ترجمة الصور لتشمل بيانات غير مقترنة باستخدام خسارة التماسك الدوري. لم تعد هناك حاجة لأزواج مُدخَل-مُخرَج متطابقة.
2018
pix2pixHD (Wang وآخرون)
رفعت دقة pix2pix إلى 2048×1024 بمولِّدات ومُميِّزات متعددة المقاييس، فأصبح توليد صور بواقعية فوتوغرافية ممكناً عند هذه الدقة.
2019
SPADE / GauGAN (Park وآخرون)
توليد صور موجَّه بالتخطيط الدلالي عبر تسوية متكيّفة مكانياً. يرسم المستخدم خريطة دلالية فيحصل على مشهد طبيعي بواقعية فوتوغرافية.
المرجعIsola, Zhu, Zhou, Efros. Image-to-Image Translation with Conditional Adversarial Networks. CVPR, 2017.
مصطلحات هذه الورقة
- الشبكات التوليدية التنافسيةGenerative Adversarial Network (GAN)
- الموّلد التخليقيGenerator
- الـمُميِّز الحاكمDiscriminator
- شبكة U-NetU-Net
- الاتصال التجاوزيSkip Connection
- الخسارة التنافسيةAdversarial Loss
- الخسارة الإدراكيةPerceptual Loss
- التوجيهConditioning
- التفاف معكوسTransposed Convolution
- تسوية الدفعات الحسابيةBatch Normalization
- التجزئة الدلالية للصورةSemantic Segmentation
- ملء فراغات الصورImage Inpainting