Object Detection, box by box


Look for
Noise
Window stride
Keep scores above
NMS: suppress if IoU >
1. Slide the window
2. Clean up (NMS)
Show
What the detector sees: one brightness per pixel. Dashed boxes, once NMS is done, mark where the real animals are.

How well does this window match?

template
vs
window

IoU: how much do two boxes overlap?

 

الفكرة كلّها.
على الـ detector أن يجيب عن سؤالين: هل توجد قطّة؟ وأين بالضبط؟ والطريقة الأقدم هي التي في هذه الصفحة. خُذ صورة صغيرة لقطّة — الـ template — ومرِّرها فوق الصورة تمامًا مثل الـ filter في صفحة الـ edge detection، موضعًا بعد موضع. في كلّ موضع، احسب score لمدى تطابق النافذة التي تحته. كلّ نافذة يتجاوز score فيها الـ cut-off تصير box.

الـ score هنا هو normalized correlation: اطرح متوسّط السطوع من النافذة ومن الـ template، ثمّ قِس مدى اتّفاق النمطين. يمتدّ من +1 (نمط مطابق) مرورًا بـ 0 (لا علاقة) إلى −1 (العكس التامّ)، ولا يهمّه إن كانت النافذة أسطع أو أغمق في مجملها.

المشكلة التي يتركها المسح.
النافذة التي تبعد pixel أو اثنين عن القطّة ما تزال تغطّي معظمها، فتحصل على score عالٍ تقريبًا بالقدر نفسه. فينتهي الأمر بكلّ قطّة مغطّاة بكومة من الـ boxes شبه المتطابقة. ويُنظّف الـ Non-max suppression ذلك بقاعدة واحدة تتكرّر: أبقِ الـ box صاحب أعلى score بين الباقية، ثمّ احذف كلّ box يتداخل معه بأكثر من مقدار محدّد. ويُقاس التداخل بالـ IoU — المساحة المشتركة بين الـ boxين مقسومة على المساحة التي يغطّيانها معًا. الـ boxان المتطابقان لهما IoU يساوي 1، واللذان لا يتلامسان لهما IoU يساوي 0.

كيف يختلف الـ detector الحديث.
يستبدل YOLO وFaster R-CNN وغيرهما الـ template المصنوع باليد بـ CNN تعلّم شكل القطط، ويتنبّأ بأحجام الـ boxes بدل استعمال نافذة واحدة ثابتة. لكنّها ما تزال تُنتج كومة من الـ boxes المتداخلة، ومعظمها ما يزال ينظّفها بخطوة الـ NMS هذه نفسها.

أمور تستحقّ التجربة:
1. اضغط Score everything at once وعُدّ الكومة: 19 box لثلاث قطط، وكلّ قطّة مدفونة تحت كومتها الخاصّة. ثمّ Run NMS to the end. تنهار كلّ كومة إلى box واحد.

2. الآن أنزِل حدّ الـ IoU إلى 0.05 وشغّل الـ NMS من جديد. القطّتان الجالستان جنبًا إلى جنب تصيران واحدة: تتداخل boxاتهما بـ 0.11 فقط، لكنّ ذلك أكثر من 0.05، فإبقاء واحدة يحذف الأخرى. ارفعه إلى 0.95 فيحدث العكس — تبقى الـ 19 box كلّها، لأنّ حتّى الـ boxين اللذين يبعدان pixel واحدًا يتداخلان بـ 0.90 فقط.

3. انظر إلى القطّة الكبيرة. للـ template حجم واحد ثابت، والقطّة المرسومة أكبر لا تطابقه — أفضل نافذة لها تحصل على 0.43، أقلّ بكثير من الـ cut-off. عالجت الـ detectors الأقدم ذلك بتصغير الصورة مرّة بعد مرّة وتمرير النافذة نفسها على كلّ حجم؛ أمّا الحديثة فتتعلّم أن تتنبّأ بحجم الـ box مباشرةً.

4. أنزِل الـ cut-off للـ score إلى 0.50 فيحصل الكلبان على boxes؛ وعند 0.45 تحصل الكرة أيضًا على box. هذه هي المقايضة التي يقوم بها كلّ detector: الـ cut-off الأدنى يلتقط أكثر ممّا تريده، وأكثر ممّا لا تريده.