Object Detection با YOLO و FCN | mAP، NMS و DeepSORT

Object Detection، FCN، YOLO، mAP و Object Tracking

توسط admin | گروه هوش مصنوعی | 1405/06/01

نظرات 0

Object Detection، FCN، YOLO، mAP و Object Tracking

کتاب
Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow
بخش منبع
Object Detection; Sliding CNN; Fully Convolutional Networks; YOLO; Average Precision and mAP; TensorFlow Hub Detectors; Object Tracking; DeepSORT
صفحات این PDF
121-128
صفحات چاپی کتاب
523-530
جایگاه در مجموعه
بخش ۵۹ از مجموعهٔ Machine_Learning_405_06؛ مادر: Machine_Learning_405_06_01.html

Object Detection

در Object Detection، Model باید هم‌زمان چند Object را پیدا کند، Class هرکدام را تشخیص دهد و Bounding Box بدهد. یک روش ابتدایی این است که CNN طبقه‌بندی/Localization تک‌Object را با Windowهای مختلف روی Image بلغزانیم. هر Window بخشی از Image را بررسی می‌کند و اگر Object وجود داشته باشد Class و Box را Predict می‌کند.

حرکت CNN روی Grid تصویر برای یافتن چند bounding box
شکل 14-25. تشخیص چند Object با Sliding CNN

مشکل Sliding Window هزینهٔ بسیار بالاست: برای Position و Scaleهای متعدد باید Forward Pass جدا انجام شود. Detectionهای متعدد و هم‌پوشان نیز باید Consolidate شوند، معمولاً با Threshold بر Confidence و Non-Max Suppression یا NMS بر اساس IoU.

Fully Convolutional Network

راه بسیار سریع‌تر تبدیل Dense Layerهای انتهایی به Convolution است. Dense Layerی که روی Feature Map با اندازهٔ ثابت کار می‌کند، معادل Convolution با Kernelی هم‌اندازهٔ Spatial Input آن است. پس از این تبدیل، Network می‌تواند Image با Size بزرگ‌تر را در یک Forward Pass پردازش کند و Gridی از Predictionها تولید کند.

برای مثال اگر Network روی Image کوچک یک Output تک‌Cell داشته باشد، با Input دوبرابر ممکن است Output به Grid چندسلولی تبدیل شود. هر Cell همان Classifier/Localizer را روی Receptive Field متفاوتی اجرا می‌کند و Weightها مشترک‌اند.

تبدیل dense به convolution برای تولید grid prediction در FCN
شکل 14-26. اجرای Fully Convolutional Network روی Image کوچک و بزرگ

این ایده پایهٔ بسیاری از Detectorهای One-Stage است.

You Only Look Once - YOLO

YOLO Detection را در یک Forward Pass انجام می‌دهد. Image به Grid تقسیم می‌شود و هر Cell Predictionهایی برای Objectهایی که مرکز آن‌ها در Cell قرار دارد تولید می‌کند. Output معمولاً شامل موارد زیر است:

  • Objectness Score یا احتمال وجود Object؛
  • مختصات Bounding Box نسبت به Cell/Grid؛
  • Class Probability Distribution؛
  • چند Box Candidate یا Anchor برای Shapeهای مختلف Object.

نسخه‌های مختلف YOLO در طول زمان Architecture، Anchor Strategy، Feature Pyramid، Loss و Training Trickهای مختلفی اضافه کرده‌اند و Trade-off بسیار خوبی میان Speed و Accuracy ایجاد کرده‌اند. YOLOv2/v3/9000 و نسل‌های بعدی توسط گروه‌ها و پیاده‌سازی‌های متفاوت توسعه یافته‌اند.

پس از Raw Prediction معمولاً Boxهای با Confidence پایین حذف و NMS اجرا می‌شود. اگر دو Box Class یکسان IoU بالایی داشته باشند، Box ضعیف‌تر حذف می‌شود تا Duplicate Detection کم شود.

Precision، Recall، AP و mAP در Detection

در Detection، تعریف True Positive علاوه بر Class درست به Localization مناسب وابسته است. معمولاً یک IoU Threshold تعیین می‌شود؛ اگر Prediction Class صحیح داشته باشد و IoU از Threshold بالاتر باشد، True Positive محسوب می‌شود. Detection اضافی False Positive و Object جاافتاده False Negative است.

با تغییر Confidence Threshold، Precision و Recall تغییر می‌کنند. Average Precision یا AP کیفیت Precision-Recall Curve را برای یک Class خلاصه می‌کند و mean Average Precision یا mAP میانگین AP در Classهاست. Benchmarkها ممکن است AP را در چند IoU Threshold محاسبه کنند؛ بنابراین هنگام مقایسهٔ Modelها باید Protocol Metric دقیق را بررسی کرد.

TensorFlow Hub Modelهای Detection متعددی دارد؛ Familyهایی مانند EfficientDet، Faster R-CNN و SSD Trade-offهای متفاوتی میان Latency و Accuracy ارائه می‌کنند.

Object Tracking

Detection روی Frameهای مستقل، Identity Object را در طول Video حفظ نمی‌کند. Object Tracking باید بگوید Detection فعلی مربوط به کدام Object قبلی است، حتی وقتی Object حرکت می‌کند، موقتاً Occlude می‌شود یا ظاهرش کمی تغییر می‌کند.

یکی از Trackerهای معروف DeepSORT است. ایدهٔ اصلی آن ترکیب اطلاعات Motion و Appearance است:

  • یک Detector در هر Frame Bounding Boxها را پیدا می‌کند؛
  • Kalman Filter Location آیندهٔ Track را بر اساس Motion گذشته تخمین می‌زند؛
  • یک Deep Network برای هر Detection Embedding ظاهری می‌سازد تا شباهت Objectها اندازه‌گیری شود؛
  • سپس Assignment Algorithm Detectionهای جدید را به Trackهای موجود Match می‌کند.

جزئیات Matching و Hungarian Algorithm و سپس Pixel-Level Segmentation در مقالهٔ بعد ادامه می‌یابد.

امتیاز کاربران به این مقاله

☆☆☆☆☆

0 نفر امتیاز داده اند. میانگین: 0.0 از 5

 

0 نظر

نظر محترم شما در مورد مقاله های وب سایت برنامه نویسی و پایگاه داده

نظرات محترم شما در خدمات رسانی بهتر ما را یاری می نمایند. لطفا اگر مایل بودید یک نظر ما را مهمان فرمائید. آدرس ایمیل و وب سایت شما نمایش داده نخواهد شد.

0 / 500

اطلاعات تماس

  • آدرس:اصفهان-خیابان ام کلثوم غربی - بعد خیابان تخم چی - بیست متر بعد از پیتزا ننه شب - کوچه تعمیر گاه سمار زغالی - پلاک 354 - درب مشکی - طبقه هفتم
  • آدرس ایمیل:najafzade@gmail.com
  • وب سایت:http://www.a00b.com/
  • تلفن ثابت:(+98)9131253620
  • تلفن همراه:09131253620