اكتشاف الأجسام
ميّزوا بين مخرجات تصنيف الصورة وتحديد الموقع وكشف عدة أجسام.
85 دقيقة
وش بتتعلّم
- ميّزوا بين مخرجات تصنيف الصورة وتحديد الموقع وكشف عدة أجسام.
- قارنوا أساليب الكشف واستخدموا IoU ومتوسط الدقة لتقييم الصناديق المتوقعة.
وش تحتاج قبل تبدأ
- شبكات الخصومة التوليدية
الوقت المتوقع
85 دقيقةتشخيص اختياري
وش تعرف من قبل؟
ما له درجة نجاح، ولا يوقف الدرس. اختر «ماني متأكد» إذا هذا جوابك الصادق.
اكتشاف الأجسام
نماذج تصنيف الصور اللي تعاملنا معها إلى الحين تأخذ صورة وتعطينا نتيجة التصنيف (Classification)، مثل فئة «رقم» في مسألة MNIST. لكن بكثير من الحالات ما يكفينا نعرف إن الصورة فيها أجسام؛ نبي بعد نحدد موقع كل جسم بدقة. وهذا بالضبط هدف اكتشاف الأجسام (Object Detection).
وصف الشكل: اكتشاف الأجسام
الصورة من موقع YOLO v2
طريقة أولية لاكتشاف الأجسام
لو بغينا نلقى قطوة داخل صورة، نقدر نبدأ بطريقة مباشرة جدًا:
- نقسّم الصورة إلى مربعات صغيرة.
- نشغّل شبكة عصبية التفافية (Convolutional Neural Network, CNN) لتصنيف كل مربع.
- نعتبر المربعات اللي تعطي تنشيطًا أعلى من حد معيّن محتوية على الجسم المطلوب.
وصف الشكل: طريقة أولية لاكتشاف الأجسام
الصورة من دفتر التمرين
لكن هالطريقة بعيدة عن المثالية؛ ما تحدد الصندوق المحيط بالجسم إلا بشكل تقريبي. وإذا بغينا موقعًا أدق، نحتاج نوعًا من الانحدار (Regression) يتنبأ بإحداثيات الصندوق المحيط، وهذا يتطلب مجموعات بيانات مخصّصة.
الانحدار في اكتشاف الأجسام
هالتدوينة تعطي مقدمة مبسطة وممتازة عن اكتشاف الأشكال.
مجموعات بيانات اكتشاف الأجسام
من مجموعات البيانات اللي قد تمر عليكم بهالمهمة:
- PASCAL VOC — فيها 20 فئة.
- COCO — اختصار Common Objects in Context؛ فيها 80 فئة، وصناديق محيطة، وأقنعة تجزئة.
وصف الشكل: COCO
مقاييس اكتشاف الأجسام
التقاطع على الاتحاد
في تصنيف الصور، قياس جودة الخوارزمية سهل نسبيًا. أما في اكتشاف الأجسام، فلازم نقيس صحة الفئة ودقة موقع الصندوق المحيط اللي استنتجناه. ولقياس الموقع نستخدم التقاطع على الاتحاد (Intersection over Union, IoU)، وهو مقياس يوضّح مقدار تداخل صندوقين، أو أي منطقتين.
الفكرة بسيطة: نقسم مساحة التقاطع بين منطقتين على مساحة اتحادهما. إذا كانت المنطقتان متطابقتين، تكون قيمة IoU مساوية لـ 1؛ وإذا ما بينهما أي تداخل، تكون 0. وباقي الحالات تقع بين 0 و 1. وعادةً ما نحسب الاكتشاف صحيحًا إذا تعدّت قيمة IoU حدًا نحدده مسبقًا.
متوسط الإحكام
افترضوا إننا نبي نقيس جودة التعرّف على فئة أجسام معيّنة . نستخدم لهذا متوسط الإحكام (Average Precision, AP)، ونحسبه كالتالي:
- ننظر إلى منحنى الإحكام والاستدعاء (Precision-Recall)، وهو يبيّن جودة النتيجة عند قيم مختلفة لعتبة الاكتشاف من 0 إلى 1.
- كلما تغيّرت العتبة، يتغيّر عدد الأجسام المكتشفة وتتغيّر معه قيمتا الإحكام والاستدعاء.
- يكون شكل المنحنى مثل كذا:
وصف الشكل: حُذف الأصل لأن حقوق إعادة استخدامه غير موثّقة.
الصورة من NeuroWorkshop
متوسط الإحكام للفئة هو المساحة تحت هالمنحنى. وبتحديد أدق، نقسّم محور الاستدعاء عادةً إلى 10 أجزاء، ثم نأخذ متوسط الإحكام عند كل النقاط:
AP وIoU
ما نحسب إلا الاكتشافات اللي تتجاوز فيها قيمة IoU حدًا معيّنًا. مثلًا، في مجموعة بيانات PASCAL VOC نفترض عادةً أن ، بينما تقيس COCO قيمة AP عند عدة قيم مختلفة لـ .
وصف الشكل: حُذف الأصل لأن حقوق إعادة استخدامه غير موثّقة.
الصورة من NeuroWorkshop
متوسط الإحكام العام — mAP
المقياس الأساسي لاكتشاف الأجسام هو متوسط الإحكام العام (Mean Average Precision, mAP). وهو متوسط قيمة AP على جميع فئات الأجسام، وأحيانًا على قيم مختلفة لـ بعد. تلقون شرحًا مفصلًا لطريقة حساب mAP في هالتدوينة، وهنا مع أمثلة برمجية.
طرق اكتشاف الأجسام المختلفة
خوارزميات اكتشاف الأجسام تنقسم عمومًا إلى فئتين:
- شبكات اقتراح المناطق (Region Proposal Networks)، مثل R-CNN وFast R-CNN وFaster R-CNN. فكرتها الأساسية إنها تولّد مناطق اهتمام (Regions of Interest, ROI)، ثم تشغّل CNN عليها وتبحث عن أعلى تنشيط. تشبه الطريقة الأولية اللي شفناها، لكن مناطق الاهتمام هنا تُنشأ بأسلوب أذكى. من أكبر عيوب هالطرق إنها بطيئة؛ لأن مصنّف CNN يمر على الصورة مرات كثيرة.
- طرق المرور الواحد (One-pass)، مثل YOLO وSSD وRetinaNet. بهالبنى نصمم الشبكة بحيث تتنبأ بالفئات ومناطق الاهتمام بمرور واحد.
R-CNN: شبكة CNN قائمة على المناطق
تستخدم R-CNN أسلوب البحث الانتقائي (Selective Search) عشان تنشئ بنية هرمية لمناطق الاهتمام. بعدها تمر المناطق على مستخرجات السمات في 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، وفكرتها كالتالي:
- نستخرج السمات باستخدام ResNet-101.
- نعالج السمات بواسطة خريطة درجات حساسة للموقع (Position-Sensitive Score Map). نقسّم كل جسم من فئات إلى مناطق ، وندرّب الشبكة على التنبؤ بأجزاء الأجسام.
- لكل جزء ضمن مناطق ، تصوّت الشبكات لفئات الأجسام، ونختار الفئة اللي أخذت أعلى تصويت.
وصف الشكل: صورة r-fcn
الصورة من البحث الرسمي
YOLO — You Only Look Once
YOLO خوارزمية مرور واحد وتشتغل بالوقت الفعلي. فكرتها كالتالي:
- نقسّم الصورة إلى مناطق .
- تتنبأ CNN في كل منطقة بـ أجسام محتملة، وإحداثيات الصندوق المحيط، ودرجة الثقة=الاحتمال * IoU.
وصف الشكل: YOLO
الصورة من البحث الرسمي
خوارزميات ثانية
- RetinaNet: البحث الرسمي
- تطبيق PyTorch في Torchvision
- تطبيق Keras
- اكتشاف الأجسام باستخدام RetinaNet ضمن أمثلة Keras
- SSD (Single Shot Detector): البحث الرسمي
✍️ تمارين: اكتشاف الأجسام
كمّلوا تعلّمكم في هالدفتر:
الخلاصة
بهالدرس أخذنا جولة سريعة على الطرق المختلفة اللي نقدر ننفّذ فيها اكتشاف الأجسام.
🚀 التحدي
اقرؤوا هالمقالات والدفاتر عن YOLO وجرّبوها بأنفسكم:
- تدوينة مفيدة تشرح YOLO
- الموقع الرسمي
- YOLO: تطبيق Keras، دفتر خطوة بخطوة
- YOLO v2: تطبيق Keras، دفتر خطوة بخطوة
المراجعة والتعلّم الذاتي
- اكتشاف الأجسام — Nikhil Sardana
- مقارنة مفيدة بين خوارزميات اكتشاف الأجسام
- مراجعة خوارزميات التعلم العميق لاكتشاف الأجسام
- مقدمة خطوة بخطوة إلى خوارزميات اكتشاف الأجسام الأساسية
- تطبيق Faster R-CNN في Python لاكتشاف الأجسام
التكليف: اكتشاف الأجسام
طبّق
المختبرات والواجب
الزبدة
- ميّزوا بين مخرجات تصنيف الصورة وتحديد الموقع وكشف عدة أجسام.
- قارنوا أساليب الكشف واستخدموا IoU ومتوسط الدقة لتقييم الصناديق المتوقعة.
اختبار بعد الدرس
تأكد من فهمك
أرسله مرة وحدة عشان يفتح لك إكمال الدرس، وتقدر تعيده قد ما تبي.
اختم هالدرس
أرسل اختبار ما بعد الدرس، وبعدها أكّد إنك جاهز تكمّل الدرس.