YOLO, one look at a grid


Grid
Keep scores above
NMS: suppress if IoU >
1. Look once
2. Clean up (NMS)
Show
Click any cell to see the numbers it predicts. A dot marks each animal’s center; the cell it falls in is shaded. Dashed boxes, once NMS is done, mark where the real animals are.

What one cell predicts

 

الفكرة كلّها.
تمرّر صفحة الـ object detection نافذة فوق الصورة وتفحص آلاف المواضع واحدًا واحدًا. أمّا YOLO — You Only Look Once — فلا يمرّر شيئًا. يضع grid فوق الصورة، وتمريرة واحدة من الـ CNN تعطي جوابًا لـ كلّ cell في الوقت نفسه. وتجيب كلّ cell القائمة القصيرة نفسها من الأرقام: أين الـ box (x، y، w، h)، وما مدى يقينها بأنّ الـ box يحوي شيئًا (الـ confidence)، وما فئته (احتمال واحد لكلّ فئة). والجواب كلّه كتلة واحدة من الأرقام، grid × grid × أرقام الـ cell، فالشبكة سريعة بما يكفي للفيديو الحيّ. والـ grid لا يقطّع الصورة إلى صور صغيرة: الـ CNN ينظر إلى الصورة كلّها مرّة واحدة، وكلّ cell مجرّد خانة واحدة في جوابه. ولهذا تستطيع الـ cell أن ترسم box أكبر منها بكثير.

أيّ cell تجيب؟
الـ cell التي تحوي مركز الحيوان هي المسؤولة عنه. والـ cells المجاورة التي تتداخل مع جزء من الحيوان فقط تخمّن box أيضًا، لكنّ box كلّ cell يجب أن يكون مركزه داخلها، فتقع تخميناتها إلى جانب وتحصل على score أقلّ. والـ score للـ box هو الـ confidence مضروبًا في احتمال الفئة. ويبقى بعد ذلك بعض المكرّرات حول كلّ حيوان، لذا ينتهي YOLO بخطوتي التنظيف نفسيهما كما في الصفحات الأخرى: حذف الـ scores المنخفضة، ثمّ الـ NMS.

ما المُحاكى هنا.
يتعلّم YOLO الحقيقي أرقامه من آلاف الصور المُعلَّمة. ولا توجد شبكة مدرَّبة في هذه الصفحة، فتُصنَع أرقام كلّ cell بالطريقة التي تتصرّف بها شبكة مدرَّبة: الـ box هو الـ box الحقيقي مع خطأ صغير ثابت، يُنقَل إلى داخل الـ cell عند الحاجة؛ والـ confidence هو نسبة الـ cell التي يغطّيها الحيوان (1 للـ cell المسؤولة) مضروبة في الـ IoU بين box الـ cell والحقيقي؛ واحتمالات الفئات هي نسبة الـ cell التي تغطّيها القطط والكلاب. في هذه الصفحة تعطي كلّ cell box واحدًا؛ وأعطى YOLO الأوّل اثنين لكلّ cell، والإصدارات الأحدث تعطي أكثر.

أمور تستحقّ التجربة:
1. اضغط Predict every cell at once. على grid ذي 7 × 7 (الحجم الذي استعمله YOLO الأوّل) تتداخل 35 من الـ 49 cell مع حيوان، و8 boxes تحصل على score يساوي 0.30 أو أكثر. ثمّ Run NMS to the end: تصير الـ 8 boxes خمسة، ويُعثَر على الحيوانات الخمسة كلّها.

2. انتقل إلى 3 × 3 أو 5 × 5. يقع مركزا القطّتين الصغيرتين الآن في الـ cell نفسها، والـ cell تعطي box واحدًا فقط، فلا يُعثَر على إحدى القطّتين أبدًا: 4 من 5. هذه نقطة الضعف الكلاسيكية لـ YOLO الأوّل — الأشياء الصغيرة المتقاربة. والإصدارات الأحدث تستعمل grids أدقّ وعدّة boxes لكلّ cell.

3. على 7 × 7، أنزِل الـ cut-off للـ score إلى 0.05. الآن تحصل على boxes حتّى الـ cells التي بالكاد تلمس حيوانًا: 22 box، ويُبقي الـ NMS منها 13 — الحيوانات الخمسة و8 إنذارات كاذبة. وعند 0.20 تختفي الإنذارات الكاذبة.

4. جرّب 9 × 9. يمتدّ الكلب الكبير الآن على cells كثيرة، واثنتان من جاراتها تخمّنان boxes تتداخل مع أفضل box للكلب بـ 0.45 و0.48 — تحت حدّ الـ NMS البالغ 0.50 بقليل، فيبقى كلاهما إنذارًا كاذبًا. حرّك حدّ الـ NMS إلى 0.40 فيُحذَفان: 5 boxes، 5 حيوانات.