مقدمه ای بر الگوریتم یولو

YOLO (مخفف You Only Look Once به‌معنای «فقط یک‌بار نگاه کن») سیستم‌های تشخیص شیء بلادرنگ هستند که با فقط یک‌بار پردازش تصویر، قادر به شناسایی و طبقه‌بندی اشیاء موجود در آن هستند. به‌عبارت دیگر، مدل فقط یک‌بار به تصویر نگاه می‌کند و از همین «عبور واحد» می‌تواند تمام اشیاء موجود در تصویر را تشخیص دهد. این رویکرد با مدل‌های پیشین تفاوت دارد، چرا که آن‌ها برای پردازش یک تصویر، به چندین مرحله یا عبور مجزا نیاز داشتند. از آنجا که این فرآیند به‌صورت بلادرنگ انجام می‌شود، سرعت عملکرد آن بسیار بالا است.

در تشخیص شیء، YOLO نه‌تنها می‌تواند مکان دقیق شیء در تصویر را مشخص کند، بلکه قادر است نوع شیء را نیز تعیین نماید. این فرآیند با عبور تصویر از یک شبکه عصبی انجام می‌شود که به مدل امکان می‌دهد تمام اشیاء موجود را به‌طور هم‌زمان تشخیص دهد. با بهره‌گیری از پیش‌بینی شبکه‌بندی‌شده (grid-based prediction) و پیش‌بینی جعبه محدودکننده (bounding box)، مدل می‌تواند تشخیص دهد که آیا شیء خاصی در یک سلول یا جعبه مشخص قرار دارد یا خیر. همچنین، YOLO از احتمال کلاس (class probability) برای پیش‌بینی نوع شیء استفاده می‌کند، که به‌کمک آن، مدل می‌تواند تعیین کند شیء واقعاً چیست.

YOLO در مقایسه با روش‌های پیشین، مزایای متعددی دارد. همان‌طور که اشاره شد، این مدل بسیار سریع است و به همین دلیل می‌توان از آن در کاربردهایی مانند خودروهای خودران و نظارت تصویری بلادرنگ بهره گرفت. علاوه بر این، YOLO دارای دقت بالا است، به‌ویژه در مواجهه با تصاویر طبیعی، و به‌دلیل تحلیل کل تصویر در یک مرحله، دارای خطاهای مثبت کاذب کمتری است؛ عاملی که موجب دقت زمینه‌ای (contextual accuracy) بیشتر در تشخیص می‌شود.

data2learn.ir

تشخیص اشیاء (Object Detection) چیست؟

تشخیص اشیاء یکی از وظایف کلیدی در حوزه بینایی ماشین (Computer Vision) است که شامل شناسایی نوع اشیاء و مشخص کردن محل دقیق آن‌ها در تصاویر یا ویدیوها می‌شود. این فناوری نقش بسیار مهمی در کاربردهای مختلف مانند نظارت تصویری، خودروهای خودران و رباتیک دارد.

 

انواع الگوریتم‌های تشخیص شیء

الگوریتم‌های تشخیص اشیاء به‌طور کلی به دو دسته اصلی تقسیم می‌شوند:

  1. الگوریتم‌های تک‌مرحله‌ای (Single-Shot Detectors)
    مثل YOLO و SSD که فقط با یک بار عبور تصویر از شبکه، اشیاء را شناسایی و مکان‌یابی می‌کنند. این روش‌ها بسیار سریع هستند و برای پردازش بلادرنگ مناسب‌اند.
  2. الگوریتم‌های دومرحله‌ای (Two-Stage Detectors)
    مثل R-CNN و Faster R-CNN که ابتدا نواحی پیشنهادی برای حضور شیء را استخراج می‌کنند و سپس در مرحله دوم نوع و مکان آن‌ها را مشخص می‌سازند. این روش‌ها معمولاً دقت بالاتری دارند، اما کندتر هستند.

 

