AI-For-Beginners/translations/fa/lessons/4-ComputerVision/11-ObjectDetection/README.md

16 KiB
Raw Blame History

تشخیص اشیاء

مدل‌های دسته‌بندی تصویر که تاکنون با آن‌ها کار کرده‌ایم، یک تصویر را گرفته و یک نتیجه‌ی دسته‌بندی، مانند کلاس "عدد" در مسئله‌ی MNIST، تولید می‌کردند. اما در بسیاری از موارد، ما فقط نمی‌خواهیم بدانیم که یک تصویر اشیاء را نشان می‌دهد - بلکه می‌خواهیم مکان دقیق آن‌ها را نیز تعیین کنیم. این دقیقاً هدف تشخیص اشیاء است.

پیش‌سوالات درس

تشخیص اشیاء

تصویر از وب‌سایت YOLO v2

یک رویکرد ساده برای تشخیص اشیاء

فرض کنید می‌خواهیم یک گربه را در یک تصویر پیدا کنیم. یک رویکرد بسیار ساده برای تشخیص اشیاء می‌تواند به صورت زیر باشد:

  1. تصویر را به تعدادی کاشی تقسیم کنیم.
  2. دسته‌بندی تصویر را روی هر کاشی اجرا کنیم.
  3. کاشی‌هایی که نتیجه‌ی فعال‌سازی کافی بالایی دارند، می‌توانند حاوی شیء مورد نظر باشند.

تشخیص ساده

تصویر از دفترچه تمرین

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

رگرسیون برای تشخیص اشیاء

این پست وبلاگ مقدمه‌ای عالی و ساده برای تشخیص اشکال ارائه می‌دهد.

مجموعه داده‌ها برای تشخیص اشیاء

ممکن است با مجموعه داده‌های زیر برای این کار مواجه شوید:

  • PASCAL VOC - شامل ۲۰ کلاس
  • COCO - اشیاء رایج در زمینه. شامل ۸۰ کلاس، جعبه‌های محدودکننده و ماسک‌های تقسیم‌بندی

COCO

معیارهای تشخیص اشیاء

تلاقی بر اتحاد (IoU)

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

IoU

شکل ۲ از این پست وبلاگ عالی درباره‌ی IoU

ایده ساده است - مساحت تلاقی بین دو شکل را بر مساحت اتحاد آن‌ها تقسیم می‌کنیم. برای دو ناحیه‌ی یکسان، IoU برابر ۱ خواهد بود، در حالی که برای نواحی کاملاً جدا از هم، IoU برابر ۰ خواهد بود. در غیر این صورت، مقدار IoU بین ۰ تا ۱ متغیر خواهد بود. معمولاً فقط جعبه‌های محدودکننده‌ای را در نظر می‌گیریم که IoU آن‌ها بالاتر از یک مقدار مشخص باشد.

دقت میانگین (Average Precision)

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

  1. منحنی دقت-بازخوانی (Precision-Recall) را در نظر بگیرید که دقت را بر اساس مقدار آستانه‌ی تشخیص (از ۰ تا ۱) نشان می‌دهد.
  2. بسته به آستانه، تعداد بیشتری یا کمتری از اشیاء در تصویر شناسایی می‌شوند و مقادیر مختلفی از دقت و بازخوانی به دست می‌آید.
  3. منحنی به این شکل خواهد بود:

تصویر از NeuroWorkshop

دقت میانگین برای یک کلاس خاص C مساحت زیر این منحنی است. به طور دقیق‌تر، محور بازخوانی معمولاً به ۱۰ قسمت تقسیم می‌شود و دقت در تمام این نقاط میانگین‌گیری می‌شود:


AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10})

AP و IoU

ما فقط آن دسته از تشخیص‌ها را در نظر خواهیم گرفت که IoU آن‌ها بالاتر از یک مقدار مشخص باشد. برای مثال، در مجموعه داده‌ی PASCAL VOC معمولاً \mbox{IoU Threshold} = 0.5 فرض می‌شود، در حالی که در COCO، AP برای مقادیر مختلف \mbox{IoU Threshold} اندازه‌گیری می‌شود.

تصویر از NeuroWorkshop

دقت میانگین کلی - mAP

معیار اصلی برای تشخیص اشیاء دقت میانگین کلی یا mAP نامیده می‌شود. این مقدار دقت میانگین است که به طور میانگین در تمام کلاس‌های اشیاء و گاهی نیز بر اساس \mbox{IoU Threshold} محاسبه می‌شود. جزئیات بیشتر درباره‌ی فرآیند محاسبه‌ی mAP در این پست وبلاگ و همچنین اینجا با نمونه کد توضیح داده شده است.

