Feature Maps
خريطة الميزات شبكة من الاستجابات ينتجها مرشح عبر صورة، وتُظهر مواضع ظهور نمطه. يتناول هذا الموضوع حسابها وأبعادها وتمثيلها المرئي.
خريطة الميزات هي خرج مرشح واحد في طبقة من شبكة عصبية التفافية (CNN): شبكة ثنائية الأبعاد من الأرقام تسجل مدى ظهور نمط المرشح في كل موضع من مدخله. وتنتج طبقة التفاف تضم 64 مرشحًا 64 خريطة ميزات، تُكدّس في موتر ذي شكل قنوات × ارتفاع × عرض، ويصبح هذا الموتر مدخل الطبقة التالية. وتبرز خرائط الميزات في الطبقات المبكرة الحواف والألوان والأنسجة، بينما تستجيب خرائط الطبقات الأعمق لأجزاء الأجسام والأجسام الكاملة. وخريطة التنشيط مرادف لها، كما يُشار كثيرًا إلى الموتر المكدس الكامل لطبقة ما باسم خريطة ميزاتها.
كيفية حساب خريطة الميزات#
المرشّح، الذي يُسمّى أيضًا النواة، هو مصفوفة صغيرة من أوزان النموذج المتعلّمة، ويكون حجم المرشّح عادةً 3×3 لكل قناة إدخال. وتحرّك عملية الالتفاف المرشّح عبر المدخل؛ وعند كل موضع، تضرب القيم المتداخلة عنصرًا بعنصر، ثم تجمع النواتج وتضيف إليها انحيازًا للحصول على قيمة خرج واحدة. وتشير قيم الخرج المرتفعة إلى المواضع التي يتطابق فيها المدخل مع نمط المرشّح. ويُحدَّد ارتفاع الخرج وعرضه استنادًا إلى حجم الإدخال، وحجم النواة k، والحشو p، والخطوة s، وفقًا للصيغة floor((input + 2p - k) / s) + 1، لذا تحافظ نواة 3×3 مع حشو مقداره 1 على الحجم عند خطوة 1، وتقلّص الحجم إلى النصف عند خطوة 2.
يطبّق المقتطف أدناه نواة الحواف العمودية على صورة صغيرة نصفها الأيسر داكن ونصفها الأيمن ساطع.
import torch
import torch.nn.functional as F
# صورة رمادية بحجم 8x8: نصفها الأيسر داكن ونصفها الأيمن ساطع، لذا تتضمن حافة عمودية واحدة
image = torch.zeros(1, 1, 8, 8)
image[..., 4:] = 1.0
# نواة Sobel بحجم 3x3 تستجيب للحواف العمودية
kernel = torch.tensor([[-1.0, 0.0, 1.0], [-2.0, 0.0, 2.0], [-1.0, 0.0, 1.0]]).view(1, 1, 3, 3)
# حرّك النواة فوق الصورة لإنتاج خريطة ميزات
feature_map = F.conv2d(image, kernel)
print(feature_map.shape)
print(feature_map[0, 0, 0])يطبع torch.Size([1, 1, 6, 6]) وtensor([0., 0., 4., 4., 0., 0.]). ومن دون حشو، تنتج الصورة ذات الحجم 8×8 خريطة بحجم 6×6 (8 − 3 + 1 = 6)، ولا تكون الخريطة غير صفرية إلا في العمودين اللذين تعبر فيهما النواة الحافة. وتتعلم شبكات CNN المدرّبة العديد من المرشحات في الطبقة الأولى التي تتصرف مثل نواة Sobel، إلى جانب مرشحات مضبوطة للألوان والأنسجة.
خرائط الميزات عبر الشبكة#
مع انتقال البيانات عبر CNN، يتناقص عادةً ارتفاع خرائط الميزات وعرضها، بينما يزداد عدد قنواتها. وتخفض كل خطوة من خطوات خفض العينات الدقة إلى النصف، كما يلخص كل موضع في خريطة أعمق مجالًا استقباليًا أكبر من الصورة الأصلية. وتحتفظ الكواشف بخرائط من أعماق متعددة لأن المفاضلة تسير في الاتجاهين: فخريطة بخطوة 8 لصورة بحجم 640×640 هي شبكة 80×80 دقيقة بما يكفي لتحديد الأجسام الصغيرة، وخريطة بخطوة 32 هي شبكة 20×20 ترى كل خلية فيها جزءًا كافيًا من الصورة للتعرف على الأجسام الكبيرة. وتدمج شبكة هرمية للميزات (FPN) الخرائط من هذه الأعماق كي يحصل كل مقياس على موضع دقيق ومعنى عالي المستوى، أما العمود الفقري الذي ينتجها فهو مرحلة استخراج الميزات الرئيسية في النموذج.
خرائط الميزات والمصطلحات ذات الصلة#
- المرشح: يحتوي المرشح على الأوزان المتعلّمة، وخريطة الميزات هي نتيجة تطبيقها على مدخل واحد. وينتج كل مرشح خريطة ميزات واحدة لكل صورة.
- دالة التنشيط: دالة مثل ReLU تُطبّق على خريطة الميزات عنصرًا بعنصر بعد الالتفاف. وتوجد الخريطة قبل تطبيقها وبعده، بقيم ما قبل التنشيط وما بعدها.
- التضمينات: يكون التضمين عادةً متجهًا أحادي البعد يُنشأ بتجميع خريطة ميزات أو تسطيحها، فيحتفظ بمحتوى الصورة ويستبعد مواضعه. وتدعم التضمينات البحث عن التشابه والتجميع، بينما تخدم خرائط الميزات المكانية المهام التي تتطلب تحديد المواقع، مثل التجزئة الدلالية.
- خرائط البروز: خريطة البروز هي خريطة حرارية واحدة تفسر تنبؤًا واحدًا، وتُحسب غالبًا من خرائط السمات وتدرجاتها.
فحص خرائط السمات وعرضها بصريًا#
يُظهر رسم القنوات الفردية على هيئة صور بتدرجات الرمادي استجابات كل مرشح. تبدو خرائط الطبقة الأولى كنسخ من الصورة مرشّحة لاستخراج الحواف، بينما تبدو الخرائط العميقة ككتل خشنة فوق أجزاء الأجسام. في PyTorch، يلتقط خطّاف أمامي مسجل باستخدام register_forward_hook خرائط السمات لأي طبقة أثناء الاستدلال. تحتوي الطبقات العميقة على مئات القنوات، لذا تختزلها أدوات الذكاء الاصطناعي القابل للتفسير عادةً في خريطة حرارية واحدة. يزن Grad-CAM كل قناة في خريطة سمات متأخرة وفق متوسط تدرج درجة الفئة، ثم يجمع القنوات، ما يبرز مناطق الصورة التي أسهمت في التنبؤ. في نموذج YOLO26 النانوي، تصل صورة بحجم 640×640 إلى رأس الكشف على هيئة ثلاث خرائط سمات بأبعاد 64×80×80 و128×40×40 و256×20×20، كما أن التنبؤ باستخدام visualize=True يحفظ تراكبًا من LayerCAM باسم _cam.jpg يزن كل موضع في تلك الخرائط وفق تدرجه الموجب نحو كل فئة متنبأ بها.










