شبکه عصبی ResNet نوعی معماری شبکههای عصبی کانولوشنی است که مشکل ناپدید شدن گرادیان را کاهش میدهد و امکان آموزش شبکههای بسیار عمیق را فراهم میکند. شبکههای عصبی عمیق امروزه بهعنوان قلب بسیاری از پیشرفتهای هوش مصنوعی شناخته میشوند. با این حال، هرچه این شبکهها عمیقتر شدند، مشکلاتی در آموزش آنها به وجود آمد. یکی از مهمترین این مشکلات، «ناپدید شدن گرادیان» (Vanishing Gradient) است که مانع یادگیری در لایههای ابتدایی میشود. برای غلبه بر این چالش، معماری انقلابی شبکه عصبی ResNet معرفی شد. در این مطلب از مجله فرادرس بهصورت گامبهگام مفاهیم اصلی ResNet را بررسی میکنیم، ایده پشت طراحی آن را توضیح میدهیم، ساختار بلوکهای باقیمانده را تحلیل میکنیم و در نهایت یک پیادهسازی عملی از ResNet-50 را با استفاده از PyTorch انجام میدهیم.
آنچه در این مطلب میآموزید:
-
با معماری و اجزای اصلی شبکه عصبی ResNet آشنا میشوید.
-
دلیل معرفی ResNet و نحوه حل مشکل ناپدید شدن گرادیان را یاد میگیرید.
-
تفاوت نسخههای مختلف ResNet مانند ResNet-18، ResNet-50 و ResNet-152 را میشناسید.
-
با نحوه پیادهسازی ResNet-50 در PyTorch آشنا میشوید.
-
کاربردهای شبکه عصبی ResNet در حوزههایی مانند پزشکی، خودروهای خودران و تشخیص چهره را متوجه میشوید.
-
با معماریهای بهبود یافته ResNet مانند ResNeXt و SE-ResNet آشنا میشوید.

شبکه عصبی ResNet چیست؟
ResNet به دلیل طراحی هوشمندانهاش توانست به یکی از معماریهای کلیدی در یادگیری عمیق تبدیل شود. این شبکه با ایده ساده اما مؤثر «یادگیری باقیمانده» امکان ساخت مدلهایی با صدها لایه را فراهم کرد، بدون اینکه با مشکلات رایج شبکههای عصبی عمیق مواجه شوند. شبکههای استاندارد کانولوشنی مثل LeNet، AlexNet و VGG برای تشخیص تصویر بهخوبی کار میکردند، اما وقتی عمق آنها افزایش یافت، آموزش دیگر بهدرستی انجام نمیشد. در شبکههای خیلی عمیق، گرادیانهایی که از انتهای شبکه به لایههای ابتدایی میرسند سرکوب میشوند و باعث میشوند آن لایهها بهاصطلاح «بیحرکت» شوند.
ResNet با ارائه معماری متفاوت، به مدل اجازه میدهد تا بهجای یادگیری مستقیم ، مدل دو تابع را یاد بگیرد:
- یک تابع اصلی
- و یک اتصال مستقیم
الگوی کلی اینگونه است:
این مفهوم ساده، اما قدرتمند باعث شد مدلهایی مانند Resnet-50 با ۵۰ لایه، عملکردی بهتر از مدلهای قبلی با عمق کمتر نشان دهند و امروزه در بسیاری از کاربردها (از تشخیص تصویر تا تشخیص گفتار) استفاده میشوند. معماری که با استفاده از «اتصالات پرشی» (Skip Connections) توانست آموزش شبکههای بسیار عمیق را ممکن کند و مسیر توسعه مدلهای قدرتمندتر را هموار سازد.
تحلیل عمیق اتصالات پرشی و حل مشکل ناپدید شدن گرادیان
یکی از مهمترین نوآوریهای ResNet، اضافه کردن «اتصالات پرشی» (Skip Connections) است. اما چرا این اتصالات تا این حد مهم هستند؟ برای درک بهتر، ابتدا باید مشکل اصلی شبکههای بسیار عمیق را یعنی «ناپدید شدن گرادیان» (vanishing gradient) درک کنیم.
مشکل ناپدید شدن گرادیان چیست؟
وقتی شبکه بسیار عمیق باشد، در «مرحله پسانتشار» (Backpropagation)، گرادیانها باید لایهبهلایه به عقب منتقل شوند. اگر وزنهای لایهها کوچک باشند (کمتر از ۱)، ضرب مکرر این مقادیر باعث میشود گرادیانها بهتدریج کوچک و کوچکتر شوند، تا جایی که تقریباً صفر میشوند. در نتیجه موارد زیر روی میدهند:
- لایههای ابتدایی شبکه آموزش نمیبینند.
- مدل با وجود عمیق بودن، دقت پایینی پیدا میکند.

راهحل شبکه عصبی ResNet
ResNet بهجای یادگیری مستقیم تابع یادگیری را بهصورت زیر تعریف میکند:
در این حالت، مدل بهجای یادگیری کل نگاشت، فقط بین ورودی و خروجی را یاد میگیرد (Residual Mapping). این کار دو مزیت مهم دارد:
- اگر بهترین خروجی همان ورودی باشد (یعنی تغییری نیاز نیست)، مدل بهسادگی میتواند یاد بگیرد.
- گرادیان میتواند از مسیر مستقیماً عبور کند، بدون اینکه ضعیف شود.
چرا این کار گرادیان را حفظ میکند؟
فرض کنید گرادیان خروجی باشد. در ResNet، چون:
گرادیان نسبت به x
بهشکل زیر محاسبه میشود:
این عبارت نشان میدهد حتی اگر خیلی کوچک شود، بهخاطر وجود عدد ۱، گرادیان هیچوقت صفر نخواهد شد. این دقیقاً دلیل اصلی موفقیت ResNet است.
مثال ساده برای درک بهتر
فرض کنید میخواهید یک شبکه عمیق ۵۰ لایه آموزش دهید. در شبکههای قدیمی، اگر لایه اول وزنهای کوچکی داشته باشد، گرادیان پس از ۵۰ مرحله ضرب، تقریباً به صفر میرسد. اما در شبکه عصبی ResNet، به لطف اتصال پرشی، بخشی از گرادیان بدون تغییر عبور میکند.

