الفكرة كلّها.
تمرّر صفحة الـ object detection نافذة واحدة ثابتة الحجم فوق كلّ موضع. أمّا R-CNN (2014)
فيفحص أماكن أقلّ بكثير. أوّلًا يقترح regions: boxes قد تحوي شيئًا. ويجدها بالـ selective
search، الذي يبدأ من رقع صغيرة ويظلّ يدمج الجارتين الأكثر تشابهًا؛ وكلّ مجموعة مدموجة تعطي box واحدًا.
ثمّ يأخذ كلّ region، ويقصّه، ويضغطه إلى الحجم الثابت الذي يتوقّعه الـ CNN، ويشغّل الـ CNN عليه
ليحصل على score للفئة. الـ region المضغوط له الحجم الصحيح دائمًا، فتبدو القطّة الكبيرة والصغيرة متماثلتين
للـ CNN. ونادرًا ما يطابق الـ region المقترح الحيوان تمامًا، لذا يزحزح R-CNN أيضًا كلّ حافّة من
حوافّ الـ box لتطابق أفضل (box regression). وأخيرًا يحذف الـ NMS المكرّرات.
لاحظ Fast R-CNN (2015) أنّ الـ regions تتداخل، فيشغّل R-CNN الـ CNN على الـ pixels نفسها
مرّة بعد مرّة. فهو يشغّل الـ CNN مرّة واحدة على الصورة كلّها، ثمّ يقصّ كلّ region من الـ
feature map الناتج ويعمل له pool إلى grid ثابت (RoI pooling). الـ regions نفسها، وتشغيل
واحد للـ CNN.
واستبدل Faster R-CNN (2015) الـ selective search أيضًا. فشبكة صغيرة، الـ Region
Proposal Network، تنظر إلى الـ feature map نفسه، وتضع بضعة anchor boxes بأحجام مختلفة في كلّ
موضع، وتعطي كلًّا منها score: هل يوجد شيء هنا؟ ولا يصير regions إلّا أفضل بضع عشرات. الاقتراح
والفحص يتشاركان الآن تشغيلًا واحدًا للـ CNN.
ما المُحاكى هنا.
لا توجد شبكة مدرَّبة في هذه الصفحة. الـ «CNN» هو score الـ template من صفحة الـ object
detection: مدى تطابق الـ region المضغوط مع قطّة أو كلب صغير، من −1 إلى +1.
والـ «feature map» هو الصورة مصغّرة 4 مرّات؛ والحقيقي فيه مئات الـ channels. والـ detector
الحقيقي يتعلّم زحزحة الـ box ويقوم بها في خطوة واحدة؛ أمّا هذه الصفحة فتجدها بتجربة حركات صغيرة لكلّ حافّة
والإبقاء على أفضل score. وما تعرضه الصفحة كما هو في الحقيقة: من أين تأتي الـ regions، وماذا يُقصّ، وكم مرّة
يجب أن يعمل الـ CNN.