راهنمای جامع YOLO
راهنمای جامع YOLO
پیش از YOLO: تشخیص اشیا با کلاسیفایرها
وقتی ما به یک تصویر نگاه میکنیم، مغز ما در کسری از ثانیه میفهمیم چه اشیایی در آن وجود دارند و دقیقاً در کجای تصویر قرار گرفتهاند. در بینایی کامپیوتر فرآیند تشخیص اشیا (Object Detection) تا قبل از مدل یولو، ترکیبی از دو مرحله بود:
- مکانیابی (Localization): کشیدن یک کادر مستطیلی (Bounding Box) دور شیء.
- طبقهبندی (Classification): تشخیص اینکه شیء درون کادر چیست (انسان، خودرو، سلول قلبی و…).

پیش از ظهور YOLO، سیستمهای تشخیص اشیا عمدتاً بر پایهی کلاسیفایرها ساخته میشدند. سیستمهای قدیمی مثل DPM، تصویر را به صورت تکهتکه و با تکنیک Sliding Window (پنجره لغزان) بررسی میکردند؛ یعنی یک کلاسیفایر باید هزاران بار روی مقیاسها و نقاط مختلف تصویر اجرا میشد تا شاید شیء مورد نظر را پیدا کند. این روش نه تنها بسیار کند بود، بلکه فرسنگها با نحوه درکِ آنی و هوشمندانه چشم انسان فاصله داشت.

روش های جدیدترشامل تشخیص شیء دو مرحلهای (Two-Stage) مانند R-CNN بودند که ابتدا مناطق احتمالی حضور شیء (Region Proposals) را شناسایی و سپس آنها را دستهبندی میکردند. این مسیر چندمرحلهای هم پیچیده است و هم کند.
اما الگوریتم YOLO کل تصویر را در یک مرحله (One-Stage) پردازش میکند؛ این ویژگی انقلابی باعث میشود YOLO برای پردازش ویدیو و تشخیص بلادرنگ (Real-time) کاملاً ایدهآل باشد.
ظهور YOLO: تشخیص اشیا بهعنوان یک مسئلهی رگرسیون
در سال ۲۰۱۵، جوزف ردمون (Joseph Redmon) با معرفی YOLO (You Only Look Once) انقلابی در این عرصه ایجاد کرد. بهجای تکیه بر کلاسیفایرهای پیدرپی، YOLO تشخیص اشیا را یک مسئلهی رگرسیون میبیند: مستقیماً از پیکسلهای تصویر به مختصات باکسها و احتمال کلاسها میرسد. نام YOLO هم از همینجا میآید یعنی برای تشخیص همهی اشیای یک تصویر، فقط یکبار به آن نگاه میکنیم، برخلاف DPM و R-CNN که بارها روی تصویر پیمایش میکنند.

ساختار YOLO شگفتانگیز ساده است: یک شبکهی کانولوشنی واحد، با تقسیم تصویر به شبکهای از سلولها (Grid Cells)، همزمان کلاس شیء و مختصات کادر احاطهکننده (Bounding Box) را پیشبینی میکند. این شبکه روی تصاویر کامل آموزش میبیند و مستقیماً برای بهبود دقت تشخیص بهینه میشود.
معماری اصلی YOLO: نگاهی به درون مدل
معماری YOLO از سه بخش اصلی تشکیل شده است:
۱. شبکه استخراج ویژگی (Backbone)
در YOLO v1، شبکه استخراج ویژگی از معماری الهامگرفته از Darknet استفاده میکند و شامل:
- ۲۴ لایه کانولوشن
- ۴ لایه Max-Pooling
- ۲ لایه تماممتصل یا Fully Connected
ابتدا تصویر ورودی به ابعاد زیر تغییر اندازه داده میشود 448×448 سپس تصویر از لایههای کانولوشن عبور میکند تا ویژگیهای مهم آن، مانند لبهها، بافتها، شکل اجسام و الگوهای پیچیدهتر استخراج شوند.
در این معماری، کانولوشنهای برای کاهش تعداد کانالها و کمکردن هزینه محاسباتی استفاده میشوند. کانولوشنهای نیز وظیفه استخراج ویژگیهای عمیقتر و فضایی را بر عهده دارند.
تابع فعالسازی مورد استفاده در YOLO v1، Leaky ReLU است و لایه خروجی از فعالسازی خطی استفاده میکند. همچنین برای کاهش بیشبرازش، در لایه تماممتصل اول از Dropout استفاده شده است.
نکته: Residual Block و Batch Normalization جزو معماری اصلی YOLO v1 نیستند و در نسخههای جدیدتر خانواده YOLO بیشتر دیده میشوند.