ساختار بلوک باقیمانده
یکی از نوآوریهای اصلی ResNet، معرفی ساختار «بلوک باقیمانده» (Residual block) بود. در شبکههای عصبی عمیق معمولی، با افزایش تعداد لایهها، گرادیان در طول فرآیند آموزش بهتدریج ضعیف میشود و این موضوع باعث میشود لایههای ابتدایی شبکه بهخوبی یاد نگیرند. طراحان ResNet برای حل این مشکل، مسیرهای میانبری به شبکه اضافه کردند تا اطلاعات بتوانند بدون تغییر از چندین لایه عبور کنند. این ایده ساده اما تأثیرگذار، پایه و اساس بلوکهای باقیمانده است.
تعریف و ایده اصلی بلوک باقیمانده
یک بلوک باقیمانده ساده معمولاً شامل موارد زیر است:
- یک یا چند لایه کانولوشن
- تابع فعالسازی (مثل تابع ReLU)
- «اتصال بدون وزن» (identity shortcut) که مستقیماً ورودی
x
را به انتهای بلوک اضافه میکند
این ساختار کمک میکند که گرادیان در جریان پشتانتشار راحتتر عبور کند.
پیادهسازی یک بلوک باقیمانده با PyTorch
یکی از بهترین راهها برای درک دقیق معماری ResNet، پیادهسازی دستی بخشهای کلیدی آن است. در اینجا، ما روی مهمترین جزء این شبکه یعنی بلوک باقیمانده تمرکز میکنیم. با ساخت این بلوک بهصورت کد، بهتر متوجه میشویم که اتصال پرشی چگونه در عمل پیادهسازی میشود، چگونه دادهها از مسیر میانبر عبور میکنند و چه تاثیری روی یادگیری مدل دارند.
در ادامه با استفاده از کتابخانه PyTorch، یک بلوک باقیمانده ساده میسازیم که میتواند بهعنوان واحد پایهای در معماری ResNet بهکار گرفته شود. این پیادهسازی نهتنها به فهم عمیقتری از سازوکار داخلی شبکه کمک میکند، بلکه برای طراحی معماریهای سفارشی یا اصلاح نسخههای موجود نیز کاربردی است.
در کد بالا به موارد زیر توجه کنید:
conv1
وconv2
: عملیات کانولوشنbn1
وbn2
: نرمالسازی برای پایدارسازی آموزشdownsample
: برای تنظیم ابعاد ورودی/خروجی در صورت نیاز- در تابع
forward
خروجی اصلی با ورودی اصلی جمع میشود.

معماری کلی شبکه عصبی ResNet
برای درک بهتر ResNet، باید نگاهی به ساختار کلی آن بیندازیم. معماری ResNet از یک الگوی تکرارشونده تشکیل شده است که در آن بلوکهای باقیمانده بهطور متوالی چیده میشوند. هر بلوک، مجموعهای از لایههای کانولوشن است که به آن یک اتصال پرشی اضافه شده است تا ورودی اولیه مستقیماً به انتهای بلوک افزوده شود.
این اتصال ساده اما انقلابی باعث میشود که شبکه بتواند ویژگیهای ساده و پایهای را در لایههای ابتدایی یاد بگیرد و بهجای پاک شدن آنها در لایههای عمیقتر، آن ویژگیها مستقیماً به خروجی منتقل شوند. به بیان سادهتر، ResNet یاد میگیرد که چه چیزی را تغییر دهد، نه اینکه همه چیز را از نو بسازد. در نسخههای مختلف ResNet، تنها تفاوت در تعداد بلوکها و نوع آنها است. بهطور مثال موارد زیر را در نظر بگیرید:
- ResNet-18 و ResNet-34 از بلوکهای ساده استفاده میکنند.
- ResNet-50، ResNet-101 و ResNet-152 از Bottleneck Block بهره میبرند که ساختار پیشرفتهتری دارد.
بلاک Bottleneck چیست؟
در شبکههای بسیار عمیق مانند ResNet-50 و ResNet-101، استفاده از بلوکهای ساده باعث افزایش بسیار زیاد پارامترها میشود و از طرفی زمان آموزش و نیاز به حافظه بالا میرود. برای حل این مشکل، معماری ResNet از یک طراحی بهینهتر بهنام Bottleneck Block استفاده میکند. ساختار این بلوک بهجای دو لایه کانولوشن، شامل سه لایه کانولوشن است که هدفشان فشردهسازی و سپس بازیابی ویژگیهاست:
- کانولوشن ۱×۱ (فشرده سازی): کاهش تعداد کانالها (ویژگیها)
- کانولوشن ۳×۳ (پردازش): عملیات اصلی استخراج ویژگی
- کانولوشن ۱×۱ (بازسازی): بازگردانی تعداد کانالها به حالت اولیه
این طراحی نقش پررنگی در بهبود موارد زیر دارد:
- محاسبات کاهش یابد.
- پارامترها کمتر شوند.
- اما قدرت شبکه حفظ شود.
در کنار این لایهها، مانند قبل یک «اتصال میانبر» (shortcut connections) وجود دارد که داده ورودی را به خروجی نهایی اضافه میکند. این اتصال باعث انتقال راحتتر گرادیان و یادگیری بهتر میشود.

پیادهسازی Bottleneck Block در PyTorch
در اینجا پیادهسازی ساده از Bottleneck Block را با فریمورک PyTorch مشاهده میکنید. این ساختار همان چیزی است که در ResNet-50 و مدلهای عمیقتر استفاده میشود:
همانطور که مشاهده میکنید:
conv1
: کانالها را کاهش میدهد (Compression)conv2
: ویژگیها را پردازش میکندconv3
: کانالها را به وضعیت اولیه باز میگرداند (Expansion)downsample
: در صورت تفاوت ابعاد بین ورودی و خروجی، آنها را یکسان میکند تا جمع پذیر باشند
در نهایت خروجی از هر سه لایه، با ورودی اصلی جمع شده و سپس از تابع فعالسازی ReLU عبور داده میشود.
در مطلب زیر از مجله فرادرس، به طور کامل در مورد تابع فعالسازی ReLU در شبکههای عصبی توضیح داده شده است.
یادگیری بیشتر در مسیر شبکههای عصبی عمیق
اگر تمایل دارید درک عمیقتری از شبکههای عصبی و معماریهایی مانند ResNet پیدا کنید، میتوانید از آموزشهای ساختارمند و پروژهمحور استفاده کنید تا مفاهیم را در عمل تجربه کنید. در مجموعههای آموزشی فرادرس، موضوعاتی مانند طراحی و پیادهسازی شبکههای عصبی با PyTorch، بهینهسازی مدلها و آموزش بر روی دیتاستهای واقعی بهصورت گامبهگام آموزش داده میشوند. این دورهها برای افرادی که میخواهند دانش تئوری خود را وارد مرحله عملی کنند بسیار مناسب هستند.

