شبکههای عصبی عمیق در سالهای اخیر پیشرفتهای چشمگیری در حوزه بینایی کامپیوتر ایجاد کردهاند، اما افزایش تعداد لایهها همیشه به بهبود عملکرد منجر نمیشود. ResNet یا Residual Network یکی از مهمترین معماریهایی است که این چالش را برطرف کرد و امکان آموزش شبکههای بسیار عمیق را فراهم ساخت. این معماری با معرفی مفهوم Residual Learning و Skip Connection توانست محدودیتهایی را که مدلهای عمیقتر با آن مواجه بودند کاهش دهد و استاندارد جدیدی در طراحی شبکههای عصبی کانولوشنی ایجاد کند.
در این مقاله بررسی میکنیم ResNet چیست، چه مشکلی را حل میکند و چرا به یکی از تاثیرگذارترین معماریهای یادگیری عمیق تبدیل شده است. همچنین با مفاهیمی مانند Residual Block، Skip Connection و مدلهای مختلف ResNet آشنا میشویم، ساختار ResNet50 را بررسی میکنیم و نحوه پیادهسازی آن در PyTorch را با مثالهای عملی یاد میگیریم.
قبل از ResNet چه مشکلی وجود داشت؟
در سالهای ابتدایی پیشرفت یادگیری عمیق، بسیاری از پژوهشگران معتقد بودند که افزایش تعداد لایهها بهصورت مستقیم باعث بهبود عملکرد مدل میشود. موفقیت معماریهایی مانند AlexNet و VGG نیز این فرضیه را تقویت کرده بود؛ زیرا هر نسل جدید از شبکههای عصبی معمولا عمیقتر از نسل قبلی طراحی میشد و نتایج بهتری در وظایف بینایی کامپیوتر به دست میآورد.
با این حال، زمانی که عمق شبکهها از حد مشخصی فراتر رفت، مشکلات جدیدی ظاهر شدند. یکی از شناختهشدهترین این مشکلات، Vanishing Gradient بود که باعث میشد گرادیانها هنگام انتشار به لایههای ابتدایی به شدت کوچک شوند و فرایند یادگیری با اختلال مواجه شود. در مقابل، Exploding Gradient نیز میتوانست باعث ناپایداری آموزش و افزایش شدید مقادیر گرادیان شود.
اما پژوهشگران مایکروسافت هنگام توسعه ResNet متوجه شدند که حتی زمانی که این مشکلات تا حد زیادی کنترل میشوند، باز هم عمیقتر شدن شبکه الزاما به عملکرد بهتر منجر نمیشود. آنها این پدیده را Degradation Problem نامیدند. در این حالت، با افزایش تعداد لایهها، خطای آموزش و خطای اعتبارسنجی افزایش پیدا میکند؛ در حالی که از نظر تئوری، یک شبکه عمیقتر باید حداقل بتواند عملکردی مشابه نسخه کمعمقتر خود داشته باشد.