در وحله اول هر تصویر به ابعاد 448 در 448 تغییر سایز داده می شود و پس از اعمال لایه های کانولشنی خروجی نهایی شبکه استخراج ویزگی یک تنسور با ابعاد S×S×(B×5+C) خواهد بود.
۲. پیشبینی همزمان (Detection Head)
بعد از اینکه تصویر وارد شبکه Darknet میشود، لایههای کانولوشنی بهتدریج ویژگیهای تصویر را استخراج میکنند و در نهایت شبکه یک خروجی با ابعاد S×S×(B×5+C)تولید میکند.
- 𝑆 : تعداد سلولهای شبکه (49= 7×7 )
- 𝐵 : تعداد کادرهای احاطهکننده (Bounding Box) پیشبینیشده توسط هر سلول
- 𝐶 : تعداد کلاسهای قابل تشخیص

- هر کادر شامل ۵ پارامتر است: x وy (مرکز کادر نسبت به مرزهای هر سلول)، w و h (عرض و ارتفاع کادر نسبت به کل تصویر) وP0 (شاخص اطمینان یا Confidence).
به زبان ساده تر
شبکه در خروجی خود 7×7 معادل 49 سلول پیشبینی دارد و هر سلول نمایندهی یک ناحیه از تصویر ورودی است. عدد 30 نیز نشاندهنده اطلاعاتی است که برای هر سلول پیشبینی میشود. در YOLO v1 هر سلول 2 کادر محدودکننده پیشبینی میکند و برای هر کادر 5 مقدار شامل مختصات مرکز کادر، عرض، ارتفاع و confidence در نظر گرفته میشود، یعنی در مجموع 10 مقدار. علاوه بر این، 20 مقدار هم برای احتمال کلاسها در دیتاست Pascal VOC پیشبینی میشود. بنابراین برای هر سلول داریم 30 مقدار و در کل خروجی شبکه برابر با 7×7×30 است. پس این تنسور نهایی مستقیماً بیان میکند که در هر ناحیه از تصویر چه شیئی ممکن است وجود داشته باشد، مکان آن کجاست و مدل با چه اطمینانی آن را تشخیص داده است.
شاخص اطمینان نشان میدهد که شبکه چقدر مطمئن است که درون کادر یک شیء وجود دارد و چقدر کادرِ کشیدهشده بر روی شیءِ واقعی منطبق است:
که در آن P(Object) احتمال وجود شیء در کادر است و IOU (اشتراک روی اجتماع) میزان همپوشانی کادر پیشبینیشده با کادر واقعی است.