برای دسترسی به آموزشهای بیشتر نیز پیشنهاد میکنیم به صفحات زیر مراجعه کنید:
ساختار کامل ResNet-50
مدل ResNet-50 یکی از محبوبترین نسخههای خانواده ResNet است که در بسیاری از پروژههای بینایی ماشین، تشخیص تصویر، و طبقهبندی بهکار گرفته میشود. این مدل دارای ۵۰ لایه قابل آموزش است و از ساختار Bottleneck Block برای بهینهسازی کارایی و کاهش پیچیدگی محاسباتی استفاده میکند.
معماری ResNet-50 به صورت چند مرحلهای ساخته شده و هر مرحله شامل چندین Bottleneck Block متوالی است. لایهها به ترتیب از ورودی تصویر تا خروجی طبقهبندی مرتب شدهاند. بیایید گامبهگام این معماری را بررسی کنیم.
مرحله اول: لایههای آغازین
ورودی تصویر (مثلاً با اندازه ۲۲۴x۲۲۴x۳) ابتدا از یک لایه کانولوشن با کرنل بزرگ عبور میکند:
Conv2d
با کرنل به ابعاد ۷×۷ و stride=۲BatchNorm
برای نرمالسازیReLU
برای فعالسازیMaxPooling
با کرنل به ابعاد ۷×۷ برای کاهش ابعاد
در این مرحله اندازه تصویر ایجادشده از ۲۲۴×۲۲۴ به اندازه ۱۱۲×۱۱۲ کاهش پیدا میکند.
مرحله دوم
در این مرحله ۳ عدد Bottleneck Block با تعداد کانال ثابت (۶۴ کانال پایه) استفاده میشود. این بخش ساختار زیر را دارد:
- ۳ عدد Bottleneck Block
- هر بلاک دارای: (۱×۱→۳×۳→۱×۱)
- ابعاد: (۶۴ →۶۴ →۲۵۶) (در مجموع)
در این مرحله، ابعاد خروجی برابر با ۵۶×۵۶×۲۵۶ خواهد بود.
مرحله سوم
در این بخش ۴ Bottleneck Block با کانالهای افزایش یافته اعمال میشوند:
- تعداد بلاکها: ۴
- تعداد کانال پایه: ۱۲۸
- خروجی نهایی هر کانال: ۵۱۲
در این مرحله، اندازه تصویر نیز نصف میشود و به ۲۸x۲۸x۵۱۲ میرسد.
مرحله چهارم
در این مرحله، پیچیدگی مدل بیشتر میشود. ساختار به شکل زیر است:
- تعداد Bottleneck Block: ۶
- تعداد کانال پایه: ۲۵۶
- خروجی هر کانال: ۱۰۲۴
ابعاد تصویر همزمان کاهش مییابد و به ۱۴x۱۴x۱۰۲۴ میرسد.
مرحله پنجم
این مرحله شامل ۳ Bottleneck Block با کانالهای بسیار بالا است:
- تعداد بلوک: ۳
- کانال پایه: ۵۱۲
- خروجی نهایی هر کانال: ۲۰۴۸
در این نقطه، ابعاد به ۷x۷x۲۰۴۸ میرسد — یعنی نگاشت ویژگی بسیار فشرده اما عمیق میشود.
مرحله نهایی: طبقهبندی
خروجی نهایی از یک عملیات Average Pooling
عبور میکند تا ابعادش به ۱x۱ کاهش یابد. سپس از یک شبکه عصبی با لایههای کامل برای پیشبینی کلاس نهایی استفاده میشود.
در صورت استفاده از دیتاست ImageNet، این لایه خروجی ۱۰۰۰ نورون خواهد داشت (برای ۱۰۰۰ کلاس). در کاربردهای دیگر، این عدد بسته به نیاز قابل تغییر است.

مهمترین دلایل محبوبیت ResNet-50
دلایل اصلی محبوبیت ResNet-50 در دنیای یادگیری عمیق عبارتاند از:
- عمق زیاد (۵۰ لایه) بدون کاهش دقت یا overfitting
- استفاده از اتصال پرشی برای حفظ گرادیان و آموزش آسانتر
- ساختار bottleneck برای کاهش تعداد پارامترها
- عملکرد عالی روی دیتاستهای بزرگ مثل ImageNet
- پیادهسازی آسان در PyTorch و TensorFlow
در واقع، ResNet-50 نقطه تعادل بین قدرت مدل و هزینه محاسباتی است.
کاربردهای عملی شبکه عصبی ResNet در دنیای واقعی
یکی از دلایل اصلی موفقیت شبکههای ResNet، توانایی فوقالعاده آنها در استخراج ویژگیهای عمیق و قدرتمند از تصاویر است. این ویژگی باعث شده ResNet نهتنها در مسائل تحقیقاتی، بلکه در پروژههای واقعی صنعتی و تجاری نیز بهطور گسترده استفاده شود. برخی از کاربردهای شبکه عصبی ResNet عبارتاند از:
- طبقهبندی تصاویر
- تشخیص اشیا
- پزشکی و تحلیل تصاویر
- سیستمهای امنیتی و تشخیص چهره
- خودروهای خودران
در ادامه، به شرح برخی از مهمترین کاربردهای عملی ResNet در دنیای واقعی میپردازیم.

۱. طبقهبندی تصویر
یکی از اولین و مهمترین کاربردهای شبکه عصبی ResNet، طبقهبندی تصویر است. بهعنوان مثال، ResNet-50 بهطور گسترده در مسابقات معتبر مثل ImageNet استفاده شده و همچنان یکی از بهترین مدلها برای شناسایی اشیاء در تصاویر است.
امروزه بسیاری از سیستمهای تشخیص تصویر (مثلاً دستهبندی محصولات در فروشگاههای آنلاین یا شناسایی حیوانات در تصاویر) از ResNet بهعنوان «مدل پایه» (Backbone) استفاده میکنند.

