ResNet، Xception و SENet | EfficientNet و معماری‌های مدرن CNN

ResNet، Xception، SENet و معماری‌های Efficient CNN

توسط admin | گروه هوش مصنوعی | 1405/06/01

نظرات 0

ResNet، Xception، SENet و معماری‌های Efficient CNN

کتاب
Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow
بخش منبع
Residual Learning; ResNet; Xception; Depthwise Separable Convolution; SENet; ResNeXt; DenseNet; MobileNet; CSPNet; EfficientNet
صفحات این PDF
104-111
صفحات چاپی کتاب
506-513
جایگاه در مجموعه
بخش ۵۷ از مجموعهٔ Machine_Learning_405_06؛ مادر: Machine_Learning_405_06_01.html

ResNet و Residual Learning

ایدهٔ ResNet این است که به‌جای مجبور کردن چند Layer برای یادگیری مستقیم تابع H(x)، آن‌ها Residual یعنی F(x)=H(x)-x را بیاموزند و Output نهایی F(x)+x باشد. اگر بهترین رفتار برای یک Block نزدیک Identity باشد، کافی است Layerهای اصلی Residual نزدیک صفر شوند؛ Skip Connection مسیر مستقیم برای عبور Signal و Gradient فراهم می‌کند.

مقایسه یادگیری مستقیم H(x) با یادگیری residual و skip connection
شکل 14-16. Residual Learning

وقتی Skip Connectionهای متعدد در شبکه وجود دارند، حتی اگر بعضی Layerها هنوز چیز مفیدی نیاموخته باشند، اطلاعات می‌تواند از مسیر کوتاه‌تر عبور کند. این ویژگی Training شبکه‌های بسیار عمیق را عملی کرد.

تفاوت مسیر سیگنال در DNN معمولی و ResNet
شکل 14-17. شبکهٔ عمیق معمولی و شبکهٔ Residual

ResNet-34 با یک Convolution ابتدایی و Max Pooling شروع می‌شود، سپس چند گروه Residual Unit دارد. در هر گروه Spatial Size کاهش و Depth Feature Mapها افزایش می‌یابد. پایان شبکه Global Average Pooling و Dense Softmax است.

بلوک‌های Residual در معماری ResNet
شکل 14-18. معماری ResNet

اگر Shape Input و Output Residual Unit برابر نباشد، Skip Connection نمی‌تواند مستقیم جمع شود. در این حالت از 1×1 Convolution با Stride مناسب روی مسیر Skip استفاده می‌شود تا هم Spatial Size و هم تعداد Channelها Match شوند.

استفاده از convolution یک در یک در مسیر skip برای تطبیق shape
شکل 14-19. Skip Connection هنگام تغییر Size و Depth

نسخه‌های عمیق‌تر مانند ResNet-50/101/152 از Bottleneck Block استفاده می‌کنند: 1×1 برای کاهش Depth، 3×3 برای Spatial Feature و 1×1 برای افزایش دوبارهٔ Depth. این طراحی Compute را کنترل می‌کند.

Xception و Depthwise Separable Convolution

Xception ایدهٔ Inception را به افراط می‌برد: Spatial Pattern و Cross-Channel Pattern را تا حد زیادی جدا می‌کند. Depthwise Separable Convolution دو Step دارد:

  1. Depthwise Convolution: برای هر Input Channel یک Spatial Filter مستقل اعمال می‌شود؛
  2. Pointwise 1×1 Convolution: Output Channelها با هم ترکیب می‌شوند.
تفکیک spatial-only filter و pointwise channel mixing در Xception
شکل 14-20. Depthwise Separable Convolution

این Factorization نسبت به Convolution معمولی Parameter و Compute بسیار کمتری دارد و در بسیاری از Architectureهای Efficient استفاده می‌شود.

SENet و Recalibration کانال‌ها

Squeeze-and-Excitation Network یا SENet برندهٔ ILSVRC 2017 شد. ایدهٔ آن افزودن یک SE Block به Moduleهای موجود است تا Network یاد بگیرد کدام Feature Mapها برای Input فعلی مهم‌ترند. این Block می‌تواند به Inception یا ResNet اضافه شود.

