Skip to content

Latest commit

 

History

History
179 lines (101 loc) · 13 KB

File metadata and controls

179 lines (101 loc) · 13 KB

الكشف عن الكائنات

النماذج التي تعاملنا معها لتصنيف الصور حتى الآن كانت تأخذ صورة وتنتج نتيجة تصنيفية، مثل فئة "الرقم" في مشكلة MNIST. ومع ذلك، في العديد من الحالات، لا نريد فقط معرفة أن الصورة تحتوي على كائنات - بل نريد تحديد موقعها بدقة. وهذا هو الهدف من الكشف عن الكائنات.

الكشف عن الكائنات

الصورة من موقع YOLO v2

نهج بسيط للكشف عن الكائنات

إذا أردنا العثور على قطة في صورة، فإن نهجًا بسيطًا جدًا للكشف عن الكائنات سيكون كالتالي:

  1. تقسيم الصورة إلى عدد من المربعات.
  2. تشغيل تصنيف الصور على كل مربع.
  3. يمكن اعتبار المربعات التي تؤدي إلى تنشيط عالي بما يكفي أنها تحتوي على الكائن المطلوب.

الكشف البسيط عن الكائنات

الصورة من دفتر التمارين

ومع ذلك، هذا النهج بعيد عن المثالية، لأنه يسمح فقط للخوارزمية بتحديد موقع الصندوق المحيط بالكائن بشكل غير دقيق. للحصول على موقع أكثر دقة، نحتاج إلى تشغيل نوع من الانحدار للتنبؤ بإحداثيات الصناديق المحيطة - وللقيام بذلك، نحتاج إلى مجموعات بيانات محددة.

الانحدار للكشف عن الكائنات

هذه المقالة تقدم مقدمة رائعة للكشف عن الأشكال.

مجموعات البيانات للكشف عن الكائنات

قد تصادف مجموعات البيانات التالية لهذه المهمة:

  • PASCAL VOC - 20 فئة
  • COCO - الكائنات الشائعة في السياق. 80 فئة، صناديق محيطة وأقنعة تقسيم

COCO

مقاييس الكشف عن الكائنات

التقاطع على الاتحاد

بينما من السهل قياس أداء الخوارزمية في تصنيف الصور، فإن الكشف عن الكائنات يتطلب قياس صحة الفئة وكذلك دقة موقع الصندوق المحيط المستنتج. بالنسبة للأخير، نستخدم ما يسمى التقاطع على الاتحاد (IoU)، الذي يقيس مدى تداخل صندوقين (أو منطقتين عشوائيتين).

IoU

الشكل 2 من هذه المقالة الممتازة عن IoU

الفكرة بسيطة - نقسم مساحة التقاطع بين شكلين على مساحة اتحادهما. بالنسبة لمنطقتين متطابقتين، سيكون IoU = 1، بينما بالنسبة لمنطقتين منفصلتين تمامًا سيكون 0. بخلاف ذلك، سيتراوح بين 0 و1. عادةً ما نعتبر فقط تلك الصناديق المحيطة التي يكون فيها IoU أعلى من قيمة معينة.

الدقة المتوسطة

لنفترض أننا نريد قياس مدى جودة التعرف على فئة معينة من الكائنات $C$. لقياس ذلك، نستخدم مقاييس الدقة المتوسطة، التي تُحسب كالتالي:

  1. يتم النظر في منحنى الدقة-الاستدعاء الذي يظهر الدقة بناءً على قيمة عتبة الكشف (من 0 إلى 1).
  2. بناءً على العتبة، سنحصل على عدد أكبر أو أقل من الكائنات المكتشفة في الصورة، وقيم مختلفة للدقة والاستدعاء.
  3. سيبدو المنحنى كالتالي:

الصورة من NeuroWorkshop

الدقة المتوسطة لفئة معينة $C$ هي المساحة تحت هذا المنحنى. بشكل أكثر دقة، يتم تقسيم محور الاستدعاء عادةً إلى 10 أجزاء، ويتم حساب متوسط الدقة على جميع هذه النقاط:

$$ 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 عليها، بحثًا عن أقصى تنشيط. يشبه هذا النهج إلى حد ما النهج البسيط، باستثناء أن مناطق الاهتمام يتم إنشاؤها بطريقة أكثر ذكاءً. أحد العيوب الرئيسية لهذه الطرق هو أنها بطيئة، لأننا نحتاج إلى العديد من تمريرات مصنف CNN عبر الصورة.
  • المرور الواحد (YOLO، SSD، RetinaNet). في هذه البُنى، نصمم الشبكة للتنبؤ بالفئات ومناطق الاهتمام في مرور واحد.

R-CNN: الشبكة العصبية القائمة على المناطق

R-CNN تستخدم البحث الانتقائي لإنشاء هيكل هرمي لمناطق الاهتمام (ROI)، التي يتم تمريرها بعد ذلك عبر مستخلصات ميزات CNN ومصنفات SVM لتحديد فئة الكائن، وانحدار خطي لتحديد إحداثيات الصندوق المحيط. المقالة الرسمية

RCNN

الصورة من van de Sande et al. ICCV’11

RCNN-1

الصور من هذه المقالة

F-RCNN - Fast R-CNN

هذا النهج مشابه لـ R-CNN، لكن المناطق يتم تحديدها بعد تطبيق طبقات الالتفاف.

FRCNN

الصورة من المقالة الرسمية، arXiv، 2015

Faster R-CNN

الفكرة الرئيسية لهذا النهج هي استخدام الشبكة العصبية للتنبؤ بمناطق الاهتمام - ما يسمى شبكة اقتراح المناطق. المقالة، 2016

FasterRCNN

الصورة من المقالة الرسمية

R-FCN: الشبكة العصبية القائمة على المناطق بالكامل

هذا الخوارزم أسرع حتى من Faster R-CNN. الفكرة الرئيسية هي كالتالي:

  1. نستخرج الميزات باستخدام ResNet-101.
  2. يتم معالجة الميزات بواسطة خريطة النقاط الحساسة للموقع. يتم تقسيم كل كائن من $C$ الفئات إلى مناطق $k\times k$، وندرب الشبكة للتنبؤ بأجزاء الكائنات.
  3. لكل جزء من مناطق $k\times k$، تصوت جميع الشبكات لفئات الكائنات، ويتم اختيار فئة الكائن ذات التصويت الأعلى.

r-fcn image

الصورة من المقالة الرسمية

YOLO - You Only Look Once

YOLO هو خوارزمية مرور واحد في الوقت الفعلي. الفكرة الرئيسية هي كالتالي:

  • يتم تقسيم الصورة إلى مناطق $S\times S$.
  • لكل منطقة، CNN تتنبأ بـ $n$ كائنات محتملة، إحداثيات الصندوق المحيط و الثقة=الاحتمالية * IoU.

YOLO

الصورة من المقالة الرسمية

خوارزميات أخرى

✍️ تمارين: الكشف عن الكائنات

واصل تعلمك في الدفتر التالي:

ObjectDetection.ipynb

الخاتمة

في هذه الدرس، أخذت جولة سريعة حول الطرق المختلفة التي يمكن من خلالها تحقيق الكشف عن الكائنات!

🚀 التحدي

اقرأ هذه المقالات والدفاتر عن YOLO وجربها بنفسك:

المراجعة والدراسة الذاتية