۲. تشخیص اشیاء
ResNet بهعنوان بخش اصلی (Feature Extractor) در بسیاری از مدلهای تشخیص شیء مدرن مثل Faster R-CNN، Mask R-CNN و YOLO استفاده میشود. دلیل این انتخاب، توانایی بالای ResNet در استخراج ویژگیهای پیچیده از تصاویر است.
مثال: در سیستمهای دوربینهای هوشمند، خودروهای خودران، و پهپادهای مجهز به هوش مصنوعی، ResNet در قلب الگوریتمهای تشخیص اشیاء قرار دارد.
۳. پزشکی و تحلیل تصاویر
ResNet در حوزه پزشکی انقلابی ایجاد کرده است. از جمله کاربردهای آن میتوان به موارد زیر اشاره کرد:
- تشخیص بیماری از روی تصاویر X-ray یا MRI
- شناسایی تومورهای سرطانی در مراحل اولیه
- تحلیل تصاویر بافتهای بیولوژیکی
تحقیقات نشان دادهاند که مدلهای مبتنی بر ResNet در بسیاری از موارد میتوانند عملکردی حتی بهتر از پزشکان انسانی در شناسایی الگوهای پیچیده داشته باشند.
۴. سیستمهای امنیتی و تشخیص چهره
بسیاری از سیستمهای «تشخیص چهره» (Face Recognition) در دنیا از ResNet بهعنوان معماری پایه استفاده میکنند. به دلیل توانایی بالا در استخراج ویژگیهای چهره، ResNet میتواند افراد را حتی در شرایط نوری مختلف یا زوایای متفاوت شناسایی کند.
این فناوری در مواردی مثل احراز هویت مبتنی بر چهره، امنیت موبایلها، یا سیستمهای نظارت شهری به کار میرود.
۵. خودروهای خودران
خودروهای خودران برای شناسایی عابران، علائم راهنمایی، خودروهای دیگر و موانع از شبکههای عصبی استفاده میکنند. شبکه عصبی ResNet بهعنوان یک شبکه سبک اما قدرتمند، اغلب در ماژولهای بینایی این خودروها استفاده میشود.
مثلاً تسلا در برخی از مدلهای خود از معماریهایی استفاده کرده که بخشهایی مشابه ResNet دارند.
۶. ترکیب شبکه عصبی ResNet با سایر مدلها
ResNet به دلیل طراحی ماژولار خود، بهراحتی میتواند با سایر معماریها ترکیب شود:
- ترکیب ResNet با شبکههای RNN برای تحلیل ویدیوها
- استفاده از ResNet بهعنوان ورودی مدلهای Transformer (مثل ViT)
- بهکارگیری ResNet در GANها برای تولید تصاویر واقعیتر

چرا شبکه عصبی ResNet هنوز هم محبوب است؟
با وجود معرفی معماریهای جدیدتر مثل EfficientNet یا Vision Transformer، ResNet همچنان انتخاب محبوبی است، چون:
- سادگی در طراحی و پیادهسازی
- پشتیبانی گسترده در کتابخانههایی مثل PyTorch و TensorFlow
- امکان استفاده در بسیاری از وظایف یادگیری عمیق (classification, detection, segmentation)
- تعادل عالی بین دقت، سرعت و تعداد پارامترها
بررسی نسخههای مختلف ResNet
خانواده شبکه عصبی ResNet شامل چندین نسخه مختلف است که در تعداد لایهها، پیچیدگی، دقت و کاربردها با هم تفاوت دارند. این نسخهها با اعدادی مثل ۱۸، ۳۴، ۵۰، ۱۰۱ و ۱۵۲ نامگذاری شدهاند. این عدد بیانگر تعداد کل لایههای شبکه است.
هر نسخه برای کاربرد خاصی مناسب است. برای مثال، نسخههای سبکتر برای دستگاههای موبایل یا سیستمهای کمقدرت مناسباند، در حالی که نسخههای عمیقتر برای پروژههای بزرگ و با دقت بالا استفاده میشوند.
۱. ResNet-18
این نسخه سبکترین عضو خانواده ResNet است و تنها ۱۸ لایه دارد. به دلیل سادگی و تعداد پارامترهای کم، آموزش آن سریع است و برای کارهای سبک یا دادههای کوچک استفاده میشود.
- مناسب برای آموزش از صفر روی دیتاستهای کوچک
- سرعت بالا و مصرف حافظه پایین
- معایب: دقت کمتر نسبت به نسخههای عمیقتر
۲. ResNet-34
نسخه ResNet-34 کمی عمیقتر از ResNet-18 است و دقت بهتری دارد. این نسخه معمولاً برای پروژههای متوسط یا زمانی که سختافزار محدودی داریم استفاده میشود.
- دقت بالاتر نسبت به ResNet-18
- همچنان سبک و سریع
- معایب: عملکرد ضعیفتر نسبت به ResNet-50 در وظایف پیچیده
۳. ResNet-50
این نسخه یکی از محبوبترین معماریهای ResNet است. از بلوکهای Bottleneck استفاده میکند تا عمق بیشتری داشته باشد، بدون آنکه تعداد پارامترها به شدت افزایش یابد.
- تعادل عالی بین دقت و سرعت
- بسیار مناسب برای Transfer Learning
- معایب: استفاده گسترده در تحقیقات و کاربردهای صنعتی
۴. ResNet-101
ResNet-101 نسخه عمیقتر ResNet-50 است که تعداد بلوکهای بیشتری دارد. این نسخه برای مسائل پیچیدهتر و دیتاستهای بزرگتر مناسب است.
- دقت بالاتر بهویژه در شناسایی ویژگیهای پیچیده
- معایب: سنگینتر و نیازمند سختافزار قویتر
۵. ResNet-152
این نسخه عمیقترین عضو خانواده اصلی ResNet است. با ۱۵۲ لایه، توانایی فوقالعادهای در استخراج ویژگیها دارد، اما بسیار سنگین است و آموزش آن به منابع زیادی نیاز دارد.
- بیشترین دقت بین نسخههای استاندارد
- معایب: مصرف بسیار زیاد منابع سختافزاری و سرعت آموزش پایین