افزودن SE Block به Inception Module و Residual Unit
شکل 14-21. SE-Inception و SE-ResNet

ابتدا هر Feature Map با Global Average Pooling به یک Scalar خلاصه می‌شود (Squeeze). سپس یک MLP کوچک Vector اهمیت Channelها را می‌سازد (Excitation) و هر Feature Map در Weight متناظر ضرب می‌شود.

وزن‌دهی کانال‌ها با بردار اهمیت در Squeeze-and-Excitation
شکل 14-22. Recalibration Feature Mapها با SE Block
Global Average Pooling و Denseهای ReLU/Sigmoid برای excitation
شکل 14-23. معماری SE Block

Output نهایی Recalibrated Feature Mapهاست. Sigmoid معمولاً Weight هر Channel را بین صفر و یک قرار می‌دهد. این Mechanism هزینهٔ نسبتاً کمی دارد ولی می‌تواند Accuracy را بهبود دهد.

Architectureهای مهم دیگر

ResNeXt

ResNeXt Residual Unit را با چند Branch موازی مشابه گسترش می‌دهد. تعداد Branchها را Cardinality می‌نامند. افزایش Cardinality می‌تواند نسبت به صرفاً افزایش Depth یا Width بازده بهتری داشته باشد.

DenseNet

در DenseNet هر Layer Output خود را به‌عنوان Input به بسیاری از Layerهای بعدی Concatenate می‌کند. این اتصال‌های Dense جریان Gradient و Reuse شدن Feature را تقویت می‌کنند، اما Memory Management پیچیده‌تر می‌شود.

MobileNet

MobileNet برای Deviceهای محدود طراحی شده و با Depthwise Separable Convolution و Hyperparameterهایی برای کنترل Width/Resolution، Model سبک و سریع می‌سازد.

CSPNet

Cross Stage Partial Network Feature Mapها را به مسیرهای جدا تقسیم و بعد ترکیب می‌کند تا Compute تکراری و Memory Cost کاهش یابد. ایده‌های CSP در Modelهای Object Detection نیز استفاده شده‌اند.

EfficientNet

EfficientNet به‌جای Scale کردن فقط Depth، Width یا Input Resolution، هر سه را با یک Compound Scaling هماهنگ افزایش می‌دهد. ابتدا یک Architecture پایه با Neural Architecture Search پیدا شد و سپس Family مدل‌ها با Scaleهای مختلف ساخته شدند. نتیجه، Accuracy بالا با Parameter/Compute نسبتاً کم است.

در انتخاب Architecture باید فقط Top-1/Top-5 Accuracy را نبینید؛ تعداد Parameter، Model Size، Latency روی CPU/GPU/Accelerator، Memory، Throughput و Target Device نیز تعیین‌کننده‌اند. بخش بعد Modelهای Pretrained Keras و روش عملی Transfer Learning را بررسی می‌کند.

امتیاز کاربران به این مقاله

☆☆☆☆☆

0 نفر امتیاز داده اند. میانگین: 0.0 از 5

 

0 نظر

نظر محترم شما در مورد مقاله های وب سایت برنامه نویسی و پایگاه داده

نظرات محترم شما در خدمات رسانی بهتر ما را یاری می نمایند. لطفا اگر مایل بودید یک نظر ما را مهمان فرمائید. آدرس ایمیل و وب سایت شما نمایش داده نخواهد شد.

0 / 500

اطلاعات تماس

  • آدرس:اصفهان-خیابان ام کلثوم غربی - بعد خیابان تخم چی - بیست متر بعد از پیتزا ننه شب - کوچه تعمیر گاه سمار زغالی - پلاک 354 - درب مشکی - طبقه هفتم
  • آدرس ایمیل:najafzade@gmail.com
  • وب سایت:http://www.a00b.com/
  • تلفن ثابت:(+98)9131253620
  • تلفن همراه:09131253620