بنابراین این رویکرد تکمرحلهای (Single-Stage) سرعت پردازش را به ۴۵ فریم در ثانیه (FPS) و در نسخههای سریعتر Fast YOLO به ۱۵۵ فریم در ثانیه رساند.
۳. سرکوب غیرحداکثری NMS
حتی پس از محاسبه IoU، ممکن است چند کادر با احتمال بالا یک شیء واحد را پوشش دهند. اگر همه آنها حفظ شوند، خروجی مدل شامل کادرهای تکراری خواهد بود.برای حل این مسئله از الگوریتم Non-Maximum Suppression یا NMS استفاده میشود:
- کادری با بیشترین Confidence انتخاب میشود.
- IoU سایر کادرها با کادر انتخابشده محاسبه میشود.
- کادرهایی که IoU آنها از یک آستانه مشخص بیشتر است، حذف میشوند.
- این فرایند تا انتخاب کادرهای نهایی ادامه پیدا میکند.
در نتیجه، برای هر شیء معمولاً تنها یک Bounding Box با بیشترین اطمینان باقی میماند.
4. تابع هزینه (Loss Function)
چالش اصلی YOLO چگونگی فرمولبندی خطاها بود. YOLO v1 از تابع خطای میانگین مربعات (MSE) استفاده میکند اما برای تعادل میان خطای کادرهایی که شیء دارند و کادرهایی که خالی هستند، ضریبهای وزنی را معرفی کرد.تابع اتلاف کل به صورت زیر تعریف میشود:
فرمول باز شده و کامل:
- بخش اول (Coordination): خطای مکانیابی مرکز و ابعاد کادرها (فقط برای کادرهایی محاسبه میشود که شیء واقعی در آنها قرار دارد. استفاده از جذر به این دلیل است که خطاهای کوچک در کادرهای کوچک، اهمیت بیشتری نسبت به همان میزان خطا در کادرهای بزرگ داشته باشند.
- بخش دوم (Object Confidence): میزان خطای اطمینان از وجود شیء در کادرهای حاوی اشیاء.
- بخش سوم (No-Object Confidence): خطای اطمینان برای کادرهای خالی از شیء که با ضریب کاهنده جریمه میشود تا اثر کلاسهای اکثریت (پسزمینه خالی) کنترل شود.
- بخش چهارم (Classification): خطای دستهبندی کلاس شیء در صورت حضور شیء در سلول.
چالشها و محدودیتها نسخه اولیه
- اشیاء بسیار کوچک: شناسایی اشیاء ریز در تصاویر شلوغ همچنان چالشبرانگیز است.
- همپوشانی شدید (Occlusion): در صورت قرارگیری چندین شیء روی هم، احتمال افت دقت وجود دارد.
- حساسیت به توزیع دادهها: عملکرد مدل به شدت به متوازن بودن کلاسها در دیتاست آموزشی وابسته است.
جدول مقایسه سیر تکامل نسخههای YOLO
الگوریتم YOLO از نسخه v1 تا نسخههای مدرنی مثل v11، با عبور از معماریهای تکمرحلهای ساده به سمت استفاده از قابلیتهای پیشرفتهای چون Backboneهای بهینهتر، مدولهای توجه (Attention) و سیستمهای Anchor-free حرکت کرده است. این سیر تکاملی باعث شده تا مدلها به تعادلی بینظیر میان سرعت پردازش بلادرنگ (Real-time) و دقت بسیار بالا در تشخیص اشیای کوچک و پیچیده دست یابند.
| نوآوری کلیدی | ویژگی برجسته | نسخه |
|---|---|---|
| معماری تکمرحلهای (Single-Stage) | سرعت بیسابقه (45 FPS) | YOLOv1-2015 |
| معرفی Anchor Boxes و Batch Normalization | دقت بالاتر، تشخیص ۹۰۰۰ کلاس | YOLOv2-2016 |
| شبکه Darknet-53 و پیشبینی در ۳ مقیاس | بهبود چشمگیر در تشخیص اشیاء کوچک | YOLOv3-2018 |
| معماری CSPDarknet53 و تکنیک Mosaic Augment | تعادل بهینه بین سرعت و دقت (mAP) | YOLOv4-2020 |
| پیادهسازی رسمی در PyTorch و خروجی چندفرمت | توسعه و استقرار فوقالعاده آسان در صنعت | YOLOv5-2020 |
| معماری E-ELAN و مدیریت حافظه بهینه | سرعت استنتاج عالی در کاربردهای صنعتی | YOLOv6 / v7-2022 |
| معماری بدون Anchor و ساختار C2f | پشتیبانی از Segmentation، Tracking و Pose | YOLOv8-2023 |
| معرفی PGI و معماری GELAN | حفظ اطلاعات گرادیان در لایههای عمیق | YOLOv9-2024 |
| حذف نیاز به NMS (Consistent Dual Assignment) | کاهش تاخیر استنتاج و افزایش سرعت | YOLOv10-2024 |
| بهینهسازی لایه C3k2 و پشتیبانی از OBB | دقت فوقالعاده در تصاویر هوایی و کادرهای چرخیده | YOLOv11-2024/2025 |
کاربردهای کلیدی در دنیای واقعی
- خودروهای خودران: تشخیص بلادرنگ عابران پیاده، خودروها و علائم راهنمایی.
- پزشکی و سلامت: غربالگری اولیه تومورها در تصاویر MRI/CT و شمارش سلولهای خونی.
- صنعت و تولید هوشمند: کنترل کیفیت خطوط تولید، شمارش قطعات و نظارت بر ایمنی کارگران.
- کشاورزی هوشمند: تشخیص آفات، پایش رشد محصولات و تخمین میزان باردهی با پهپاد.
- شهرهای هوشمند: نظارت تصویری، کنترل ترافیک و مدیریت پارکینگها.
جمع بندی
تشخیص اشیا پیش از ظهور YOLO فرآیندی دو مرحلهای، پیچیده و کند بود که بر پایه کلاسیفایرها و پنجرههای لغزان عمل میکرد. الگوریتم YOLO با نگاهی نو، این فرآیند را به یک مسئله رگرسیون تکمرحلهای تبدیل کرد که در آن تصویر تنها با یک بار عبور از شبکه، مستقیماً به کادرهای محدودکننده و احتمال کلاسها تبدیل میشود. معماری YOLO v1 با استفاده از شبکه Darknet و تقسیم مفهومی تصویر به شبکه، سرعت بینظیر ۴۵ فریم بر ثانیه را محقق کرد. سیر تکاملی این مدل از نسخه ۱ تا ۱۱، با بهینهسازی استخراج ویژگیها و حذف گلوگاههای محاسباتی، آن را به استانداردی طلایی برای کاربردهای بلادرنگ در پزشکی، صنعت و خودروهای خودران تبدیل کرده است.