جدول مقایسه نسخههای مختلف شبکه عصبی ResNet
در این مطلب به مقایسه نسخههای مختلف ResNet، تعداد لایهها و پارامترها، نوع بلوک و کاربرد هر کدام از آنها پرداخته میشود. مطابق با جدول زیر شبکه ResNet-50 برای کاربردهای عمومی و شبکههای با لایههای بیشتر برای پروژههای پیچیده با حجم داده بالا مناسب هستند.
تست
نسخه و تعداد لایه | نوع بلوک | تعداد پارامترها |
ResNet-18 | Basic Block | ~11M |
ResNet-34 | Basic Block | ~21M |
ResNet-50 | Bottleneck Block | ~25M |
ResNet-101 | Bottleneck Block | ~44M |
ResNet-152 | Bottleneck Block | ~60M |
نکات کلیدی برای انتخاب نسخه مناسب
در هنگام انتخاب نسخه مناسب از معماری ResNet، باید بین نیازهای پروژه و منابع سختافزاری خود تعادل برقرار کنید. هر نسخه از این معماری ویژگیها و نقاط قوت خاص خود را دارد که میتواند بسته به شرایط، کارایی مدل را بهطور چشمگیری بهبود دهد. در ادامه به مهمترین نکات برای انتخاب نسخه مناسب اشاره میکنیم:
- اگر سختافزار ضعیفی دارید یا پروژهتان سبک است، ResNet-18 یا ResNet-34 را انتخاب کنید.
- اگر به تعادل بین دقت و سرعت نیاز دارید، ResNet-50 بهترین گزینه است.
- برای پروژههای تحقیقاتی یا کاربردهای پیشرفته، ResNet-101 و ResNet-152 انتخابهای مناسبی هستند.

نسخههای بهبودیافته معماری شبکه عصبی ResNet
معرفی ResNet در سال ۲۰۱۵ نقطه عطفی در یادگیری عمیق بود. اما پژوهشگران به این نتیجه رسیدند که میتوان با تغییرات جزئی و ایدههای نوآورانه، عملکرد این شبکه را حتی بهتر هم کرد. نتیجه این تلاشها، نسخههای پیشرفتهتری از ResNet است که هر کدام مزایا و ویژگیهای خاصی دارند. در این بخش، مهمترین نسخههای بهبود یافته ResNet را معرفی میکنیم، دلیل ایجاد هر کدام را توضیح میدهیم و به کاربردهای عملی آنها میپردازیم.
۱. ResNeXt بهمنظور افزایش ظرفیت شبکه بدون افزایش زیاد پارامترها
ResNeXt در سال ۲۰۱۷ توسط محققان فیسبوک معرفی شد. ایده اصلی این معماری، افزودن مفهوم Cardinality یا «تعداد مسیرهای موازی» به بلوکهای ResNet است. در ResNet، هر بلوک تنها یک مسیر برای عبور دادهها دارد. اما در ResNeXt، هر بلوک به چندین شاخه تقسیم میشود که همگی بهطور موازی پردازش انجام میدهند و سپس نتایج با هم ترکیب میشوند.
این کار باعث میشود شبکه ویژگیهای متنوعتری یاد بگیرد، بدون آنکه تعداد پارامترها بهطور غیرقابل کنترل افزایش یابد. از نظر ریاضی، این شبیه به داشتن چندین فیلتر متفاوت برای استخراج ویژگیهای مختلف است. در فهرست زیر مزیتها و کاربردهای این نسخه را آوردهایم:
- مزیت: دقت بیشتر نسبت به ResNet در شرایطی که تعداد پارامترها تقریباً ثابت است.
- کاربرد: مدلهای تشخیص اشیاء، طبقهبندی تصویر، و وظایفی که به ویژگیهای متنوع نیاز دارند.
۲. SE-ResNet و تاثیر استفاده از توجه (Attention) برای بهبود استخراج ویژگیها
SE-ResNet که در سال ۲۰۱۸ معرفی شد، ماژول جدیدی به نام Squeeze-and-Excitation به ResNet اضافه کرد. این ماژول یاد میگیرد کدام کانالهای ویژگی مهمتر هستند و وزن بیشتری به آنها اختصاص میدهد.
به بیان ساده، این مدل مثل یک فیلتر هوشمند عمل میکند که به بخشهای مهمتر تصویر توجه بیشتری دارد. این موضوع بهویژه در وظایفی مثل شناسایی اشیاء کوچک، تصاویر پزشکی و شرایطی که ویژگیهای کلیدی بهراحتی قابل تشخیص نیستند، بسیار مهم است.
این ایده باعث شد مدل با کمترین افزایش در پارامترها، دقت بسیار بیشتری کسب کند و در بسیاری از رقابتهای بینایی ماشین نتایج قابلتوجهی بهدست آورد.
۳. ResNet-D برای اصلاحات ساختاری کوچک ولی مؤثر
ResNet-D نسخهای است که با اعمال تغییرات جزئی در لایههای کانولوشن اولیه و «مسیرهای پاییننمونهبرداری» (Downsampling) طراحی شده است. این تغییرات کمک میکنند تا اطلاعات بیشتری از تصویر اولیه به لایههای عمیقتر منتقل شوند.
اگرچه تغییرات در ظاهر کوچکاند، اما نتایج نشان دادهاند که این نسخه عملکرد بهتری نسبت به ResNet اصلی دارد، بدون اینکه پیچیدگی زیادی اضافه کند.
۴. ترکیب ResNet با معماریهای Transformer
با ظهور مدلهای Transformer در بینایی کامپیوتری (مانند Vision Transformer یا ViT)، پژوهشگران به ترکیب شبکه عصبی ResNet با این معماریها پرداختند. ایده اصلی این بود که ResNet میتواند ویژگیهای محلی (Local Features) را بهخوبی استخراج کند، در حالی که Transformer در یادگیری «وابستگیهای سراسری» (Global Dependencies) عالی عمل میکند.
در این مدلهای ترکیبی، ResNet معمولاً بهعنوان استخراجکننده ویژگی اولیه استفاده میشود و خروجی آن به یک ماژول Transformer داده میشود که وظیفه تحلیل سراسری تصویر را دارد. این ترکیب در وظایف پیچیده مثل تحلیل ویدئو، تشخیص اشیاء در صحنههای شلوغ، و بینایی کامپیوتری پیشرفته بسیار موفق بوده است.
۵. مقایسه عملکرد نسخههای بهبود یافته شبکه عصبی ResNet
مطالعات مختلف نشان دادهاند که این نسخههای جدید در دیتاستهای بزرگی مثل ImageNet و COCO نتایج بهتری از ResNet استاندارد دارند، در حالی که تعداد پارامترهای آنها تغییر زیادی نکرده است. بهعنوان مثال، SE-ResNet در بسیاری از رقابتها موفق شده دقت Top-1 را تا ۲٪ نسبت به ResNet اصلی افزایش دهد، بدون اینکه اندازه مدل تغییر چشمگیری کند.