الگوریتم YOLO که توسط Joseph Redmon و همکارانش توسعه یافته، تشخیص اشیاء را به‌عنوان یک مسئله رگرسیون (Regression) در نظر می‌گیرد. در این روش، مدل تلاش می‌کند تا مستقیماً مختصات مکانی جعبه‌های محدودکننده (Bounding Boxes) و احتمال کلاس مربوط به هر شیء را پیش‌بینی کند. یکی از ویژگی‌های کلیدی YOLO این است که در زمان تست (Test Time)، به کل تصویر به‌صورت یک‌جا نگاه می‌کند. به همین دلیل، پیش‌بینی‌های آن تحت تأثیر زمینه کلی تصویر (Global Context) قرار می‌گیرند، نه فقط اطلاعات محلی یا بخشی از تصویر. YOLO به‌خاطر سرعت بسیار بالای پردازش معروف است و همین ویژگی باعث شده تا گزینه‌ای ایده‌آل برای کاربردهای بلادرنگ (Real-Time) مانند دوربین‌های نظارتی یا خودروهای خودران باشد.

 

در ادامه، فرآیند کلی YOLO را گام‌به‌گام بررسی می‌کنیم:

 

  • تقسیم تصویر به شبکه (Grid Division)

تصویر ورودی به YOLO به یک شبکه مربعی یا درواقع همان ماتریس (مثلاً 7×7 یا 13×13 بسته به نسخه مدل) تقسیم می‌شود. هر سلول (Cell) از این شبکه، مسئول بررسی وجود شیء در ناحیهٔ خود است.

 

  • پیش‌بینی جعبه‌ها (Bounding Box Prediction)

برای هر سلول شبکه، مدل تعدادی جعبه پیشنهادی (Anchor Boxes) تولید می‌کند. برای هر جعبه، مدل پیش‌بینی می‌کند:

  • مختصات مرکز (x, y)
  • عرض و ارتفاع (w, h)
  • امتیاز اطمینان (Confidence Score)
data2learn.ir

 

  • پیش‌بینی کلاس (Class Prediction)

برای هر جعبه پیشنهادی، مدل احتمال تعلق آن به کلاس‌های مختلف (مثلاً شخص، ماشین، حیوان و ...) را پیش‌بینی می‌کند. این پیش‌بینی‌ها با امتیاز اطمینان ترکیب می‌شوند تا خروجی نهایی به‌دست آید.

پس از آنکه YOLO در هر سلول از تصویر چندین جعبه پیش‌بینی (Bounding Box) همراه با امتیاز اطمینان و احتمال کلاس تولید می‌کند، لازم است خروجی‌ها پاک‌سازی و فیلتر شوند تا فقط نتایج دقیق و مفید باقی بمانند.

این مرحله بسیار حیاتی است، زیرا YOLO ممکن است برای یک شیء چندین پیش‌بینی با جعبه‌های هم‌پوشان داشته باشد یا حتی پیش‌بینی‌های اشتباه با اطمینان پایین تولید کند لزا فیلتر گذاری ضروری است..

1. Thresholding (آستانه‌گذاری امتیاز اطمینان)

هر جعبه پیش‌بینی دارای یک مقدار به نام Confidence Score است که نشان می‌دهد چقدر مدل به وجود شیء در آن مکان اطمینان دارد.

  • اگر این امتیاز از یک آستانه مشخص (مثلاً 0.5) کمتر باشد، آن جعبه رد می‌شود.
  • این کار باعث می‌شود فقط جعبه‌هایی با احتمال بالا باقی بمانند.

 نتیجه: حذف پیش‌بینی‌های ضعیف یا تصادفی

 

2. Non-Maximum Suppression (NMS)

در بسیاری از موارد، مدل ممکن است برای یک شیء چندین جعبه هم‌پوشان با امتیاز بالا تولید کند. برای حل این مشکل از NMS استفاده می‌شود.

نحوه عملکرد:

  • از بین جعبه‌های پیش‌بینی‌شده برای یک کلاس خاص، جعبه‌ای با بالاترین امتیاز اطمینان انتخاب می‌شود.
  • سپس جعبه‌های دیگر که هم‌پوشانی زیادی با آن دارند (بر اساس معیار IoU)، حذف می‌شوند.
  • این روند تا زمانی ادامه دارد که هیچ جعبه هم‌پوشانی باقی نماند.

معیار کلیدی NMS:

  • IoU (Intersection over Union): نسبت مساحت اشتراک دو جعبه به مساحت کل آن‌ها.
  • جعبه‌هایی با IoU بالاتر از یک آستانه (مثلاً 0.5) حذف می‌شوند.

 نتیجه: برای هر شیء فقط یک جعبه نهایی باقی می‌ماند.

