الرؤية الحاسوبية2016متوسط11 دقيقة قراءة
نقل الأسلوب الفني للصور باستخدام الشبكات العصبية الالتفافية
Image Style Transfer Using Convolutional Neural Networks
Gatys, L. A. · Ecker, A. S. · Bethge, M. — CVPR
المشكلة
ظلّت إعادة رسم صورة فوتوغرافية بأسلوب لوحة شهيرة تحدياً عصيّاً لسنوات طويلة. الخوارزميات السابقة لنقل النسيج اعتمدت على إحصاءات منخفضة المستوى، ولم تكن قادرة على التفريق بين المحتوى الدلالي والأسلوب البصري. فلو أردت استخراج ضربات فرشاة فان غوخ وتطبيقها على صورة مدينة، لم تكن هناك طريقة تحافظ على المباني والسماء بأشكالها المألوفة وتغيّر النسيج ولوحة الألوان فقط.
الإسهام
تُبيّن الورقة أن شبكة التفافية مُدرَّبة مسبقاً على تمييز الأشياء مثل VGG-19 تفصل المحتوى عن الأسلوب داخلياً بطبيعتها. خرائط السمات في الطبقات العليا تلتقط المحتوى، بينما الارتباطات بين خرائط السمات — التي تُرمَّز عبر مصفوفات غرام — عبر طبقات متعددة تلتقط الأسلوب. الخوارزمية تبدأ من صورة تشويش أبيض ثم تُحسّن قيم البكسلات تدريجياً بحيث تُطابق سمات المحتوى من صورة ومصفوفات غرام من لوحة أخرى في الوقت نفسه، فتُنتج لوحات فنية مُذهلة. النسبة α/β تتحكم في ميل الناتج نحو الصورة الفوتوغرافية أو اللوحة الفنية.
الأثر
أشعلت هذه الورقة مجال نقل الأسلوب العصبي، وأثبتت أن الشبكات العميقة لا تتعلم التصنيف فحسب بل تبني تمثيلات بصرية غنية يمكن فصل مكوّناتها عن بعضها. ألهمت أساليب نقل الأسلوب اللحظي عبر شبكات التغذية الأمامية، ونقل الأسلوب لأي لوحة دون تدريب مخصص، وأسهمت لاحقاً في الأفكار التي بُنيت عليها نماذج توليد الصور من النصوص مثل DALL·E. تطبيقات مثل Prisma أوصلت هذه التقنية إلى ملايين الهواتف خلال أشهر قليلة.
تخيّل أنك طالب فنون. يُعطيك أستاذك صورة فوتوغرافية لمدينة ويقول لك: «ارسم هذا المشهد، لكن بأسلوب فان غوخ.»
تنظر إلى الصورة وتسأل نفسك: ماذا فيها؟ مبانٍ ونهر وسماء. ثم تدرس لوحة فان غوخ ليلة مرصّعة بالنجوم وتسأل: كيف يرسم؟ ضربات فرشاة سميكة ودوّامية، أزرق وأصفر نابضان بالحياة، نسيج مضطرب.
ترسم لوحة جديدة تُبقي تكوين المدينة كما هو لكنها تستخدم أسلوب فان غوخ في كل تفصيلة. هذا بالضبط ما تفعله الخوارزمية — لكن «العين» التي تُميّز المحتوى من الأسلوب هي مُدرَّبة مسبقاً، و«اليد» التي ترسم هي .
المشكلة: المحتوى والأسلوب متشابكان
حين ننظر إلى لوحة رسمها مونيه لمبنى بجانب نهر، نفصل تلقائياً بين شيئين: المحتوى — أي ماذا نرى من أشكال ومباني وسماء — والأسلوب — أي كيف رُسمت هذه الأشكال من ألوان باستيل ناعمة وضربات فرشاة ظاهرة. لكن بالنسبة للحاسوب، الصورة مجرد شبكة من الأرقام، ولم تكن أدوات معالجة الصور التقليدية تملك آلية منهجية لفكّ هذا التشابك.
الأساليب السابقة لنقل النسيج اعتمدت على إحصاءات مُصمَّمة يدوياً — كمُدرَّجات الاتجاهات ومعاملات المويجات — وكانت جيدة في التقاط الأنماط منخفضة المستوى لكنها عاجزة عن فهم أنّ «هنا مبنى». لذلك كانت النتيجة إمّا تدمير الأشياء في الصورة أو الفشل في نقل طابع اللوحة.
البصيرة الجوهرية هي أن الشبكات العصبية الالتفافية المُدرَّبة على تمييز الأشياء تبني من تلقاء نفسها داخلية تفصل بين ما في الصورة وبين طريقة ظهوره. كل ما نحتاجه هو أن نعرف أين يختبئ كلٌّ منهما داخل الشبكة وكيف نستخرجه.
VGG-19: العين التي ترى المحتوى والأسلوب
استخدم الباحثون شبكة VGG-19، وهي شبكة التفافية من 19 طبقة مُدرَّبة على مجموعة ImageNet لتمييز الأشياء. لم يُعيدوا تدريبها ولم يُضيفوا أي طبقات — فقط مرّروا الصور عبرها وقرأوا التنشيطات الداخلية كما هي.
تذكّر أن الشبكة الالتفافية تبني هرماً من : الطبقات الأولى تكشف الحواف والألوان، والطبقات الوسطى تكشف الأنسجة والأنماط، والطبقات العميقة تكشف أشياء كاملة وترتيبها المكاني. هذا التسلسل الهرمي هو بالضبط الأداة التي نحتاجها:
- المحتوى يقبع في الطبقات العميقة — حيث تعرف الشبكة أنّ «هذا مبنى» لكنها نسيت ألوان البكسلات الأصلية.
- الأسلوب يقبع في الارتباطات بين خرائط السمات على كل مستوى — بصمة نسيجية تقول «ضربات دوّامية سميكة بالأزرق والأصفر» دون أن تكترث بموقع هذه الضربات.
تمثيل المحتوى: ماذا يوجد في الصورة
مرِّر صورة فوتوغرافية عبر VGG-19 وسجّل خرائط السمات عند طبقة عميقة مُختارة — الورقة تستخدم conv4_2. هذه الخرائط تُشكّل ما نسمّيه تمثيل المحتوى: مجموعة أنماط تنشيط تُرمّز الترتيب المكاني للأشياء — المباني والسماء والنهر — لكنها تخلّت عن القيم الدقيقة للبكسلات وعن تفاصيل النسيج.
تخيّلها كرسم تخطيطي مُفصّل بقلم رصاص: كل الأشكال والتكوين موجودة، لكن الألوان وأسلوب الرسم اختفيا تماماً. لقياس مدى تشابه محتوى الصورة المُولَّدة مع الصورة الأصلية، نُقارن خرائط السمات الخاصة بكلٍّ منهما عند هذه الطبقة.
فكّر فيها كتقرير مقارنة: لكل مُرشّح في الطبقة المختارة، كم تختلف استجابة الصورة المُولَّدة عن استجابة الصورة الأصلية؟ إذا احتوت الصورة المُولَّدة على مبنى في الموضع نفسه الذي يظهر فيه بالصورة الأصلية، فإن استجابات المُرشّحات ستتقارب كثيراً حتى لو اختلفت الألوان والأنسجة اختلافاً تاماً.
تمثيل الأسلوب: بصمة مصفوفة غرام
التقاط الأسلوب أصعب بكثير من التقاط المحتوى. لوحة فان غوخ تتميّز بـنسيج خاص — ضربات دوّامية وطبقات طلاء سميكة وألوان متممة حيّة — وهذا النسيج منتشر في اللوحة كلها ولا يرتبط بعنصر بعينه.
الفكرة المحورية هنا: الأسلوب يتجلّى في معرفة أيّ خرائط سمات تنشط معاً. لو أنّ مُرشّح «الأزرق» ومُرشّح «الحافة المنحنية» يميلان للتنشيط في المواقع نفسها عبر الصورة بأكملها، فهذا الارتباط بينهما هو إشارة الأسلوب. والأداة الرياضية التي تلتقط كل هذه الارتباطات الزوجية هي .
لبنائها لطبقة معيّنة: خذ جميع خرائط السمات الـ — كل واحدة بحجم بكسل — ثم افرد كلاً منها في متّجه صفّي، واحسب المصفوفة من الجداءات النقطية. العنصر يقيس مدى تنشيط السمة والسمة معاً عبر الصورة. مصفوفة غرام في جوهرها بصمة ارتباط تصف كيف ترتبط الأنماط البصرية المختلفة ببعضها — أشبه بـ«الحمض النووي» لأسلوب الفنان.
تخيّل أن كل خريطة سمات مُراسِل متخصّص يُغطّي الصورة: واحد يُبلّغ «حواف هنا»، وآخر يُبلّغ «أزرق هنا»، وثالث يُبلّغ «منحنيات هنا». مصفوفة غرام تُسجّل أيّ المُراسلين يميلون لإرسال تقاريرهم من المواقع ذاتها. في لوحة فان غوخ، مُراسِل «المنحنيات» ومُراسِل «الأزرق» يتّفقان كثيراً — نمط الاتفاق هذا هو ما يمنح اللوحة طابع فان غوخ.
النقطة الحاسمة أنّ مصفوفة غرام تجمع عبر كل المواقع المكانية، فتلتقط ما الأنماط التي تظهر معاً دون أن تهتم أين تظهر. وهذا تحديداً ما نريده: الأسلوب لا يعتمد على الموقع.
خسارة الأسلوب: مطابقة بصمة النسيج
تُقارن مصفوفات غرام الخاصة بالصورة المُولَّدة مع تلك الخاصة باللوحة الفنية عند عدة طبقات في VGG — عادةً من conv1_1 حتى conv5_1. استخدام طبقات متعددة أمر جوهري: الطبقات الأولى تلتقط الأنسجة الدقيقة كآثار شعيرات الفرشاة، والطبقات الوسطى تلتقط الأنماط المتوسطة كأشكال الدوّامات، والطبقات العميقة تلتقط الأسلوب على نطاق واسع كترتيب لوحة الألوان الكلّي.
تجميع القطع: موازنة α/β
الإجمالية هي مجموع موزون من وخسارة الأسلوب. تبدأ الخوارزمية من صورة ثم تُعدّل بكسلاتها خطوة بخطوة باستخدام نزول التدرُّج — وتحديداً خوارزمية L-BFGS وهي مُحسِّن شبه نيوتوني — بهدف تقليل هذه الخسارة المُجمَّعة.
الوزنان α وβ يتحكمان في التوازن: حين تكون نسبة α/β عالية، تُحافظ الصورة الناتجة على بنية الصورة الفوتوغرافية مع لمسات أسلوبية خفيفة. وحين تكون منخفضة، يُهيمن نسيج اللوحة الفنية وتتحوّل الصورة إلى عمل شبه تجريدي.
نقطة مهمة: هذه العملية ليست تدريباً لشبكة — أوزان VGG مُجمَّدة تماماً. نحن نُحسّن الصورة نفسها. كل بكسل يُعامَل كمتغيّر، ونزول التدرُّج ينحت قيم البكسلات حتى تبدو الصورة كالأصلية من حيث خرائط السمات وتُحسّ كاللوحة من حيث مصفوفات غرام في آنٍ واحد.
خط المعالجة الكامل
إليك الخوارزمية الكاملة خطوة بخطوة:
- مرِّر الصورة الفوتوغرافية عبر VGG-19 وسجّل خرائط السمات عند
conv4_2← هذا هو هدف المحتوى. - مرِّر اللوحة الفنية عبر VGG-19 واحسب مصفوفات غرام عند
conv1_1, conv2_1, conv3_1, conv4_1, conv5_1← هذه أهداف الأسلوب. - هيِّئ الصورة الناتجة من تشويش أبيض — أو من الصورة الفوتوغرافية إن أردت تسريع التقارب.
- في كل تكرار: مرِّر الصورة الناتجة عبر VGG-19، واحسب خسارة المحتوى مقارنةً بهدف المحتوى وخسارة الأسلوب مقارنةً بأهداف الأسلوب، ثم اجمعهما بالوزنَين α وβ. بعد ذلك نفّذ لحساب التدرُّجات بالنسبة لـبكسلات الصورة الناتجة، وحدّث البكسلات بخوارزمية L-BFGS.
- كرّر حتى التقارب — وعادةً يكفي بضع مئات من التكرارات.
الفكرة ذاتها في شيفرة برمجية
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
import numpy as np
def content_loss(F, P):
"""الفرق التربيعي بين خرائط سمات الصورة المُولَّدة (F) والمحتوى (P)."""
return 0.5 * np.sum((F - P) ** 2)
def gram_matrix(F):
"""مصفوفة غرام: ارتباطات بين خرائط السمات.
شكل F: (عدد_المرشحات, عدد_البكسلات) — كل صف خريطة سمات مُسطّحة."""
return F @ F.T # (N, N) — العنصر (i,j) = مقدار تنشيط المرشح i والمرشح j معاً
def style_loss_layer(F, A):
"""خسارة الأسلوب لطبقة واحدة. F = مُولَّدة, A = هدف الأسلوب."""
G = gram_matrix(F) # مصفوفة غرام للصورة المُولَّدة
N, M = F.shape
return np.sum((G - A) ** 2) / (4 * N**2 * M**2)
def total_loss(content_F, content_P, style_Fs, style_As, alpha, beta):
"""دالة الهدف الكاملة: alpha * محتوى + beta * أسلوب."""
L_content = content_loss(content_F, content_P)
L_style = sum(style_loss_layer(F, A) for F, A in zip(style_Fs, style_As))
return alpha * L_content + beta * L_style
# «السحر»: لا ندرّب الشبكة. نُجمّد VGG ونُحسّن بكسلات الصورة ذاتها.
# كل بكسل متغيّر، وL-BFGS تُحدّث كل البكسلات لتقليل total_loss.
# ابدأ من تشويش أبيض ← كرّر ← يخرج لك عمل فني.لماذا تلتقط مصفوفات غرام الأسلوب؟
سؤال عميق أجابت عنه الورقة بالتجربة، ثم صاغته أبحاث لاحقة بشكل نظري. يمكن فهم مصفوفة غرام على أنها تُطابق توزيع السمات عبر الصورة. أبحاث لاحقة بيّنت أن تقليل الفرق بين مصفوفات غرام يُكافئ رياضياً تقليل صيغة معيّنة من التباعد الأقصى للمتوسطات — وهو مقياس إحصائي للمسافة بين توزيعَين.
بلغة حدسية: صورتان تملكان الأسلوب نفسه إذا تطابقت «وصفة» مكوّناتهما البصرية — النسب ذاتها من الحواف والألوان والأنسجة التي تظهر معاً، بصرف النظر عن مواقعها. مصفوفة غرام هي بالضبط بطاقة تلك الوصفة.
الورقة تُظهر أيضاً أنّ إعادة بناء صورة من مصفوفات غرام وحدها — دون أي قيد على المحتوى — تُنتج أنسجة تشبه اللوحة الأصلية: ضربات متموّجة بالأزرق والأصفر كما في «ليلة مرصّعة بالنجوم». هذا يؤكّد أنّ مصفوفات غرام تُرمّز الأسلوب فعلاً.
خيارات التصميم الأساسية وتأثيراتها
عدة قرارات تصميمية تُشكّل النتيجة النهائية:
- أي طبقة نختار للمحتوى؟ كلما زاد عمق الطبقة حافظت أكثر على البنية المُجرّدة وتخلّت عن تفاصيل البكسلات. الورقة تختار
conv4_2— عميقة بما يكفي لالتقاط الأشياء لكنها مُجرّدة بما يكفي لمنح الأسلوب حرية في التعبير. - أي طبقات نختار للأسلوب؟ طبقة واحدة تلتقط الأسلوب على مقياس واحد فقط. استخدام الطبقات الخمس من
conv1_1حتىconv5_1يلتقط كل شيء من النسيج الناعم إلى التكوين العام. - التهيئة الأولية. البدء من تشويش أبيض يُنتج نتائج فنية أكثر تحرراً لكنه يتقارب ببطء. أمّا البدء من الصورة الفوتوغرافية فيتقارب أسرع ويحتفظ ببنية أوضح.
- مقابل . وجد الباحثون أن استبدال التجميع الأقصى بـالتجميع المتوسط يُحسّن تدفق التدرُّجات قليلاً ويُعطي نتائج أنعم.
لماذا غيّر هذا العمل المشهد
2015
Gatys وآخرون — نقل الأسلوب العصبي
الورقة الأصلية على arXiv بيّنت أن خرائط سمات VGG ومصفوفات غرام قادرة على فصل المحتوى عن الأسلوب، ما يُتيح إعادة رسم الصور الفوتوغرافية بأسلوب فني.
2016
Johnson وآخرون — نقل الأسلوب بالتغذية الأمامية
دُرِّبت شبكة تغذية أمامية على تطبيق أسلوب ثابت بتمريرة واحدة فقط بدلاً من التحسين التكراري، فأصبح نقل الأسلوب لحظياً.
2016
تطبيق Prisma — الفن العصبي ينتشر على نطاق واسع
أوصل تطبيق Prisma تقنية نقل الأسلوب العصبي إلى ملايين الهواتف الذكية وصار من أكثر التطبيقات تحميلاً، مما أثبت وجود شهية حقيقية لدى المستخدمين لأدوات إبداعية مدعومة بالذكاء الاصطناعي.
2017
Pix2Pix — ترجمة الصور المتقابلة
استخدم Isola وآخرون شبكات توليدية تنافسية شرطية لترجمة أزواج من الصور. إطار الخسارة الإدراكية المستوحى من نقل الأسلوب أثّر بشكل مباشر في طريقة مطابقة السمات المُتّبعة.
2017
CycleGAN — ترجمة الصور دون أزواج متقابلة
مكّن Zhu وآخرون من نقل الأسلوب بين مجالات مختلفة دون الحاجة لأمثلة متقابلة — خيول ↔ حُمُر وحشية، صيف ↔ شتاء — ما وسّع فكرة فصل المحتوى عن الأسلوب لتشمل سياقات جديدة.
2021
DALL·E — توليد الصور من النصوص
أظهر نموذج DALL·E من OpenAI أن فكرة فصل المحتوى عن الأسلوب قابلة للتوسّع إلى التوليد المشروط بالنص. المستخدم يطلب «ارسم لي قطة بأسلوب مونيه» — وفهم الأسلوب العصبي صار قدرة عامة.
المرجعGatys, Ecker, Bethge. Image Style Transfer Using Convolutional Neural Networks. CVPR, 2016.
مصطلحات هذه الورقة
- مصفوفة غرامGram Matrix
- خريطة السماتFeature Map
- خسارة المحتوىContent Loss
- الخسارة الإدراكيةPerceptual Loss
- الالتفاف الرقميConvolution
- التجميع المكانيPooling
- الشبكة العصبية الالتفافيةConvolutional Neural Network (CNN)
- الأمثَلَةOptimization
- الانحدار التدريجيGradient Descent
- التمثيل الرقميRepresentation
- استخلاص السماتFeature Extraction
- نقل التعلمTransfer Learning