جدول مقایسه نسخههای بهبود یافته
با بررسی نسخههای مختلف بهبودیافته ResNet، میتوان دید که هر معماری جدید با هدف رفع یک نقطهضعف خاص یا بهینهسازی بخشی از مدل اصلی طراحی شده است. برخی مانند ResNet-D با بازطراحی در مسیر میانبر، به بهبود جریان گرادیان کمک کردهاند، در حالی که مدلهایی مانند SE-ResNet از «ماژولهای توجه» (Squeeze-and-Excitation) برای افزایش قدرت تمرکز بر ویژگیهای مهم استفاده کردهاند. همچنین ResNeXt ساختار «موازیسازی» (Cardinality) را وارد معماری کرده تا عملکرد بهتری با پیچیدگی محاسباتی مشابه ارائه دهد. این نسخهها معمولاً در پروژههای صنعتی، رقابتهای بینالمللی و پژوهشهای پیشرفته استفاده شدهاند.
مدل | ویژگی کلیدی | کاربرد |
ResNeXt | افزایش Cardinality (شاخههای موازی) | طبقهبندی تصویر، شناسایی اشیاء |
SE-ResNet | افزودن ماژول توجه (Attention) | تشخیص اشیاء کوچک، تصاویر پزشکی |
ResNet-D | اصلاح لایههای کانولوشن اولیه | کاربردهای عمومی یادگیری عمیق |
ResNet + Transformer | ترکیب CNN با ViT | بینایی کامپیوتری پیشرفته، تحلیل ویدئو |
همانطور که در جدول مشاهده میکنید، تفاوتهای کلیدی میان نسخههای بهبودیافته ResNet نهتنها در ساختار بلوکها، بلکه در فلسفه طراحی آنها نیز قابلمشاهده است. بسته به کاربرد، توان سختافزاری و حجم داده، ممکن است یک نسخه خاص مانند SE-ResNet یا ResNet-D انتخاب بهتری باشد. درک این تفاوتها کمک میکند تا هنگام انتخاب معماری برای پروژههای عملی، تصمیم آگاهانهتری بگیرید و تعادل بین دقت، سرعت و پیچیدگی مدل را بهتر مدیریت کنید.
این نسخههای بهبود یافته نشان میدهند که حتی یک معماری موفق مثل ResNet هم میتواند با ایدههای ساده اما خلاقانه ارتقا یابد. در عمل، انتخاب بهترین نسخه بستگی به نیاز پروژه، محدودیتهای سختافزاری و نوع دادههای شما دارد. بهطور خلاصه میتوان در مورد هر نسخه به نتایج زیر دست یافت:
- ResNeXt: بهترین گزینه برای زمانی که به ویژگیهای متنوع و دقت بالاتر نیاز دارید.
- SE-ResNet: ایدهآل برای وظایفی که ویژگیهای مهم تصویر در کانالهای خاصی قرار دارند.
- ResNet-D: نسخه ساده و سبک برای بهبود نسبی عملکرد.
- ResNet + Transformer: مناسب برای پروژههای تحقیقاتی و وظایف پیچیده.
آموزش عملی شبکه ResNet-50 روی دیتاست CIFAR-10 با استفاده از PyTorch
در این بخش، قصد داریم شبکه ResNet-50 را بهصورت عملی روی دیتاست معروف CIFAR-10 آموزش دهیم. این کار به ما کمک میکند درک بهتری از نحوه کار این معماری، نحوه آمادهسازی دادهها، استفاده از «مدلهای از پیش آموزشدیده» (Pretrained Models) و همچنین ارزیابی عملکرد مدل داشته باشیم.

همچنین با مفاهیمی مثل Transfer Learning، پیشپردازش تصویر، حلقه آموزش و ارزیابی مدل آشنا میشویم. این مراحل برای پیادهسازی پروژههای واقعی هوش مصنوعی بسیار کاربردی و مهم هستند.
۱. آشنایی با دیتاست CIFAR-10
CIFAR-10 یک دیتاست کلاسیک و آموزشی در حوزه بینایی ماشین است که شامل ۶۰٬۰۰۰ تصویر رنگی با اندازه ۳۲x۳۲ پیکسل است. این تصاویر در ۱۰ کلاس مختلف دستهبندی شدهاند، از جمله مهمترین آنها میتوان به موارد زیر اشاره کرد:
- هواپیما (airplane)
- اتومبیل (automobile)
- پرنده (bird)
- گربه (cat)
- گوزن (deer)
- سگ (dog)
- قورباغه (frog)
- اسب (horse)
- کشتی (ship)
- کامیون (truck)
هر کلاس شامل ۶٬۰۰۰ تصویر است. این دیتاست برای شروع یادگیری شبکههای عصبی کانولوشنی بسیار مناسب است.
۲. آمادهسازی محیط برنامهنویسی
برای کار با شبکه ResNet-50 از فریمورک قدرتمند PyTorch استفاده میکنیم. ابتدا کتابخانههای مورد نیاز را وارد میکنیم:
در اینجا از کتابخانه torchvision برای کار با دیتاست CIFAR-10 و مدلهای آماده استفاده میکنیم. کتابخانه torch هم ابزارهای پایه PyTorch را فراهم میکند.
۳. پیشپردازش و بارگذاری دادهها
ResNet-50 برای تصاویر با اندازه ۲۲۴×۲۲۴ طراحی شده، در حالی که تصاویر CIFAR-10 فقط ۳۲×۳۲ پیکسل هستند. بنابراین ابتدا باید آنها را بزرگنمایی (Resize) کنیم.
سپس دیتاست را بارگذاری میکنیم:
با استفاده از DataLoader دادهها را به شکل «دستهای» (batch) به مدل میدهیم. این باعث افزایش سرعت آموزش و استفاده بهینه از حافظه میشود.
۴. آمادهسازی مدل ResNet-50 با Transfer Learning
ما از یک مدل ResNet-50 استفاده میکنیم که از قبل روی دیتاست ImageNet آموزش دیده است. این کار را «انتقال یادگیری» (Transfer learning) مینامند. چون بسیاری از ویژگیهای بصری پایه در تصاویر مشترک هستند، این ویژگیها را به مدل جدید انتقال میدهیم.
در اینجا فقط لایه خروجی مدل را تغییر دادهایم تا بهجای ۱۰۰۰ کلاس، فقط ۱۰ کلاس خروجی بدهد.
۵. تنظیم تابع هزینه و بهینهساز
در این مرحله به تنظیم پارامترهای تابع هزینه میپردازیم.
تابع CrossEntropyLoss
برای مسائل طبقهبندی چندکلاسه استفاده میشود. بهینهساز SGD نیز با نرخ یادگیری ۰.۰۰۱ و مومنتوم ۰.۹ در اینجا انتخاب شده تا مدل سریعتر همگرا شود.
۶. آموزش مدل و حلقه یادگیری
در این بخش از حلقههای تکرار برای آموزش مدل استفاده میشود.
در این حلقه نکات زیر قابل بررسی است:
- مدل بهصورت دستهای روی دادهها آموزش میبیند.
- تابع خطا محاسبه میشود.
- وزنها بهروزرسانی میشوند.
در پایان هر دوران، مقدار کل خطا چاپ میشود تا بتوانیم روند یادگیری را بررسی کنیم.
۷. ارزیابی مدل روی دادههای تست
در ادامه بایستی دقت مدل برای دادههای تست بررسی شود.
در اینجا مدل را روی تصاویر دیدهنشده تست میکنیم و دقت نهایی را محاسبه میکنیم. با همین تنظیمات اولیه، انتظار میرود دقتی بین ۸۰٪ تا ۹۰٪ بهدست آید.