نمودار معروف ResNet دو منحنی مربوط به شبکههای ۲۰ و ۵۶ لایه را نمایش میدهد. در این نمودار مشاهده میشود که با وجود عمق بیشتر، شبکه ۵۶ لایه در طول آموزش خطای بیشتری نسبت به مدل ۲۰ لایه دارد. این اختلاف نشان میدهد که اضافه کردن لایههای بیشتر لزوما یادگیری را آسانتر نمیکند و میتواند فرایند بهینهسازی را دشوارتر کند. همین مشاهده، نقطه شروع ایده Residual Learning و طراحی معماری ResNet بود.
ResNet چیست؟
ResNet یا Residual Network یک معماری شبکه عصبی عمیق است که در سال ۲۰۱۵ توسط پژوهشگران مایکروسافت معرفی شد. هدف اصلی این معماری حل مشکلی بود که با افزایش عمق شبکههای عصبی به وجود میآمد؛ مشکلی که باعث میشد شبکههای عمیقتر، برخلاف انتظار، عملکرد ضعیفتری نسبت به مدلهای کمعمقتر داشته باشند.
ایده اصلی ResNet بر پایه مفهومی به نام Residual Learning شکل گرفته است. در شبکههای عصبی سنتی، مدل تلاش میکند مستقیما تابع موردنظر را یاد بگیرد و ورودی را به خروجی مطلوب تبدیل کند. اما در ResNet رویکرد متفاوتی اتخاذ شده است؛ به جای یادگیری مستقیم خروجی، شبکه تنها اختلاف میان ورودی و خروجی موردنظر را یاد میگیرد. این اختلاف با عنوان Residual شناخته میشود.
فرمول اصلی ResNet به شکل زیر است:
H(x)=F(x)+x
که در آن:
- H(x) خروجی نهایی مورد انتظار است.
- x ورودی بلوک شبکه محسوب میشود.
- F(x) تابع Residual یا بخشی است که شبکه باید آن را یاد بگیرد.
در این ساختار، ورودی از یک مسیر میانبر (Skip Connection) عبور کرده و مستقیم به خروجی بلوک اضافه میشود. به همین دلیل اگر یادگیری یک نگاشت پیچیده دشوار باشد، شبکه میتواند تنها تغییرات موردنیاز را یاد بگیرد و اطلاعات اصلی را از طریق مسیر میانبر حفظ کند.
این ایده ساده تاثیر قابلتوجهی بر فرایند آموزش شبکههای عمیق داشت. ResNet توانست آموزش مدلهایی با دهها و حتی صدها لایه را ممکن کند و به یکی از مهمترین نقاط عطف در تاریخ یادگیری عمیق و بینایی کامپیوتر تبدیل شود.
Residual Learning چیست؟
مهمترین نوآوری ResNet مفهومی به نام Residual Learning است. برای درک این ایده، ابتدا باید بدانیم شبکههای عصبی معمولی چگونه یاد میگیرند. در معماریهای سنتی، هر لایه تلاش میکند تابعی را پیدا کند که ورودی را مستقیما به خروجی مطلوب تبدیل کند. هرچه این تابع پیچیدهتر باشد، یادگیری آن نیز دشوارتر خواهد شد؛ بهویژه زمانی که تعداد لایهها افزایش پیدا میکند.
پژوهشگران ResNet این سوال را مطرح کردند که آیا شبکه واقعا نیاز دارد کل تابع موردنظر را یاد بگیرد؟ آنها پیشنهاد کردند به جای یادگیری مستقیم تابع اصلی، شبکه تنها تفاوت میان ورودی و خروجی مطلوب را یاد بگیرد. این تفاوت همان Residual یا «باقیمانده» است.
به بیان ریاضی، اگر خروجی موردنظر را با (H(x)) نشان دهیم، شبکه به جای یادگیری مستقیم (H(x))، مقدار زیر را یاد میگیرد:
F(x)=H(x)-x
در نتیجه خروجی نهایی به شکل زیر محاسبه میشود:
H(x)=F(x)+x
این رویکرد باعث میشود شبکه وظیفه سادهتری بر عهده داشته باشد. در بسیاری از موارد، ورودی و خروجی موردنظر شباهت زیادی به یکدیگر دارند و تنها تغییرات محدودی باید اعمال شوند. بنابراین یادگیری این تغییرات کوچک بسیار آسانتر از یادگیری کل نگاشت از ابتدا خواهد بود.
مزیت اصلی Residual Learning این است که فرایند بهینهسازی شبکه را سادهتر میکند و امکان عبور بهتر گرادیانها در طول آموزش را فراهم میسازد. به همین دلیل شبکههای مبتنی بر ResNet میتوانند با دهها یا حتی صدها لایه آموزش ببینند، بدون اینکه با مشکلاتی مانند افت شدید عملکرد یا دشواری در یادگیری مواجه شوند.
Skip Connection چیست؟
یکی از مهمترین اجزای معماری ResNet مفهوم Skip Connection یا اتصال میانبر است. این ایده ساده اما بسیار موثر باعث شد آموزش شبکههای بسیار عمیق امکانپذیر شود.
در شبکههای عصبی معمولی، داده باید بهصورت متوالی از تمام لایهها عبور کند. یعنی خروجی هر لایه مستقیما ورودی لایه بعدی میشود. اما در ResNet یک مسیر اضافی اضافه میشود که به آن Skip Connection گفته میشود. در این مسیر، ورودی بدون هیچ تغییری از چند لایه عبور کرده و مستقیما به خروجی همان بلوک اضافه میشود.
ساختار ساده یک Residual Block به شکل زیر است:
Input → Conv → Conv → + Input → Output
در اینجا خروجی لایههای میانی با ورودی اولیه جمع میشود و نتیجه نهایی را تشکیل میدهد. این عملیات باعث میشود شبکه همزمان دو مسیر اطلاعاتی داشته باشد: یک مسیر برای پردازش ویژگیها و یک مسیر برای حفظ اطلاعات اصلی.
مزایای Skip Connection
استفاده از Skip Connection چند مزیت کلیدی دارد:
- جلوگیری از Vanishing Gradient: با ایجاد مسیر مستقیم برای جریان گرادیان، مشکل محو شدن گرادیان در شبکههای عمیق تا حد زیادی کاهش پیدا میکند.
- عبور مستقیم اطلاعات: اطلاعات اولیه ورودی بدون تغییر میتواند به لایههای عمیقتر منتقل شود، بنابراین شبکه آن را از دست نمیدهد.
- امکان آموزش شبکههای بسیار عمیق: به لطف این ساختار، میتوان شبکههایی با دهها یا حتی صدها لایه را بدون افت شدید عملکرد آموزش داد.
این ایده ساده یکی از مهمترین دلایل موفقیت ResNet و تبدیل شدن آن به یکی از معماریهای پایه در یادگیری عمیق محسوب میشود.