روش‌های مختلف تشخیص اشیاء

دو دسته کلی از الگوریتم‌های تشخیص اشیاء وجود دارد:

  • شبکه‌های پیشنهاد ناحیه (R-CNN، Fast R-CNN، Faster R-CNN). ایده اصلی این است که ناحیه‌های مورد علاقه (ROI) تولید شوند و CNN روی آن‌ها اجرا شود تا بیشترین فعال‌سازی پیدا شود. این روش کمی شبیه به رویکرد ساده است، با این تفاوت که ROIها به روشی هوشمندانه‌تر تولید می‌شوند. یکی از معایب اصلی این روش‌ها این است که کند هستند، زیرا نیاز به چندین بار عبور از طبقه‌بندی‌کننده‌ی CNN روی تصویر دارند.
  • روش‌های یک‌مرحله‌ای (YOLO، SSD، RetinaNet). در این معماری‌ها، شبکه به گونه‌ای طراحی شده است که هم کلاس‌ها و هم ROIها را در یک مرحله پیش‌بینی کند.

R-CNN: شبکه‌ی کانولوشنی مبتنی بر ناحیه

R-CNN از جستجوی انتخابی برای تولید ساختار سلسله‌مراتبی ناحیه‌های ROI استفاده می‌کند که سپس از طریق استخراج‌کننده‌های ویژگی CNN و طبقه‌بندی‌کننده‌های SVM عبور داده می‌شوند تا کلاس شیء تعیین شود و از رگرسیون خطی برای تعیین مختصات جعبه‌ی محدودکننده استفاده شود. مقاله رسمی

RCNN

تصویر از van de Sande et al. ICCV11

RCNN-1

تصاویر از این وبلاگ

F-RCNN - Fast R-CNN

این روش مشابه R-CNN است، اما ناحیه‌ها پس از اعمال لایه‌های کانولوشنی تعریف می‌شوند.

FRCNN

تصویر از مقاله رسمی، arXiv، ۲۰۱۵

Faster R-CNN

ایده اصلی این روش استفاده از شبکه‌ی عصبی برای پیش‌بینی ROIها است - به اصطلاح شبکه‌ی پیشنهاد ناحیه. مقاله، ۲۰۱۶

FasterRCNN

تصویر از مقاله رسمی

R-FCN: شبکه‌ی کاملاً کانولوشنی مبتنی بر ناحیه

این الگوریتم حتی سریع‌تر از Faster R-CNN است. ایده اصلی به شرح زیر است:

  1. ویژگی‌ها با استفاده از ResNet-101 استخراج می‌شوند.
  2. ویژگی‌ها توسط نقشه‌ی امتیاز حساس به موقعیت پردازش می‌شوند. هر شیء از کلاس‌های C به نواحی k\times k تقسیم می‌شود و ما برای پیش‌بینی بخش‌های اشیاء آموزش می‌بینیم.
  3. برای هر بخش از نواحی k\times k، تمام شبکه‌ها برای کلاس‌های اشیاء رأی می‌دهند و کلاسی که بیشترین رأی را دارد انتخاب می‌شود.

r-fcn image

تصویر از مقاله رسمی

YOLO - فقط یک بار نگاه کن

YOLO یک الگوریتم یک‌مرحله‌ای بلادرنگ است. ایده اصلی به شرح زیر است:

  • تصویر به نواحی S\times S تقسیم می‌شود.
  • برای هر ناحیه، CNN n شیء ممکن، مختصات جعبه‌ی محدودکننده و اعتماد = احتمال * IoU را پیش‌بینی می‌کند.

YOLO

تصویر از مقاله رسمی

سایر الگوریتم‌ها

✍️ تمرین‌ها: تشخیص اشیاء

یادگیری خود را در دفترچه زیر ادامه دهید:

ObjectDetection.ipynb

نتیجه‌گیری

در این درس، مروری سریع بر روش‌های مختلفی که می‌توان برای تشخیص اشیاء استفاده کرد، داشتید!

🚀 چالش

این مقالات و دفترچه‌ها درباره‌ی YOLO را بخوانید و خودتان امتحان کنید:

پس‌سوالات درس

مرور و مطالعه شخصی

تکلیف: تشخیص اشیاء

سلب مسئولیت:
این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه می‌شود از ترجمه حرفه‌ای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.