الرؤية الحاسوبية متوسط · Intermediate 15 دقيقة

معماريات الشبكات الالتفافية

CNN Architectures

من LeNet وAlexNet إلى VGG وInception وResNet وEfficientNet: الأفكار التي دفعت الأداء.

تقدّمك في المسار0%

خط زمني مختصر

المعماريةالسنةالفكرة المميزة
LeNet-51998التفاف + تجميع لتمييز الأرقام
AlexNet2012ReLU، Dropout، تدريب على GPU، فوز ImageNet
VGG2014مرشحات 3×3 متراكمة بعمق 16–19 طبقة
GoogLeNet / Inception2014مرشحات متوازية والتفاف 1×1
ResNet2015الوصلات المتبقية، شبكات بـ 50–152 طبقة وأكثر
MobileNet2017التفاف منفصل عمقياً للأجهزة المحمولة
EfficientNet2019تحجيم مركب للعمق والعرض والدقة

الكتلة المتبقية

$$\mathbf{y} = \mathcal{F}(\mathbf{x}, \{W_i\}) + \mathbf{x}$$

import torch.nn as nn

class BasicBlock(nn.Module):
    def __init__(self, ch):
        super().__init__()
        self.f = nn.Sequential(
            nn.Conv2d(ch, ch, 3, padding=1, bias=False), nn.BatchNorm2d(ch), nn.ReLU(),
            nn.Conv2d(ch, ch, 3, padding=1, bias=False), nn.BatchNorm2d(ch))
        self.act = nn.ReLU()
    def forward(self, x):
        return self.act(self.f(x) + x)

إذا كانت الطبقات الإضافية غير مفيدة، يكفي أن تتعلم \(\mathcal{F} \approx 0\) لتصبح الكتلة دالة هوية، وهذا أسهل من تعلم الهوية مباشرة.

اختيار المعمارية عملياً

from torchvision import models
m1 = models.resnet50(weights=models.ResNet50_Weights.DEFAULT)
m2 = models.efficientnet_b0(weights=models.EfficientNet_B0_Weights.DEFAULT)
m3 = models.mobilenet_v3_small(weights=models.MobileNet_V3_Small_Weights.DEFAULT)
  • ResNet: خط أساس قوي وموثوق.
  • EfficientNet: دقة جيدة لكل معامل.
  • MobileNet: للأجهزة محدودة الموارد.

قارن دائماً على بياناتك، فترتيب الأداء على ImageNet لا ينتقل بالضرورة إلى مجالات أخرى.

مصطلحات الدرس

الالتفاف 1×1 1x1 Convolution
التفاف بمرشح بحجم بكسل واحد يغير عدد القنوات ويمزجها بتكلفة منخفضة.
التحجيم المركب Compound Scaling
زيادة عمق الشبكة وعرضها ودقة مدخلاتها معاً بنسب متوازنة، كما في EfficientNet.
الوصلة المتبقية Residual Connection
مسار يضيف مدخل الكتلة إلى مخرجها مباشرة (y = F(x) + x)، فيسهل تدفق التدرج وتدريب الشبكات العميقة جداً.

الملخص

تطورت معماريات CNN عبر أفكار رئيسة: LeNet أثبتت الفكرة على الأرقام، وAlexNet (2012) استخدمت ReLU وDropout وGPU فتفوقت في ImageNet، وVGG بينت قوة المرشحات الصغيرة 3×3 المتراكمة، وInception استخدمت مرشحات متوازية بأحجام مختلفة، وResNet أدخلت الوصلات المتبقية فسمحت بشبكات عميقة جداً، وEfficientNet وازنت بين العمق والعرض والدقة. تتوفر جميعها مدربة مسبقاً في torchvision.

أسئلة مراجعة

  1. لماذا يكافئ مرشحان 3×3 متتاليان مرشحاً 5×5؟

    لهما المجال الاستقبالي نفسه (5×5) لكن بمعاملات أقل ولاخطية إضافية بينهما.

  2. ما المشكلة التي عالجتها ResNet؟

    صعوبة تدريب الشبكات العميقة جداً، إذ كان الأداء يتدهور مع زيادة العمق حتى على بيانات التدريب.

المصادر والمراجع

  1. Krizhevsky, Sutskever & Hinton (2017) ImageNet classification with deep convolutional neural networks — Communications of the ACM
  2. Simonyan & Zisserman (2014) Very Deep Convolutional Networks (VGG) — arXiv
  3. Szegedy et al. (2014) Going Deeper with Convolutions — arXiv
  4. He et al. (2015) Deep Residual Learning for Image Recognition — arXiv
  5. Tan & Le (2019) EfficientNet — arXiv

إكمال الدرس