طی سالهای اخیر، پیشرفتهای چشمگیری در دنیای شبکههای عصبی عمیق ایجاد شده که برخی از آنها توانستهاند مرزهای این فناوری را جابهجا کنند. یکی از این پیشرفتها، معماری ResNet است که موفق شده انقلابی در نحوه آموزش شبکههای عصبی کانولوشنی (CNNs) رقم بزند. در این مقاله، به طور جامع به بررسی شبکههای عصبی ResNet میپردازیم و معماری، اجزا، نسخهها، کاربردها و نحوه پیادهسازی آن را بررسی میکنیم.
سیر تکامل شبکههای عصبی
برای درک بهتر «رِزنت» ResNet، بهتر است که در ابتدا به سیر تکامل شبکههای عصبی نگاهی بیندازیم:
· LeNet (1998)
LeNet اولین CNN موفقیتآمیزی بود که برای تشخیص ارقام دستنویس (MNIST) طراحی شد و پایه و اساس بسیاری از تحقیقات بعدی را تشکیل داد. این شبکه نسبتاً ساده با چند لایه کانولوشن، لایه سابسامپلینگ (pooling) و لایههای Fully Connected، توانست نشان دهد که شبکههای عصبی کانولوشنی میتوانند برای حل مسائل بینایی ماشین بسیار موثر باشند؛ هرچند که محدودیتهایی در عمق شبکه، مانع از عملکرد عالی LeNet در حل مسائل پیچیدهتر میشد.
· AlexNet (2012)
AlexNet شبکهای عمیقتر و گستردهتر از LeNet بود که در مسابقه ImageNet 2012 با اختلاف قابل توجهی پیروز شد. این پیروزی نشان داد که شبکههای عصبی عمیق میتوانند به دقت بسیار بالایی در تشخیص تصویر دست یابد و همین امر سبب شد که توجه زیادی به CNNها جلب شود. با این حال، هنوز هم مشکل ناپدید شدن گرادیان در لایههای عمیقتر باعث میشد آموزش شبکههای عمیقتر با چالشهایی همراه باشد.
· Visual Geometry Group (2014)
به دنبال سادهسازی معماری AlexNet و بررسی تاثیر عمق شبکه بر عملکرد، معماری VGG در سال 2014 پا به میدان گذاشت. این روش با استفاده از لایههای کانولوشن کوچکتر (3×3) به صورت پیاپی، منجر به روی کار آمدن یک معماری عمیقتر و یکنواختتر شد. این رویکرد نمایانگر آن بود که افزایش عمق شبکه میتواند دقت را بهبود بخشد، اما هزینه محاسباتی را نیز افزایش میدهد و این موضوع باعث شد تا معماری VGG به اندازه کافی کارآمد به نظر نرسد.
· GoogleNet (2014)
GoogleNet که با نامه Inception هم شناخته میشود، به دنبال افزایش کارایی و ایجاد معماریهای متنوعتر بود. این بلوکها از فیلترهایی با اندازههای مختلف به طور همزمان استفاده میکردند که درنهایت خروجی آنها با هم ترکیب میشد. نتیجه، یک معماری کارآمدتر و با دقت بالاتر بود که گاهی اوقات پیچیدگیهای آن، درک و پیادهسازی این معماری را کمی دشوار میکرد.
· ResNet (2015)
در انتها، ResNet در سال 2015 با معرفی اتصالات پرشی، مشکل ناپدید شدن گرادیان را در شبکههای عمیق حل کرد و توانست به دقتهای بسیار بالایی در ImageNet دست پیدا کند. این معماری، نقطه عطفی در دنیای بینایی ماشین به شمار میرود و امکان آموزش شبکههای بسیار عمیقتری را فراهم میکند.
بیشتر بخوانید: تشخیص حالت و آناتومی بدن به کمک بینایی ماشین + دریافت API
این روند تکاملی نشان میدهد که هر معماری جدید بر پایه نقاط قوت معماریهای قبلی ساخته شده و سعی در رفع محدودیتهای آنها دارد.
معماری و اجزای اصلی شبکه عصبی ResNet
ResNet (Residual Network) در سال 2015 توسط تیم تحقیقاتی Microsoft معرفی شد و به عنوان پاسخی به مشکل ناپدید شدن گرادیان در شبکههای عصبی عمیق مورد استفاده قرار گرفت. مشکل ناپدید شدن گرادیان به این معناست که با افزایش عمق شبکه، گرادیانها به تدریج ضعیف شده و به سختی به لایههای ابتدایی میرسند. این مسئله باعث میشود آموزش موثر شبکههای عصبی با مانعی جدی روبهرو شود.
معماری ResNet با معرفی مفهوم اتصالات پرشی (Skip Connections) یا اتصالات میانبر (Shortcut Connections)، این مشکل را تا حد زیادی مرتفع میکند. اتصالات پرشی به لایهها اجازه میدهند که یک بخش از اطلاعات را مستقیماً از لایههای قبلی به لایههای بعدی منتقل کنند، بدون اینکه لایههای میانی درگیر شوند. این کار باعث میشود گرادیانها راحتتر در شبکه جریان پیدا کنند و از ناپدید شدن آنها جلوگیری شود.
اجزای اصلی معماری ResNet عبارتند از:
- لایههای کانولوشن (Convolutional Layers) مانند سایر CNNها،ResNet از لایههای کانولوشن برای استخراج ویژگیها از تصاویر استفاده میکند.
- لایههای Batch Normalization برای بهبود سرعت و پایداری فرایند آموزش به کار میروند.
- لایههایReLU (Rectified Linear Unit) به عنوان تابع فعالسازی در شبکهها استفاده میشوند.
- اتصالات پرشی(Skip Connections) مهمترین ویژگی ResNet هستند و به جریان بهتر گرادیان کمک میکنند.
- بلوکهایResidual (Residual Blocks) واحد سازنده اصلی ResNet هستند که شامل لایههای کانولوشن و اتصالات پرشی در نظر گرفته میشوند.

