الرؤية الحاسوبية2018متوسط9 دقيقة قراءة
شبكات الضغط والتنشيط الانتقائي
Squeeze-and-Excitation Networks
Hu, J. · Shen, L. · Sun, G. — CVPR
المشكلة
في طبقات الالتفاف التقليدية، تتشابك المعلومات المكانية مع معلومات القنوات دون فصل: كل مرشّح يتعلّم نمطاً مكانياً محلياً ويدمج القنوات معاً، لكنه لا يملك وسيلة يقرّر بها أيّ القنوات تحمل معلومات مفيدة فعلاً وأيّها مجرد ضوضاء. النتيجة أن جميع القنوات تمرّ بالوزن نفسه، حتى لو كانت قناة واحدة تحمل إشارة تمييزية قوية والبقية لا تضيف شيئاً يُذكر.
الإسهام
وحدة والتنشيط الانتقائي (SE block): مكوِّن خفيف يتعلّم العلاقات بين القنوات بشكل صريح. الفكرة بسيطة: أولاً نضغط كل قناة إلى رقم واحد بحساب متوسطها المكاني، ثم نمرّر هذا الملخّص عبر شبكة صغيرة من طبقتين متصلتين تُخرج وزناً بين 0 و1 لكل قناة. هذه الأوزان تُعيد ضبط خرائط السمات الأصلية: القنوات المفيدة تُعزَّز والقنوات الضعيفة تُكبَت. الجميل أن هذه الوحدة تُضاف إلى أي شبكة التفافية موجودة بتكلفة حسابية شبه معدومة، وقد حقّق SENet المبني عليها المركز الأول في ILSVRC 2017 بخطأ top-5 لم يتجاوز 2.251%.
الأثر
فتحت وحدة SE الباب أمام فكرة في الرؤية الحاسوبية. المبدأ الأساسي — أن تتعلّم الشبكة بنفسها أيّ سماتها تستحق التركيز — انتقل بعدها إلى بنى مثل EfficientNet وConvNeXt وغيرها. اليوم صار انتباه القنوات مكوّناً أساسياً في أنظمة الكشف والتجزئة والتوليد، وتبقى وحدة SE النقطة المرجعية التي انطلق منها هذا التوجّه.
تخيّل استوديو تلفزيوني فيه عشرات الكاميرات، كل واحدة تصوّر المشهد من زاوية مختلفة: لقطات قريبة للوجوه، لقطات بانورامية للمكان، زوايا علوية. في البث العادي، يُمزج كل شيء بالتساوي ولا أحد يسأل أيّ الزوايا أهم. لكنّ المخرج الذكي يعمل بطريقة مختلفة: يأخذ ملخّصاً سريعاً من كل كاميرا، يقيّم أيّ الزوايا تخدم هذا المشهد تحديداً، ثم يرفع إشارة الكاميرات المهمة ويخفّض البقية.
هذا تماماً ما تفعله وحدة SE مع في الشبكة العصبية. كل قناة تشبه كاميرا تلتقط سمة مختلفة من البيانات. الوحدة تأخذ ملخّصاً عاماً لكل قناة (مرحلة الضغط)، ثم تقرّر أيّ القنوات تستحق التركيز (مرحلة التنشيط)، وأخيراً تضبط مستوى كل قناة بناءً على ذلك (إعادة المعايرة).
المشكلة: كل القنوات تمرّ بالوزن نفسه
حين تمرّ البيانات عبر ، تُطبَّق مجموعة من على المدخل، وكل مرشّح يُنتج واحدة. كل خريطة سمات — أي كل قناة — تلتقط نمطاً مختلفاً: هذه تكشف حواف أفقية، وتلك ترصد نسيجاً قُطرياً، وثالثة تلتقط تكتّلات لونية.
المشكلة أنه بعد الالتفاف، تنتقل كل القنوات إلى الطبقة التالية بنفس الأهمية. الشبكة لا تملك طريقة مباشرة لتقول: «في هذه الصورة بالذات، قناة الحواف أهمّ بكثير من قناة الألوان». العلاقات بين القنوات لا تُتعلَّم إلا بشكل غير مباشر من خلال تراكم الطبقات، ولا يوجد مكوّن صريح يُنظّم هذه العلاقة.
تخيّل لجنة خبراء يتحدّث فيها الجميع بنفس الصوت بصرف النظر عن تخصّصه. الخبير الذي يملك الإجابة الصحيحة يضيع صوته وسط أصوات لا تضيف شيئاً.
وحدة SE: اضغط، نشِّط، أعِد الضبط
وحدة SE تضيف ثلاث خطوات خفيفة بعد أي عملية التفاف:
الخطوة 1 — الضغط (). نأخذ خريطة السمات لكل قناة (بأبعاد H×W) ونحسب متوسطها فنحصل على رقم واحد يلخّص ما التقطته هذه القناة مكانياً. الأصلي C×H×W يتحوّل إلى بطول C. تخيّل أنك تقرأ عنواناً من سطر واحد عن أداء كل كاميرا بدل مراجعة كل لقطاتها.
الخطوة 2 — التنشيط (شبكة صغيرة). المتجه بطول C يدخل إلى طبقتين متصلتين بالكامل: الأولى تختزل البُعد بمعامل (عادةً 16) وتمرّره عبر ، والثانية تعيده إلى C وتطبّق . الناتج: وزن بين 0 و1 لكل قناة يعبّر عن أهميتها. عنق الزجاجة هنا يحدّ من عدد المعاملات ويُجبر الشبكة على التقاط العلاقات بين القنوات في فضاء مضغوط — كأن المخرج يستشير لجنة صغيرة بدل أن يسأل كل مصوّر على حِدة.
الخطوة 3 — إعادة الضبط (ضرب قناة بقناة). خريطة السمات الأصلية لكل قناة تُضرب في وزنها المُتعلَّم. القنوات التي يراها النموذج مهمة تُعزَّز (وزن قريب من 1)، والقنوات غير المفيدة تُكبَت (وزن قريب من 0). البنية المكانية داخل كل قناة تبقى كما هي — ما يتغيّر هو مستوى القناة ككل.
الرياضيات وراء الضغط والتنشيط
الآن بعد أن اتّضحت الفكرة — لخِّص، قيِّم، أعِد الضبط — لننظر إلى الصياغة الرياضية. خطوة الضغط تختصر المعلومات المكانية في واصف واحد لكل قناة:
بعد ذلك، تتعلّم خطوة التنشيط العلاقات اللاخطية بين القنوات من خلال عنق زجاجة:
وأخيراً، تأتي خطوة إعادة الضبط لتطبيق هذه الأوزان المُتعلَّمة على خرائط السمات الأصلية:
نسبة الاختزال: الموازنة بين القدرة والتكلفة
عنق الزجاجة في خطوة التنشيط يحتوي على اسمه — — وهو يتحكّم في مقدار ضغط متجه القنوات قبل إعادة توسيعه. يمكنك التفكير فيه كحجم لجنة استشارية: لو كانت كبيرة جداً ( صغير) ارتفعت التكلفة وزاد خطر ، ولو كانت صغيرة جداً ( كبير) لم تستطع التقاط العلاقات المعقدة بين القنوات.
جرّب المؤلفون قيم ∈ 32 ووجدوا أن يعطي أفضل توازن بين الدقة والتكلفة الحسابية. عند هذه القيمة، لا تضيف وحدة SE سوى نحو 1% معاملات إضافية إلى ResNet-50 مقابل تحسّن واضح في الدقة.
إضافة فورية: وحدات SE في ResNet وInception
أهم ما يميّز وحدة SE أنها لا تفترض بنية محدّدة: يمكنك إضافتها بعد أي تحويل — سواء كان التفافاً عادياً أو وحدة أو وحدة Inception — وستُعيد معايرة المخرجات قبل انتقالها إلى المرحلة التالية.
في ResNet مثلاً، توضع وحدة SE داخل كل وحدة متبقية: مسار الالتفاف ينتج خرائط السمات، ثم تمرّ عبر وحدة SE لإعادة المعايرة، وبعدها فقط يُضاف اتصال التخطّي. بهذا الترتيب، وحدة SE تُعدّل الفرع المُتعلَّم فقط، بينما يبقى مسار التخطّي نظيفاً ويوفّر ممرّاً سلساً لانسياب .
في GoogLeNet/Inception الأمر مشابه: تلتفّ وحدة SE حول وحدة Inception بالكامل. الفروع المتوازية (1×1 و3×3 و5×5 والتجميع) تُدمج أولاً ثم تُعاد معايرة القنوات المدمجة.
في كلتا الحالتين، الإدراج لا يتطلّب تغيير أي شيء في البنية الأصلية — مجرد وحدة إضافية واحدة تُدرج بعد التحويل الرئيسي.
وحدة SE بالكود
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
import torch
import torch.nn as nn
class SEBlock(nn.Module):
"""وحدة الضغط والإثارة."""
def __init__(self, channels, reduction=16):
super().__init__()
mid = channels // reduction
self.squeeze = nn.AdaptiveAvgPool2d(1) # C×H×W → C×1×1
self.excitation = nn.Sequential(
nn.Linear(channels, mid, bias=False), # FC₁: C → C/r
nn.ReLU(inplace=True),
nn.Linear(mid, channels, bias=False), # FC₂: C/r → C
nn.Sigmoid(), # بوابة كل قناة إلى [0,1]
)
def forward(self, x):
b, c, _, _ = x.shape
z = self.squeeze(x).view(b, c) # الضغط: مكاني → عددي
s = self.excitation(z).view(b, c, 1, 1) # الإثارة: تعلّم أوزان القنوات
return x * s # إعادة القياس: إعادة وزن القنوات
# الاستخدام: أدرج بعد أي كتلة التفافية
# out = self.conv_block(x)
# out = self.se(out) # ← سطر واحد فقط
# out = out + x # ثم أضف اتصال التخطّيالنتائج: تكلفة صغيرة، مكاسب كبيرة
في كل مرة أُضيفت وحدات SE إلى بنية قائمة، تحسّن الأداء على ImageNet بتكلفة حسابية ضئيلة:
- SE-ResNet-50 خفّض خطأ top-1 بنحو 1% مقارنة بالنسخة الأصلية، مع إضافة 2.5 مليون فقط (زيادة ~10%) وحمل حسابي يكاد لا يُلاحَظ.
- SE-ResNeXt-50 تفوّق على ResNeXt-50 واقترب من أداء ResNeXt-101 — رغم أن الأخير يحتوي ضعف عدد الطبقات.
- SE-Inception رفع أداء Inception-ResNet-v2 على معياريّ top-1 وtop-5 معاً.
- SENet-154 — بنية مبنية على ResNeXt مع وحدات SE — حقّق المركز الأول في ILSVRC 2017 بخطأ top-5 لم يتجاوز 2.251%، أي تحسّن نسبي يقارب 25% عن فائز 2016.
هذا التحسّن المتكرّر عبر بنى مختلفة تماماً — من VGG إلى ResNet إلى Inception — أثبت أن انتباه القنوات آلية مفيدة بشكل عام، وليس خدعة تعمل مع بنية واحدة فقط.
ماذا تتعلّم وحدات SE فعلياً؟
حين فحص المؤلفون أوزان القنوات التي تعلّمتها الشبكة عبر طبقات وفئات مختلفة، ظهرت ملاحظة مثيرة. في الطبقات المبكّرة القريبة من المدخل، تكون أنماط التنشيط متشابهة تقريباً لكل الفئات — الشبكة تعطي أوزاناً متقاربة للقنوات بصرف النظر عمّا تحتويه الصورة. وهذا مفهوم لأن السمات المبكّرة كالحواف والأنسجة يحتاجها كل مدخل تقريباً.
أما في الطبقات الأعمق، فالوضع يختلف تماماً: التنشيط يصبح متخصصاً حسب الفئة. مثلاً، القنوات التي تكشف نسيج الفراء تحصل على أوزان عالية مع صور الحيوانات، والقنوات الحساسة للأنماط الهندسية ترتفع أوزانها مع صور المباني. هذا يعني أن وحدة SE تتعلّم فعلياً نوعاً من الحوسبة الشرطية: كل مدخل يُنشّط مجموعة مختلفة من القنوات.
الملاحظة اللطيفة أن في الطبقات الأخيرة قبل ، تعود أنماط التنشيط للتقارب مجدداً. التفسير المرجّح أن الشبكة وصلت بالفعل إلى تمثيلها النهائي ولم تعد بحاجة لإعادة معايرة كبيرة في هذه المرحلة.
الإرث: انتباه القنوات في كل مكان
2017
SENet يفوز في ILSVRC
حقّق Hu وShen وSun المركز الأول في مسابقة ImageNet 2017 بخطأ top-5 بلغ 2.251%. كانت هذه المرة الأولى التي يُثبت فيها انتباه القنوات قدرته على تحسين الأداء في جميع البنى الرئيسية.
2018
CBAM: انتباه القنوات + الانتباه المكاني
أضاف Woo وزملاؤه فرعاً للانتباه المكاني إلى جانب انتباه القنوات، فأصبح النموذج يتعلّم أيّ القنوات مهمة وفي أيّ مواقع مكانية تهمّ.
2019
EfficientNet يتبنّى وحدات SE
بنية EfficientNet التي صمّمها Tan وLe عبر البحث المعماري العصبي وضعت وحدات SE داخل وحدات MBConv. أسلوب التحجيم بمعاملات مركّبة جعلها الأفضل من حيث نسبة الدقة إلى الحساب لسنوات.
2020
ECA-Net — انتباه قنوات فعّال
استعاض Wang وزملاؤه عن عنق الزجاجة في SE بالتفاف أحادي البُعد عبر القنوات، فاستغنوا عن الطبقات المتصلة بالكامل وحقّقوا دقة مشابهة بتكلفة أقل.
2022
ConvNeXt يحدّث الالتفافات
نقل Liu وزملاؤه أفكار تصميم عصر المحوِّلات إلى الشبكات الالتفافية. ConvNeXt يستخدم تعديلاً على مستوى القنوات مستوحى من SE — وهو دليل على أن مبدأ «دع كل قناة تحدّد أهميتها» لا يزال فاعلاً.
أثر وحدة SE لم يقتصر على التصنيف. اليوم تجد وحدات انتباه القنوات في (نسخ YOLO المختلفة)، وفي التصوير الطبي (شبكات الانتباهية)، وفي (مثل RCAN)، وفي النماذج التوليدية. بساطة التصميم — تجميع عام، عنق زجاجة صغير، ضبط على مستوى القنوات — أسّست نمطاً طوّرته آليات الانتباه اللاحقة لكنها نادراً ما تخلّت عن جوهره.
المرجعHu, Shen, Sun. Squeeze-and-Excitation Networks. CVPR, 2018.
مصطلحات هذه الورقة
- انتباه القنواتChannel Attention
- التجميع المتوسط العامGlobal Average Pooling
- إعادة معايرة السماتFeature Recalibration
- الضغطSqueeze
- التنبيهExcitation
- نسبة الاختزالReduction Ratio
- آلية البواباتGating Mechanism
- الوصلة التجاوزيةResidual Connection