برای نمایش مفهوم Residual Learning میتوان یک نمودار دو مسیره قرار داد که در آن مسیر اصلی شامل چند لایه کانولوشنی است و یک مسیر میانبر (Skip Connection) نیز ورودی را مستقیما به خروجی متصل میکند. این تصویر بهخوبی نشان میدهد که شبکه تنها بخش (F(x)) را یاد میگیرد و سپس ورودی اولیه به خروجی آن اضافه میشود.
معماری ResNet
معماری ResNet بر پایه «Residual Block» ساخته شده و دو نوع اصلی دارد:
۱. Basic Block (ResNet18 / ResNet34)
این نوع بلاک در مدلهای سبکتر استفاده میشود و ساختار سادهتری دارد.
ساختار Basic Block:
- Conv 3×3
- Batch Normalization
- ReLU
- Conv 3×3
- Batch Normalization
- Skip Connection (Addition)
در پایان، خروجی لایهها با ورودی اولیه جمع میشود.
ویژگیهای Basic Block:
- ساده و سبک
- مناسب برای شبکههای کمعمق
- سرعت آموزش بالا
- مناسب برای ResNet18 و ResNet34
۲. Bottleneck Block (ResNet50 به بعد)
در مدلهای عمیقتر، استفاده از Basic Block باعث افزایش شدید هزینه محاسباتی میشود. به همین دلیل، ResNet از ساختار بهینهتری به نام Bottleneck Block استفاده میکند.
ساختار Bottleneck Block:
- 1×1 Conv (کاهش ابعاد)
- 3×3 Conv (استخراج ویژگی)
- 1×1 Conv (افزایش دوباره ابعاد)
- Skip Connection (Addition)
مزایای Bottleneck Block:
- کاهش تعداد پارامترها
- کاهش هزینه محاسباتی (FLOPs)
- امکان ساخت شبکههای بسیار عمیقتر
- افزایش دقت در مدلهای بزرگ
به همین دلیل در ResNet50، ResNet101 و ResNet152 از این ساختار استفاده میشود.
انواع مدلهای ResNet
خانواده ResNet شامل چند نسخه اصلی است که تفاوت آنها در عمق شبکه و نوع بلاکهاست:
| مدل | تعداد لایه | کاربرد |
| ResNet18 | 18 | سبک، مناسب تست و پروژههای ساده |
| ResNet34 | 34 | تعادل بین سرعت و دقت |
| ResNet50 | 50 | پرکاربردترین نسخه در صنعت |
| ResNet101 | 101 | مناسب پروژههای دقیقتر و پیچیدهتر |
| ResNet152 | 152 | مدل سنگین با دقت بالا برای دادههای بزرگ |
تفاوت معماری مدلهای ResNet
در خانواده ResNet، دو مدل ResNet-34 و ResNet-50 از نظر عمق شبکه و نوع بلوکهای بهکاررفته تفاوتهای مهمی دارند. این تفاوتها فقط در تعداد لایهها نیست، بلکه در نوع طراحی داخلی هر بلوک نیز دیده میشود. درک این تفاوت کمک میکند بفهمیم چرا ResNet-50 هم دقیقتر است و هم برای مسائل پیچیدهتر مناسبتر از ResNet-34 محسوب میشود.
ResNet-34:
- استفاده از Basic Block
- ساختار سادهتر
- هزینه محاسباتی کمتر
- مناسب برای شبکههای کمعمق
ResNet-50:
- استفاده از Bottleneck Block
- عمق بیشتر
- دقت بالاتر
- بهینهتر از نظر محاسبات نسبت به افزایش عمق
6.5 ResNet-101 و ResNet-152:
در مدلهای عمیقتر همان Bottleneck Block استفاده میشود فقط تعداد بلوکها افزایش مییابد. در نتیجه:
- استخراج ویژگیهای پیچیدهتر
- حفظ پایداری آموزش به لطف Skip Connection
- هزینه محاسباتی کمتر نسبت به مدلهای قدیمی مثل VGG
برای مثال، ResNet-152 با وجود عمق بسیار زیاد، همچنان از نظر محاسباتی بهینهتر از VGG-19 است.
Bottleneck Block چیست؟
Bottleneck Block یک نسخه بهینهتر از Residual Block است که برای ساخت شبکههای عمیقتر مثل ResNet50، ResNet101 و ResNet152 طراحی شده است. هدف اصلی این بلوک، کاهش هزینه محاسباتی و تعداد پارامترها بدون کاهش دقت مدل است.
در شبکههای عمیق، استفاده از بلوکهای ساده (Basic Block) باعث افزایش شدید محاسبات میشود. Bottleneck Block این مشکل را با فشردهسازی و سپس بازسازی ویژگیها حل میکند.
ساختار Bottleneck Block:
- 1×1 Conv (کاهش ابعاد ویژگیها)
- 3×3 Conv (استخراج ویژگیهای اصلی)
- 1×1 Conv (بازگرداندن ابعاد به حالت اولیه)
مزایای Bottleneck Block:
- کاهش تعداد پارامترها
- کاهش هزینه محاسباتی (FLOPs)
- امکان ساخت شبکههای بسیار عمیقتر
- حفظ یا حتی افزایش دقت در مدلهای بزرگ
به همین دلیل از ResNet50 به بعد، به جای Basic Block از Bottleneck Block استفاده میشود تا بتوان شبکه را عمیقتر کرد بدون اینکه آموزش آن غیرقابل کنترل یا بیش از حد سنگین شود.
پیادهسازی ResNet
در این بخش، پیادهسازی ResNet (نسخه ۱ و ۲) برای دیتاست CIFAR-10 را مرحلهبهمرحله بررسی میکنیم. این فرایند شامل پیشپردازش دادهها، ساخت مدل، آموزش و در نهایت رسم نمودارهای عملکرد است.
مرحله ۱: وارد کردن کتابخانهها
در این مرحله کتابخانههای مورد نیاز برای ساخت و آموزش مدل وارد میشوند:
- tensorflow برای ساخت و آموزش مدل
- keras برای تعریف لایهها و ساختار شبکه
- numpy برای عملیات عددی
- os برای مدیریت فایلها و دایرکتوریها
|
1 2 3 4 5 6 7 8 9 10 11 12 |
import tensorflow as tf from tensorflow import keras from tensorflow.keras.layers import Dense, Conv2D, BatchNormalization, Activation from tensorflow.keras.layers import AveragePooling2D, Input, Flatten, Add from tensorflow.keras.optimizers import Adam from tensorflow.keras.callbacks import ModelCheckpoint, LearningRateScheduler, ReduceLROnPlateau from tensorflow.keras.preprocessing.image import ImageDataGenerator from tensorflow.keras.regularizers import l2 from tensorflow.keras.models import Model from tensorflow.keras.datasets import cifar10 import numpy as np import os |
مرحله ۲: تنظیم هایپرپارامترها
در این بخش پارامترهای اصلی آموزش مدل تعیین میشوند:
- batch_size: اندازه هر batch
- epochs: تعداد دورههای آموزش
- num_classes: تعداد کلاسها
- data_augmentation: استفاده از افزایش داده
- نسخه ResNet و تعداد بلاکها
سپس عمق شبکه بر اساس نسخه ResNet محاسبه میشود:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
batch_size = 32 epochs = 200 data_augmentation = True num_classes = 10 subtract_pixel_mean = True n = 3 version = 1 if version == 1: depth = n * 6 + 2 elif version == 2: depth = n * 9 + 2 model_type = ‘ResNet %dv%d’ % (depth, version) |
مرحله ۳: بارگذاری و پیشپردازش دادههای CIFAR-10
در این مرحله دیتاست CIFAR-10 از Keras بارگذاری میشود.
اقدامات انجامشده:
- نرمالسازی پیکسلها در بازه [0,1]
- (اختیاری) کم کردن میانگین دادهها برای مرکزیت صفر
- تبدیل برچسبها به One-Hot Encoding
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
(x_train, y_train), (x_test, y_test) = cifar10.load_data() input_shape = x_train.shape[1:] x_train = x_train.astype(‘float32’) / 255 x_test = x_test.astype(‘float32’) / 255 if subtract_pixel_mean: x_train_mean = np.mean(x_train, axis=0) x_train -= x_train_mean x_test -= x_train_mean y_train = keras.utils.to_categorical(y_train, num_classes) y_test = keras.utils.to_categorical(y_test, num_classes) |
مرحله ۴: تعریف نرخ یادگیری (Learning Rate)
در این مرحله، نرخ یادگیری بهصورت پویا و وابسته به epoch تنظیم میشود.
|
1 2 3 4 5 6 7 8 9 10 11 |
def lr_schedule(epoch): lr = 1e–3 if epoch > 180: lr *= 0.5e–3 elif epoch > 160: lr *= 1e–3 elif epoch > 120: lr *= 1e–2 elif epoch > 80: lr *= 1e–1 return lr |
مرحله ۵: تعریف یک لایه ResNet
این تابع یک بلوک کانولوشنی را تعریف میکند که میتواند شامل:
- Conv2D
- BatchNormalization
- Activation
باشد. ترتیب این عملیات قابل تنظیم است.
|
1 2 3 |
def resnet_layer(inputs, num_filters=16, kernel_size=3, strides=1, activation=‘relu’, batch_normalization=True, conv_first=True): ... |
مرحله ۶: تعریف ResNet نسخه 1 (ResNet v1)
ResNet v1 از بلوکهای Residual دو لایهای استفاده میکند.
ویژگیها:
- استفاده از Basic Residual Block
- 3 مرحله (Stage) مختلف
- افزایش تعداد فیلترها در هر مرحله
- استفاده از Skip Connection
- پایان با Global Average Pooling و Dense Softmax
مرحله ۷: تعریف ResNet نسخه ۲ (ResNet v2)
ResNet v2 نسخه پیشرفتهتر است و از Bottleneck Block استفاده میکند.
ویژگیها:
- استفاده از بلوکهای 3 لایهای (Bottleneck)
- BatchNorm و Activation قبل از Convolution
- بهینهتر برای شبکههای عمیقتر
- عملکرد بهتر نسبت به v1 در مدلهای بزرگ
مرحله ۸: کامپایل مدل
در این مرحله مدل بر اساس نسخه انتخابی ساخته و کامپایل میشود:
- Optimizer: Adam
- Loss: categorical_crossentropy
- Metric: accuracy
مرحله ۹: تنظیم Callback ها
Callback ها برای کنترل فرایند آموزش استفاده میشوند:
- ModelCheckpoint: ذخیره بهترین مدل
- LearningRateScheduler: تغییر نرخ یادگیری
- ReduceLROnPlateau: کاهش LR در صورت توقف بهبود
مرحله ۱۰: افزایش داده و آموزش مدل
اگر data augmentation فعال باشد، دادهها به صورت real-time تغییر داده میشوند:
- چرخش تصویر
- جابهجایی افقی و عمودی
- Flip افقی
سپس مدل آموزش داده میشود و history برای تحلیل عملکرد ذخیره میشود.
کاربردهای ResNet

