13 KiB
الكشف عن الكائنات
النماذج التي تعاملنا معها لتصنيف الصور حتى الآن كانت تأخذ صورة وتنتج نتيجة تصنيفية، مثل فئة "الرقم" في مشكلة MNIST. ومع ذلك، في العديد من الحالات، لا نريد فقط معرفة أن الصورة تحتوي على كائنات - بل نريد تحديد موقعها بدقة. وهذا هو الهدف من الكشف عن الكائنات.
اختبار ما قبل المحاضرة
الصورة من موقع YOLO v2
نهج بسيط للكشف عن الكائنات
إذا أردنا العثور على قطة في صورة، فإن نهجًا بسيطًا جدًا للكشف عن الكائنات سيكون كالتالي:
- تقسيم الصورة إلى عدد من المربعات.
- تشغيل تصنيف الصور على كل مربع.
- يمكن اعتبار المربعات التي تؤدي إلى تنشيط عالي بما يكفي أنها تحتوي على الكائن المطلوب.
الصورة من دفتر التمارين
ومع ذلك، هذا النهج بعيد عن المثالية، لأنه يسمح فقط للخوارزمية بتحديد موقع الصندوق المحيط بالكائن بشكل غير دقيق. للحصول على موقع أكثر دقة، نحتاج إلى تشغيل نوع من الانحدار للتنبؤ بإحداثيات الصناديق المحيطة - وللقيام بذلك، نحتاج إلى مجموعات بيانات محددة.
الانحدار للكشف عن الكائنات
هذه المقالة تقدم مقدمة رائعة للكشف عن الأشكال.
مجموعات البيانات للكشف عن الكائنات
قد تصادف مجموعات البيانات التالية لهذه المهمة:
- PASCAL VOC - 20 فئة
- COCO - الكائنات الشائعة في السياق. 80 فئة، صناديق محيطة وأقنعة تقسيم
مقاييس الكشف عن الكائنات
التقاطع على الاتحاد
بينما من السهل قياس أداء الخوارزمية في تصنيف الصور، فإن الكشف عن الكائنات يتطلب قياس صحة الفئة وكذلك دقة موقع الصندوق المحيط المستنتج. بالنسبة للأخير، نستخدم ما يسمى التقاطع على الاتحاد (IoU)، الذي يقيس مدى تداخل صندوقين (أو منطقتين عشوائيتين).
الشكل 2 من هذه المقالة الممتازة عن IoU
الفكرة بسيطة - نقسم مساحة التقاطع بين شكلين على مساحة اتحادهما. بالنسبة لمنطقتين متطابقتين، سيكون IoU = 1، بينما بالنسبة لمنطقتين منفصلتين تمامًا سيكون 0. بخلاف ذلك، سيتراوح بين 0 و1. عادةً ما نعتبر فقط تلك الصناديق المحيطة التي يكون فيها IoU أعلى من قيمة معينة.
الدقة المتوسطة
لنفترض أننا نريد قياس مدى جودة التعرف على فئة معينة من الكائنات C. لقياس ذلك، نستخدم مقاييس الدقة المتوسطة، التي تُحسب كالتالي:
- يتم النظر في منحنى الدقة-الاستدعاء الذي يظهر الدقة بناءً على قيمة عتبة الكشف (من 0 إلى 1).
- بناءً على العتبة، سنحصل على عدد أكبر أو أقل من الكائنات المكتشفة في الصورة، وقيم مختلفة للدقة والاستدعاء.
- سيبدو المنحنى كالتالي:
الصورة من 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 لتحديد فئة الكائن، وانحدار خطي لتحديد إحداثيات الصندوق المحيط. المقالة الرسمية
الصورة من van de Sande et al. ICCV’11
الصور من هذه المقالة
F-RCNN - Fast R-CNN
هذا النهج مشابه لـ R-CNN، لكن المناطق يتم تحديدها بعد تطبيق طبقات الالتفاف.
الصورة من المقالة الرسمية، arXiv، 2015
Faster R-CNN
الفكرة الرئيسية لهذا النهج هي استخدام الشبكة العصبية للتنبؤ بمناطق الاهتمام - ما يسمى شبكة اقتراح المناطق. المقالة، 2016
الصورة من المقالة الرسمية
R-FCN: الشبكة العصبية القائمة على المناطق بالكامل
هذا الخوارزم أسرع حتى من Faster R-CNN. الفكرة الرئيسية هي كالتالي:
- نستخرج الميزات باستخدام ResNet-101.
- يتم معالجة الميزات بواسطة خريطة النقاط الحساسة للموقع. يتم تقسيم كل كائن من
Cالفئات إلى مناطقk\times k، وندرب الشبكة للتنبؤ بأجزاء الكائنات. - لكل جزء من مناطق
k\times k، تصوت جميع الشبكات لفئات الكائنات، ويتم اختيار فئة الكائن ذات التصويت الأعلى.
الصورة من المقالة الرسمية
YOLO - You Only Look Once
YOLO هو خوارزمية مرور واحد في الوقت الفعلي. الفكرة الرئيسية هي كالتالي:
- يتم تقسيم الصورة إلى مناطق
S\times S. - لكل منطقة، CNN تتنبأ بـ
nكائنات محتملة، إحداثيات الصندوق المحيط و الثقة=الاحتمالية * IoU.
الصورة من المقالة الرسمية
خوارزميات أخرى
- RetinaNet: المقالة الرسمية
- SSD (الكاشف ذو اللقطة الواحدة): المقالة الرسمية
✍️ تمارين: الكشف عن الكائنات
واصل تعلمك في الدفتر التالي:
الخاتمة
في هذه الدرس، أخذت جولة سريعة حول الطرق المختلفة التي يمكن من خلالها تحقيق الكشف عن الكائنات!
🚀 التحدي
اقرأ هذه المقالات والدفاتر عن YOLO وجربها بنفسك:
- مقالة جيدة تصف YOLO
- الموقع الرسمي
- YOLO: تنفيذ Keras، دفتر خطوة بخطوة
- YOLO v2: تنفيذ Keras، دفتر خطوة بخطوة
اختبار ما بعد المحاضرة
المراجعة والدراسة الذاتية
- الكشف عن الكائنات بواسطة نيكيل ساردانا
- مقارنة جيدة لخوارزميات الكشف عن الكائنات
- مراجعة لخوارزميات التعلم العميق للكشف عن الكائنات
- مقدمة خطوة بخطوة لخوارزميات الكشف عن الكائنات الأساسية
- تنفيذ Faster R-CNN في Python للكشف عن الكائنات