تفاوت نسخههای مختلف ResNet
معماری ResNet برخلاف بسیاری از مدلهای دیگر، در قالبهای متنوعی ارائه شده است که با نامهای زیر شناخته میشوند:
· ResNet-18
· ResNet-34
· ResNet-50
· ResNet-101
· ResNet-152
این تفاوت اساسی در تعداد لایههای شبکه (Depth) و جزئیات معماری بلوکهای Residualآنها است که در نهایت بر عملکرد، دقت و سرعت محاسباتی تأثیر میگذارد. اصلیترین تمایز بین این نسخهها در عمق شبکه آنها است. در این بین، ResNet-18 کمترین تعداد لایه (18 لایه کانولوشنی) را دارد، در حالی که ResNet-152 از بیشترین عمق (152 لایه کانولوشنی) برخوردار است. افزایش عمق شبکه به طور کلی به معنای توانایی استخراج ویژگیهای پیچیدهتر و ظریفتر از دادهها است و میتواند منجر به دقت بالاتر شود. با این حال، افزایش عمق نیز با چالشهایی از جمله افزایش زمان آموزش، نیاز به منابع محاسباتی بیشتر و احتمال بیشبرازش (overfitting) همراه است.
بیشتر بخوانید: شبکه عصبی چیست و چه کاربردی دارد؟
علاوه بر عمق، تفاوت دیگری که در نسخههای مختلف ResNet وجود دارد، استفاده از بلوکهای Bottleneck است. این بلوکها به بهینهسازی برای کاهش تعداد پارامترها و افزایش کارایی محاسباتی کمک میکنند. در ResNet-34 و ResNet-18، بلوکهای Residual استاندارد مورد استفاده قرار میگیرند و در طرف مقابل در ResNet-50،ResNet-101 و ResNet-152 از بلوکهای Bottleneck به طور گسترده استفاده میشود.
به طور خلاصه:
- ResNet-18 و ResNet-34 نسخههای کمعمقتر با بلوکهای Residual استانداردی هستند که معمولا در پروژههایی با منابع محاسباتی محدود مورد استفاده قرار میگیرند.
- ResNet-50 یک نقطه تعادل مناسب میان عمق، دقت و کارایی است. این مدل اغلب به عنوان یک معماری پیشفرض برای بسیاری از کاربردها استفاده میشود.
- ResNet-101 و ResNet-152 نسخههای عمیقتر و پیشرفتهتر محسوب میشوند و زمانی مورد استفاده قرار میگیرند که شاخصه دقت از سرعت محاسباتی مهمتر است.
انتخاب نسخه مناسب ResNet به نیازهای خاص پروژه بستگی دارد. اگر منابع محاسباتی محدودی دارید یا سرعت مدل برای شما در اولویت است،ResNet-18 یا ResNet-34 گزینههای مناسبی هستند؛ اما اگر دقت و کیفیت تحلیل دادهها از اهمیت ویژهای برخوردار است و همچنین منابع کافی در اختیار دارید، ResNet-50، ResNet-101 یا ResNet-152 میتوانند انتخابهای بهتری باشند.
کاربردهای شبکه عصبی ResNet
امروزه معماریResNet به دلیل دقت و کارایی بالا، در طیف گستردهای از کاربردها مورد استفاده قرار میگیرد. در ادامه، برخی از این کاربردها را بررسی میکنیم.
· تشخیص تصویر (Image Classification)
تشخیص تصویر یا Image Classification، یکی از اصلیترین و پرکاربردترین حوزههایی است که شبکههای ResNet در آن درخشیدهاند. در این کاربرد، تصاویر مختلف با استفاده از برچسبهای از پیش تعریف شده (مانند گربه، سگ، ماشین و…) دستهبندی میشوند. دقت و کارایی بالای این معماری،ResNet را به انتخابی ایدهآل برای طیف گستردهای از کاربردها، از جمله سازماندهی کتابخانههای عکس تا تشخیص بیماریها از روی تصاویر پزشکی تبدیل کرده است.
· تشخیص شی (Object Detection)
تشخیص شی یا Object Detection، پا را از تشخیص موجودیت تصاویر فراتر میگذارد و به شناسایی و مکانیابی دقیق اشیاء مختلف در یک تصویر میپردازد. معماری ResNet در این زمینه به عنوان یک استخراجگر ویژگی (Feature Extractor) وارد عمل میشود و راه را برای اعمال معماریهای پیچیدهتری مانند Faster R-CNN و Mask R-CNNهموار میکند. این معماریها از ResNet برای استخراج ویژگیهای مفید از تصاویر استفاده میکنند و سپس این ویژگیها را برای شناسایی و مکانیابی اشیاء مختلف مورد استفاده قرار میدهند. به طور مثال، برخی از سرویسهای تبدیل متن به تصویر (prompt to image) از ResNet برای درک دقیقتر تصویر ورودی و تولید تصاویر جدید بر اساس توضیحات نوشتاری استفاده میکند. در سیستم خودروهای خودران نیز از ResNet برای تشخیص و شناسایی موانع، عابران پیاده و سایر خودروها استفاده میشود.
· قطعهبندی تصویر (Image Segmentation)
قطعهبندی تصویر یا Image Segmentationبه فرایند تقسیمبندی یک تصویر به مناطق یا بخشهای مختلف بر اساس ویژگیهای آنها اشاره دارد. این فرایند برای اهداف مختلفی مانند تقسیمبندی تصاویر پزشکی برای تشخیص تومورها و یا تقسیمبندی تصاویر ماهوارهای به کار گرفته میشود. معماریهای مختلف قطعهبندی تصویر از ResNet به عنوان لایه زیرینایی استفاده میکنند و با افزودن لایههای مخصوص قطعهبندی، دقت و کارایی را افزایش میدهند.
· پردازش زبان طبیعی (Natural Language Processing)
اگرچه ResNet به طور ذاتی برای پردازش تصویر طراحی شده است، اما میتوان با اعمال تغییرات مناسب، از آن در برخی از وظایف پردازش زبان طبیعی (NLP) نیز بهره برد. به طور مثال، بسیاری از توسعهدهندگان از لایههای کانولوشنی ResNet برای استخراج ویژگیهای معنایی از متن استفاده میکنند.
· تشخیص فعالیتهای انسانی (Human Activity Recognition)
تشخیص فعالیتهای انسانی یا HAR وظیفه دارد تا با تحلیل ویدئوها، فعالیتهای حرکتی انسان را از درون این فایلها استخراج کند. ResNet به دلیل توانایی قابل توجهاش در استخراج ویژگیهای زمانی و مکانی از تصاویر، به طور گستردهای در سیستمهای نظارتی، آموزشی و برنامههای سلامتی به کار گرفته میشود.
نحوه پیادهسازی ResNet-50
یکی از رایجترین راههای پیادهسازی ResNet، استفاده از کتابخانه PyTorch است. این کتابخانه یک چارچوب یادگیری عمیق، قدرتمند و انعطافپذیر است که امکان پیادهسازی آسان و سریع مدلهای مختلف را فراهم میکند.
بیشتر بخوانید: بینایی ماشین چیست و چه کاربردی دارد؟
نمونه کد PyTorch برای تعریف یک مدل ResNet-50:
در این کد:
· torchvision.models ماژولهای پیشآموزشدیده ResNet را در PyTorch فراهم میکند.
· pretrained=True مدل را با وزنهای از پیشآموزشدیده دانلود میکند که به توسعهدهنده این امکان را میدهد که از انتقال یادگیری (Transfer Learning) استفاده کند.
· resnet50.fc لایه نهایی مدل است که باید با توجه به تعداد کلاسهای خروجی تغییر کند.
جمعبندی
ResNet را میتوان یک گام تحولآفرین در معماری شبکههای عصبی دانست که با قدرت و کارآمدی مثالزدنی خود، مرزهای یادگیری عمیق را جابهجا کرده است. درک عمیق مفاهیم کلیدی نظیر اتصالات پرشی (Skip Connections) و بلوکهای Bottleneck به توسعهدهندگان کمک میکند که علاوهبر آشنایی با عملکرد ResNet، راهکارهای نوآورانهای را هم برای پیادهسازی یادگیری عمیق طراحی کنند.
این معماری، به راحتی از طریق کتابخانه PyTorch قابل پیادهسازی و سفارشیسازی است و این انعطافپذیری، امکان بهرهگیری از آن را در طیف وسیعی از کاربردها، از تشخیص تصویر و اشیاء گرفته تا پردازش زبان طبیعی و تحلیل ویدیوها فراهم میکند. فراتر از کاربردهای سنتی،ResNet به عنوان یک بلوک قدرتمند در طراحی معماریهای جدید و پیشرفتهتر شناخته میشود و توانسته چشمانداز نوینی را در زمینه توسعه سیستمهای هوشمند به تصویر بکشد. به عبارتی،ResNet بیش از آن که فقط یک مدل باشد، یک پلتفرم برای نوآوری و پیشرفت در زمینه یادگیری عمیق به حساب میآید.