معماری ResNet به دلیل دقت بالا و توانایی در استخراج ویژگیهای عمیق، در بسیاری از مسائل بینایی ماشین بهعنوان یک Backbone استاندارد استفاده میشود. این مدل نهتنها برای طبقهبندی تصویر کاربرد دارد، بلکه پایه بسیاری از سیستمهای پیشرفته یادگیری عمیق نیز محسوب میشود.
طبقهبندی تصویر (Image Classification)
یکی از اصلیترین کاربردهای ResNet، دستهبندی تصاویر در کلاسهای مختلف است. این مدل میتواند ویژگیهای پیچیده بصری را از تصویر استخراج کرده و آنها را به برچسبهای مشخص تبدیل کند.
تشخیص اشیا (Object Detection)
ResNet بهطور گسترده بهعنوان Backbone در مدلهای تشخیص اشیا استفاده میشود. این معماری کمک میکند تا مدل بتواند علاوه بر شناسایی اشیا، محل دقیق آنها را نیز در تصویر مشخص کند.
نمونه مدلها:
- Faster R-CNN
- Mask R-CNN
کاربرد در پزشکی
در حوزه پزشکی، ResNet نقش مهمی در تحلیل تصاویر پزشکی و کمک به تشخیص بیماریها دارد.
- تشخیص تومور در تصاویر پزشکی
- تحلیل تصاویر MRI و CT Scan
- کمک به تشخیص بیماریهای مختلف با دقت بالا
خودروهای خودران
در سیستمهای رانندگی خودکار، ResNet برای درک محیط اطراف خودرو استفاده میشود. این مدل میتواند اشیا مختلف مانند خودروها، عابران پیاده و علائم راهنمایی را شناسایی کند.
سیستمهای نظارتی
ResNet در سیستمهای نظارتی و امنیتی نیز کاربرد دارد. این مدل در تحلیل ویدئو و تصاویر دوربینهای امنیتی برای شناسایی رفتارها و اشیا استفاده میشود.
مزایا و معایب ResNet
معماری ResNet با وجود سادگی ایده اصلی خود، تاثیر بسیار بزرگی در پیشرفت شبکههای عصبی عمیق داشته است. با این حال، مانند هر مدل دیگری، این معماری نیز دارای نقاط قوت و محدودیتهایی است.
مزایای ResNet
- حل مشکل Degradation: با استفاده از Skip Connection، افزایش عمق شبکه باعث افت عملکرد نمیشود.
- امکان آموزش شبکههای بسیار عمیق: ResNet اجازه میدهد مدلهایی با صدها لایه بهصورت پایدار آموزش داده شوند.
- عملکرد بسیار بالا: این معماری در بسیاری از Benchmarkها نتایج بسیار خوبی ثبت کرده است.
- Backbone استاندارد در مدلهای مختلف: ResNet بهعنوان پایه بسیاری از مدلهای پیشرفته در Computer Vision استفاده میشود.
معایب ResNet
- هزینه محاسباتی نسبتا زیاد: بهخصوص در نسخههای عمیقتر مانند ResNet101 و ResNet152.
- مصرف حافظه بالا: به دلیل نگهداری feature mapها در لایههای متعدد.
- رقابت با معماریهای جدیدتر: مدلهایی مانند EfficientNet و Vision Transformer در برخی مسائل عملکرد بهتری ارائه میدهند.
مقایسه ResNet با VGG و Vision Transformer