مقایسه شبکه عصبی ResNet با سایر معماریهای معروف CNN
در دنیای یادگیری عمیق، معماریهای مختلفی برای «شبکههای عصبی کانولوشنی» (CNN) معرفی شدهاند. هرکدام از این معماریها اهداف خاصی را دنبال میکنند، برخی به دنبال دقت بیشتر هستند، برخی سرعت را اولویت میدهند، و بعضی به دنبال مصرف کمتر حافظهاند. در این بخش، شبکه عصبی ResNet را با معماریهای معروفی مثل DenseNet ،AlexNet،VGG و EfficientNet مقایسه میکنیم تا درک عمیقتری از نقاط قوت و ضعف آن پیدا کنیم.
۱. ResNet در برابر AlexNet
AlexNet یکی از اولین معماریهایی بود که در سال ۲۰۱۲ با موفقیت در رقابت ImageNet برنده شد. این معماری ساده و سبک بود، اما ساختار آن هنوز ابتدایی بهحساب میآید.
- AlexNet: فقط ۸ لایه، بدون skip connection، ساده اما قدرت محدود
- ResNet: تا ۱۵۲ لایه، با skip connection، بسیار عمیقتر و دقت بسیار بالاتر
در واقع ResNet نسخه پیشرفته و مدرنی از ایده AlexNet است که اجازه میدهد شبکه بسیار عمیقتر بشود بدون اینکه عملکرد آن دچار افت شود.

۲. ResNet در برابر VGG
VGG نیز معماریای بود که بعد از AlexNet معرفی شد و با ساختار منظم خودش (استفاده از کانولوشنهای ۳x۳ پشت سر هم) محبوب شد. اما:
- VGG: دارای ۱۶ یا ۱۹ لایه، تعداد پارامترهای بسیار زیاد (مثلاً بیش از ۱۳۰ میلیون پارامتر)
- ResNet: پارامترهای کمتر، ولی دقت بالاتر؛ به لطف اتصالهای باقیمانده
نکته مهم اینجاست که شبکه عصبی ResNet حتی با لایههای بیشتر، از VGG سبکتر است و سریعتر آموزش میبیند. به همین دلیل، امروزه ResNet در بسیاری از پروژههای عملی جای VGG را گرفته است.
نکته کاربردی: VGG برای آموزش از صفر روی دادههای کوچک مناسبتر است، ولی ResNet گزینهی بهتری برای Transfer Learning است.
۳. ResNet در برابر DenseNet
DenseNet هم مثل ResNet با هدف حل مشکل ناپدید شدن گرادیان ساخته شد. اما بهجای اتصال پرشی ساده، از نوع خاصی از اتصال استفاده میکند که خروجی هر لایه را به تمام لایههای بعدی متصل میکند!
- DenseNet: ارتباط بسیار شدید بین لایهها، کارایی بهتر در استخراج ویژگی، ولی مصرف حافظه بالا
- ResNet: اتصال سادهتر و سبکتر، مناسبتر برای پروژههای واقعی با محدودیت منابع
DenseNet در دیتاستهای خاصی عملکرد بهتری دارد، ولی در مقیاس وسیعتر و کاربردهای عمومی، ResNet هم دقیقتر است و هم بهینهتر. اگر سختافزار قوی در اختیار داشته باشید و بخواهید بهترین دقت ممکن را دریافت کنید، DenseNet گزینه بهتری است. اما اگه دنبال راهحل سبک و سریع هستید، ResNet انتخاب بهتری به نظر میرسد.

۴. ResNet در برابر EfficientNet
EfficientNet یکی از جدیدترین معماریهاست که با استفاده از روش AutoML و جستجوی خودکار، ساختاری بهینه برای دقت و سرعت پیدا کرده است.
- EfficientNet: مدل بسیار سبک، دقت بسیار بالا، بهینه از نظر مصرف حافظه و زمان
- ResNet: کلاسیکتر، ولی همچنان قدرتمند و سادهتر برای پیادهسازی و درک
اگر به دنبال استفاده در موبایل یا سیستمهایی با محدودیت سختافزاری هستید، EfficientNet بهتر است. اما اگر پروژهتان علمی یا صنعتی است و نیاز به مدل اثباتشده دارید، ResNet قابل اعتمادتر است. پیادهسازی ResNet در PyTorch بسیار سادهتر از EfficientNet است، چون کتابخانههای زیادی از آن پشتیبانی میکنند.