data2learn.ir

انواع مدل‌های YOLO (You Only Look Once)

از زمان معرفی اولیه YOLO در سال 2016 تا امروز، نسخه‌های مختلفی از این الگوریتم توسعه یافته‌اند که هرکدام بهبودهایی در دقت، سرعت، معماری و قابلیت استفاده داشته‌اند. در ادامه، مروری بر مهم‌ترین نسخه‌های YOLO داریم که به اختصار توضیحات و بنچمارک آن در جدول زیر ذکر شده است:

نسخه YOLOویژگی کلیدیسطح دقتسرعتوضعیت
YOLOv1اولین نسخه، سریع اما دقت کم⭐️⭐️⚡⚡⚡پایه
YOLOv2پشتیبانی از ۹۰۰۰ کلاس⭐️⭐️⭐️⚡⚡⚡پیشرفته‌تر
YOLOv3چندمقیاسی، دقیق‌تر⭐️⭐️⭐️⭐️⚡⚡پرکاربرد
YOLOv4بهینه‌شده برای واقعیت⭐️⭐️⭐️⭐️⭐️⚡⚡⚡حرفه‌ای
YOLOv5پایتورچی، نسخه‌های متنوع⭐️⭐️⭐️⭐️⚡⚡⚡محبوب
YOLOv6سبک، مخصوص Edge⭐️⭐️⭐️⚡⚡⚡⚡سریع و صنعتی
YOLOv7پشتیبانی از چند تسک⭐️⭐️⭐️⭐️⭐️⚡⚡⚡جامع
YOLOv8مدرن، ساده در راه‌اندازی⭐️⭐️⭐️⭐️⭐️⚡⚡⚡⚡توصیه‌شده
YOLO-NASمعماری بهینه‌شده با NAS⭐️⭐️⭐️⭐️⭐️⚡⚡⚡⚡هوشمند
YOLO‑Worldتشخیص کلاس باز⭐️⭐️⭐️⭐️⭐️⚡⚡⚡نوآورانه
منبع: data2learn.ir
data2learn.ir

برای یادگیری یا توسعه پروژه‌ها، نسخه‌های YOLOv5 و YOLOv8 گزینه‌های ایده‌آل هستند. نسخه‌های جدید مانند YOLO-NAS و YOLO-World نیز برای کاربردهای خاص و پیشرفته پیشنهاد می‌شوند.

 

جمع‌بندی

الگوریتم YOLO یکی از سریع‌ترین و مؤثرترین روش‌ها برای تشخیص اشیاء بلادرنگ در دنیای هوش مصنوعی است. از YOLOv1 تا YOLOv11 و YOLO-NAS، این مدل‌ها پیوسته بهبود یافته‌اند تا نیازهای مختلف در صنایع مختلف از جمله نظارت تصویری، خودروهای خودران، تحلیل ویدیو، رباتیک و بسیاری از حوزه‌های دیگر را برآورده کنند.

انتخاب نسخه مناسب از YOLO بستگی به پروژه‌ی شما دارد. اگر نیاز به سرعت بالا و راه‌اندازی ساده دارید، YOLOv5 و YOLOv8 گزینه‌های مناسبی هستند. اگر با Edge Deviceها کار می‌کنید، YOLOv6، و اگر به دنبال قابلیت‌های پیشرفته‌تر هستید، YOLO-World می‌تواند انتخاب مناسبی باشد.

در ادامه، آموزش مرحله‌به‌مرحله‌ی پیاده‌سازی و آموزش مدل YOLOv8 برای تشخیص اشیاء را بررسی خواهیم کرد. اگر به دنبال ورود عملی به دنیای بینایی ماشین و توسعه سیستم‌های هوشمند هستید، این آموزش نقطه‌ی شروعی فوق‌العاده برای شما خواهد بود.

 

برای دسترسی به آموزش YOLO همراه با کدنویسی پایتون، دیتاست، و تمرین‌های پروژه‌محور، می‌توانید صفحه‌ی دوره‌های ما را بررسی کنید
                                                             مشاهده دوره‌های آموزش هوش مصنوعی