در حوزه بینایی ماشین، معماریهای مختلفی مانند ResNet، VGG و Vision Transformer هرکدام با رویکرد متفاوتی برای استخراج ویژگی از تصاویر طراحی شدهاند. برای درک بهتر تفاوت این مدلها، لازم است آنها را از نظر ساختار، عمق، نیاز داده و کاربردهای عملی با هم مقایسه کنیم. این مقایسه کمک میکند بفهمیم هر معماری در چه شرایطی عملکرد بهتری دارد و چرا ResNet همچنان یکی از گزینههای محبوب در کنار مدلهای جدیدتر محسوب میشود.
| ویژگی | ResNet | VGG | Vision Transformer (ViT) |
| Skip Connection | ✅ دارد | ❌ ندارد | — |
| عمق شبکه | زیاد | محدود | زیاد |
| نیاز به داده زیاد | متوسط | کم | زیاد |
| کارایی صنعتی | بسیار بالا | متوسط | بالا |
| نوع معماری | CNN | CNN | Transformer |
- ResNet: تعادل عالی بین دقت، عمق و پایداری آموزش
- VGG: ساده اما قدیمیتر و سنگینتر
- ViT: مدرنتر، وابسته به داده زیاد و قدرت محاسباتی بالا
آیا ResNet هنوز در سال ۲۰۲۶ کاربرد دارد؟
با وجود ظهور معماریهای جدیدتر مانند Vision Transformer و EfficientNet، ResNet همچنان یکی از پرکاربردترین و قابل اعتمادترین معماریها در حوزه یادگیری عمیق است.
دلایل اصلی این موضوع عبارتاند از:
- همچنان یکی از Backboneهای استاندارد در بسیاری از پروژههای صنعتی است
- در چارچوبهایی مانند PyTorch و TensorFlow بهصورت پیشفرض در دسترس است
- برای بسیاری از مسائل، نسبت سادگی به عملکرد بسیار خوبی دارد
- در سیستمهای real-time و embedded همچنان کاربرد گسترده دارد
در نتیجه، ResNet نهتنها یک معماری تاریخی نیست، بلکه هنوز هم یکی از انتخابهای اصلی در پروژههای بینایی ماشین محسوب میشود.
منابع
viso.ai | geeksforgeeks.org | arxiv.org | medium.com
سوالات متداول
Skip Connection یعنی خروجی یک لایه بدون تغییر یا با تغییر کم به لایههای بعدی منتقل میشود تا مدل بتواند اطلاعات اولیه را حفظ کند و راحتتر یاد بگیرد.
VGG فقط لایهها را پشتسرهم اضافه میکند، اما ResNet از اتصالهای میانبر استفاده میکند که باعث میشود شبکههای بسیار عمیقتر و پایدارتر قابل آموزش باشند.
عدد نشاندهنده عمق شبکه (تعداد لایهها) است؛ هرچه عدد بالاتر باشد، مدل عمیقتر و معمولاً دقیقتر اما سنگینتر است.




دیدگاهتان را بنویسید