۵. جدول مقایسه کلی بین معماریها
در بخشهای پیشین، معماریهای گوناگون شبکههای عصبی کانولوشنی را بهصورت دقیق و مرحلهبهمرحله بررسی کردیم. از VGG با ساختار ساده و منظم گرفته تا ResNet با اتصالهای باقیمانده، DenseNet با رویکرد اتصال متراکم و EfficientNet با استراتژی مقیاسگذاری متوازن. اکنون، برای درک بهتر تفاوتهای کلیدی میان این معماریها، نیاز به یک نگاه کلی و مقایسهای داریم که جنبههای مختلف آنها را در کنار هم قرار دهد.
جدولی که در ادامه مشاهده میکنید، یک جمعبندی ساختاری و مفهومی از این معماریها ارائه میدهد. در این جدول، ویژگیهایی همچون عمق شبکه، تعداد پارامترها، نحوه اتصال لایهها، و عملکرد کلی مدلها بررسی شدهاند. این مقایسه به مخاطب کمک میکند تا درک عمیقتری از مسیر تکامل معماریهای مختلف بهدست آورد و در مواجهه با انتخاب بین آنها در پروژههای عملی، تصمیمی آگاهانهتر بگیرد.
معماری | تعداد لایه | نکته کلیدی |
AlexNet | ۸ | اولین مدل موفق CNN |
VGG-16 | ۱۶ | ساختار ساده اما سنگین |
ResNet-50 | ۵۰ | سبک و دقیق با اتصال پرشی |
DenseNet-121 | ۱۲۱ | اتصال بین همه لایهها |
EfficientNet | ~۱۸ | مدرن، کمحجم، سریع |
معماری ResNet نقطه عطفی در تاریخ شبکههای عصبی کانولوشنی محسوب میشود. با ترکیب سادگی در طراحی، دقت بالا و سرعت مناسب، این مدل توانسته جایگاه بسیار مهمی در دنیای یادگیری عمیق بهدست بیاورد.
اگرچه مدلهای جدیدتری مثل EfficientNet یا DenseNet معرفی شدهاند، اما ResNet همچنان یکی از محبوبترین و قابل اعتمادترین انتخابها در کاربردهای واقعی، صنعتی و تحقیقاتی است. مهمتر از همه اینکه یادگیری ResNet، دری را به روی درک بهتر سایر معماریهای مدرن باز میکند.
تحلیل عملکرد ResNet-50 روی دیتاست CIFAR-10
با آموزش مدل ResNet-50 روی دیتاست CIFAR-10، به دقتی در حدود ۸۵٪ تا ۹۰٪ دست مییابیم. اما این عدد میتواند با تنظیمات بهتر، بهبود پیدا کند. نکات کلیدی که روی عملکرد مدل تأثیر میگذارند عبارتند از:
- تعداد دوران آموزش (Epochs): با افزایش تعداد epochها (مثلاً ۳۰ یا ۵۰ بهجای ۵)، مدل فرصت بیشتری برای یادگیری پیدا میکند.
- افزایش اندازه batch: مقدار مناسب batch size میتواند به همگرایی بهتر مدل کمک کند.
- افزایش data augmentation: تکنیکهایی مثل random crop، flip افقی یا رنگی میتوانند مدل را در برابر overfitting مقاومتر کنند.
- استفاده از scheduler: کاهش تدریجی «نرخ یادگیری» (learning rate scheduler) میتواند دقت مدل را در انتهای آموزش بهبود دهد.
مثال: اگر تعداد دورانها به ۳۰ افزایش یابد، و augmentation به شکل مناسبی انجام شود، میتوان دقت مدل را تا حدود ۹۲٪ هم رساند.

جمعبندی نهایی
شبکه عصبی ResNet و بهویژه نسخه ۵۰ لایهای آن (ResNet-50) یکی از تأثیرگذارترین معماریهای شبکههای عصبی کانولوشنی در حوزه یادگیری عمیق است. این معماری با معرفی مفهوم اتصالات باقیمانده توانست مشکل ناپدید شدن گرادیان در شبکههای بسیار عمیق را حل کند و امکان آموزش مدلهایی با صدها لایه را فراهم سازد.
در این مقاله از مجله فرادرس توضیح دادیم که ResNet چیست و چرا معرفی آن نقطه عطفی در یادگیری عمیق محسوب میشود. معماری دقیق ResNet-50 را بررسی کردیم و ساختار Bottleneck Block را شرح دادیم. سپس بهطور عمیق مفهوم اتصال پرشی و دلیل موفقیت ResNet را تحلیل کردیم. علاوه بر این، به کاربردهای متنوع ResNet در حوزههایی مانند پزشکی، خودروهای خودران، سیستمهای امنیتی و طبقهبندی تصویر پرداختیم.
در ادامه، نسخههای مختلف این معماری از جمله ResNet-18، ResNet-34، ResNet-50، ResNet-101 و ResNet-152 را با هم مقایسه کردیم و با نسخههای پیشرفتهتر مانند ResNeXt، SE-ResNet و ResNet-D آشنا شدیم تا ببینیم چگونه این تغییرات باعث بهبود عملکرد ResNet شدهاند. در بخش عملی نیز، یک پیادهسازی از ResNet-50 روی دیتاست CIFAR-10 با استفاده از PyTorch ارائه کردیم و در پایان ResNet را با معماریهای مشهور دیگری مانند VGG، AlexNet، DenseNet و EfficientNet مقایسه کردیم.
آنچه ResNet-50 را متمایز میکند، تعادل فوقالعاده آن میان سادگی طراحی، قدرت در استخراج ویژگی و انعطافپذیری بالا در «انتقال یادگیری» (Transfer Learning) است. این ویژگیها باعث شدهاند که حتی پس از گذشت سالها، ResNet-50 همچنان یکی از محبوبترین گزینهها در پروژههای صنعتی، علمی و تحقیقاتی باشد. یادگیری مفاهیم پایه ResNet کمک میکند تا درک عمیقتری از معماریهای مدرنتر مانند DenseNet، EfficientNet و Vision Transformer پیدا کنید و مسیر شما برای ورود به حوزههای پیشرفتهتر یادگیری عمیق هموارتر شود.
source