Neural Style Transfer
يعيد نقل الأسلوب العصبي رسم محتوى صورة بأسلوب صورة أخرى من خلال مطابقة إحصاءات سمات CNN. يتناول أسلوب Gatys والنماذج السريعة والاستخدامات.
نقل الأسلوب العصبي (NST) تقنية في الرؤية الحاسوبية تعرض محتوى صورة، مثل صورة لشارع، بالأسلوب المرئي لصورة أخرى، مثل لوحة، من خلال مطابقة السمات الداخلية لشبكة عصبية التفافية مدرَّبة مسبقًا (CNN). وتلتقط خرائط السمات في طبقة عميقة المحتوى، إذ تسجّل ما يظهر وأين يظهر. أما الأسلوب فتلتقطه الارتباطات بين قنوات السمات، التي تسجّل الأنسجة والألوان وضربات الفرشاة لكنها تتجاهل ترتيبها. وقدّم ليون غاتيس وألكسندر إكر وماتياس بيتغه من جامعة توبنغن الطريقة في أغسطس 2015 ضمن خوارزمية عصبية للأسلوب الفني، ثم أتاح تطبيق Prisma هذه التقنية لمستخدمي الهواتف الذكية في العام التالي.
كيفية عمل الطريقة الأصلية#
تستخدم طريقة غاتيس VGG-19، وهي شبكة CNN مدرّبة على ImageNet، بوصفها مستخرج سمات ثابتًا، وتغيّر بكسلات صورة المخرجات بدلًا من أوزان الشبكة. وتوجّه دالتا خسارة النتيجة:
- خسارة المحتوى: الفرق التربيعي بين خرائط سمات صورة المخرجات وصورة المحتوى عند طبقة عميقة واحدة، conv4_2، ما يحافظ على إمكانية التعرّف على الأجسام والتخطيط.
- خسارة الأسلوب: الفرق التربيعي بين مصفوفات غرام عند خمس طبقات من conv1_1 إلى conv5_1. في طبقة تضم C قناة، تكون مصفوفة غرام جدولًا بحجم C x C، وتقيس الخانة (i, j) مدى قوة استجابة القناتين i وj معًا، بعد جمع القيم عبر كل موضع في الصورة.
يُقلَّل المجموع الموزون للخسارتين باستخدام خوارزمية التحسين من نوع L-BFGS، وينقل الانتشار العكسي التدرّج عبر الشبكة المجمّدة إلى وحدات البكسل:
لأن مصفوفة غرام تجمع القيم عبر المواضع، فإنها لا تتغير كثيرًا عندما يتغير تخطيط الصورة. يوضح تبديل أرباع الصورة ذلك باستخدام ResNet-18 من torchvision، وهي شبكة CNN أصغر من VGG-19 ومدرّبة على ImageNet، ضمن PyTorch:
import torch
from skimage import data
from torchvision.models import ResNet18_Weights, resnet18
weights = ResNet18_Weights.DEFAULT
cnn = resnet18(weights=weights).eval()
early_layers = torch.nn.Sequential(cnn.conv1, cnn.bn1, cnn.relu, cnn.maxpool, cnn.layer1)
preprocess = weights.transforms()
photo = torch.tensor(data.astronaut()).permute(2, 0, 1) # 3 x 512 x 512
rearranged = torch.roll(photo, shifts=(256, 256), dims=(1, 2)) # same pixels, quadrants swapped
def content_and_style(image):
"""Return an early CNN layer's feature map (content) and its Gram matrix (style)."""
with torch.no_grad():
features = early_layers(preprocess(image)[None])[0].flatten(1) # channels x positions
return features, features @ features.T / features.shape[1]
(content_a, style_a), (content_b, style_b) = content_and_style(photo), content_and_style(rearranged)
print(f"Content change: {(content_a - content_b).norm() / content_a.norm():.0%}")
print(f"Style change: {(style_a - style_b).norm() / style_a.norm():.0%}")يغيّر تبديل الأرباع خريطة السمات بنسبة 96%، لكنه يغيّر مصفوفة غرام بنسبة 7% فقط؛ وتأتي نسبة 7% المتبقية من الفواصل الجديدة ومن الاقتصاص المركزي، الذي يُبقي جزءًا مختلفًا من كل صورة. ولهذا تنقل خسارة الأسلوب ضربات فرشاة اللوحة ولوحة ألوانها دون نقل مواضع عناصرها.
نقل الأسلوب السريع والاعتباطي#
يستغرق تحسين كل صورة مئات التكرارات، لذا نقلت الأبحاث اللاحقة التحسين إلى مرحلة التدريب. درّب جاستن جونسون وألكسندر العاهي ولي في-في من جامعة ستانفورد عام 2016 شبكة تغذية أمامية لكل أسلوب باستخدام دوال الخسارة نفسها، فحققوا نتائج أسرع بنحو ثلاثة أضعاف رتبية، وطبّقوا الخسائر الإدراكية نفسها على رفع الدقة الفائقة. ووجد دميتري أوليانوف وزملاؤه أن استبدال تطبيع الدُفعات بتطبيع المثيلات في تلك الشبكات حسّن جودة إضفاء الأسلوب. وتتعامل طريقة التطبيع التكيفي للمثيلات (AdaIN، 2017) التي ابتكرها شون هوانغ وسيرج بيلونغي مع أي أسلوب دون إعادة تدريب: فهي تغيّر المتوسط والانحراف المعياري لكل قناة من سمات المحتوى لتطابق قيمهما في صورة الأسلوب، ثم تفك ترميزها، وتعمل في الزمن الحقيقي.
نقل الأسلوب لنماذج رؤية أكثر متانة#
استخدم روبرت غيرهوس وزملاؤه AdaIN لإظهار أن شبكات CNN المدرّبة على ImageNet تعتمد على النسيج أكثر من الشكل: إذ تصنّف ResNet-50 صورة قطة ذات نسيج جلد فيل على أنها فيل، وهو شكل من التعلّم بالاختصارات. وأعادوا إضفاء الأسلوب على كل صورة في Stylized-ImageNet باستخدام لوحة عشوائية من مجموعة Painter by Numbers التي تضم 79,434 لوحة، فاعتمدت ResNet-50 المدرّبة عليها على الشكل بدلًا من ذلك. وأدى استخدام شبكة قائمة على الشكل هذه بوصفها العمود الفقري لنموذج Faster R-CNN لـكشف الأجسام إلى رفع mAP50 على Pascal VOC 2007 من 70.7 إلى 75.1، وعلى MS COCO من 52.3 إلى 55.2.
تصلح الفكرة نفسها بوصفها زيادة للبيانات لمجموعات بيانات الكشف، لأن نقل الأسلوب يُبقي كل جسم في موضعه. وتعيد النسخة ذات الأسلوب الجديد من صورة موسومة استخدام مربعات الإحاطة الأصلية؛ لذا لا تحتاج في مجموعة بيانات كشف Ultralytics YOLO26 إلا إلى نسخة من ملف الوسوم الأصلي باسم الصورة الجديدة.
نقل الأسلوب العصبي مقارنةً بالمصطلحات ذات الصلة#
- الشبكات التوليدية التنافسية (GANs): تتعلّم CycleGAN تحويلًا بين مجموعات صور كاملة، مثل الصور الفوتوغرافية ولوحات مونيه، بدلًا من مطابقة إحصاءات صورة أسلوب واحدة.
- التعلّم بالنقل: يضبط الأوزان المدرّبة مسبقًا لمهمة جديدة. لا يحدّث نقل الأسلوب العصبي أوزان الشبكة أبدًا، بل يستخدم الشبكة لقياس الخسائر فقط.
- نماذج الانتشار: تعيد إضفاء الأسلوب على الصور من توجيه نصي أو صورة مرجعية عبر إعادة توليدها، ما قد يغيّر الأشكال والتفاصيل إلى جانب الأسلوب.










