الرؤية الحاسوبية2014متوسط12 دقيقة قراءة
هرميّات السمات الغنية للكشف الدقيق عن الأجسام والتجزئة الدلالية
Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation
Girshick, R. · Donahue, J. · Darrell, T. · Malik, J. — CVPR
المشكلة
بحلول عام 2013 كان مجال كشف الأجسام على مجموعة PASCAL VOC في حالة ركود حقيقي. أفضل الأنظمة كانت تجمع سمات مصنوعة يدوياً مثل HOG وSIFT مع نماذج الأجزاء القابلة للتشوُّه، ولم يعد هناك مجال كبير للتحسُّن. في المقابل، كانت الشبكات الالتفافية قد أحدثت ثورة في الصور بعد فوز AlexNet المذهل في مسابقة ImageNet عام 2012. السؤال المُلحّ الذي لم يُجِب عنه أحد بعد: هل يمكن تسخير قوة هذه الشبكات لمهمة الكشف؟ والكشف أصعب بطبيعته لأنه لا يكتفي بمعرفة «ماذا يوجد في الصورة؟» بل يتطلب أيضاً تحديد «أين يقع كل جسم بالضبط؟»
الإسهام
قدّم R-CNN منظومة بسيطة وقابلة للتوسُّع حقّقت قفزة نوعية في دقة الكشف (mAP) على PASCAL VOC 2012، إذ ارتفعت من نحو 40% إلى 53.3% — أي تحسُّن نسبي يتجاوز 30%. الفكرة تسير في أربع خطوات: (1) توليد نحو 2000 منطقة مرشّحة لا تعرف شيئاً عن نوع الجسم عبر ، (2) تحجيم كل منطقة إلى 227×227 بكسل واستخلاص متجه سمات بـ4096 بُعداً من شبكة التفافية دُرِّبت على ImageNet ثم ضُبطت لمهمة الكشف، (3) تصنيف كل منطقة بمُصنِّف خطي مستقل لكل فئة باستخدام آلة المتجهات الداعمة، (4) تحسين إحداثيات صندوق الإحاطة بمُنحنيات انحدار مُتعلَّمة. الفكرة الجوهرية: الشبكة أولاً على مجموعة بيانات ضخمة مثل ImageNet ثم ضبطها على المهمة المستهدفة يُحقّق نتائج استثنائية حتى حين تكون بيانات الكشف شحيحة.
الأثر
أثبت R-CNN أن السمات التي تعلّمتها الشبكات الالتفافية للتصنيف يمكن نقلها بفعالية مذهلة إلى مهمة الكشف، وبذلك فتح الباب أمام حقبة جديدة كلياً في كشف الأجسام بالتعلُّم العميق. من رحم R-CNN وُلد Fast R-CNN ثم Faster R-CNN ثم Mask R-CNN، وأصبحت وصفته «درِّب مسبقاً ثم اضبط بدقة» النهج المعياري في الرؤية الحاسوبية بأسرها. حتى الكواشف أحادية المرحلة مثل SSD وYOLO — التي ظهرت تحديداً لتجاوز بطء R-CNN — تقف على الأساس الذي أرساه: السمات المُتعلَّمة تتفوق على المصنوعة يدوياً حتى في تحديد مواقع الأجسام.
قبل R-CNN، كان في صورة أشبه بالبحث عن صديقك في ملعب مكتظّ بعشرات الآلاف من المشجّعين، عبر فحص كل مقعد واحداً تلو الآخر بمنظار مقرِّب — عملية مُرهقة وبطيئة بلا طائل.
R-CNN يفعل ما ستفعله أنت غريزياً: تمسح المدرّجات بنظرة سريعة من بعيد لتحدّد بضعة أماكن يُحتمل أن يكون فيها صديقك ()، ثم تمشي إلى كل مكان وتنظر عن قرب بأفضل عدسة لديك ().
الأذكى من ذلك: عدسة R-CNN لم تبدأ من الصفر، بل دُرِّبت أولاً على التعرُّف على آلاف الأجسام في موسوعة بصرية ضخمة (ImageNet). حين انتقلت إلى مهمة الملعب كانت تعرف مسبقاً كيف يبدو البشر — واحتاجت فقط جولة تأقلُم سريعة على ترتيب هذا الملعب بالذات ().
المشكلة: كشف الأجسام في ركود والتصنيف يُحلِّق
بحلول عام 2013، كان كشف الأجسام على مجموعة PASCAL VOC في ركودٍ استمرّ سنوات. المنهج المهيمن — (DPM) — كان يعتمد على سمات HOG المصنوعة يدوياً ويرتّبها في بنية نجمية من الأجزاء. وصفة DPM عمرها عقد كامل: احسب واصفات HOG، ابنِ نماذج أجزاء، مرِّر على مقاييس متعددة. النتيجة: نظام بطيء ومعقّد وصلت دقّته إلى سقفها ولم يعد هناك ما يمكن عصره منه.
في الجهة المقابلة، كانت AlexNet قد فازت للتوّ بمسابقة ImageNet 2012 بفارق مذهل، وأثبتت أن الشبكات الالتفافية العميقة تتعلّم سمات أغنى بمراحل من أيّ واصف يُصمَّم يدوياً. السؤال الذي كان يشغل الجميع: هل نستطيع تسخير هذه السمات القوية لحلّ مشكلة الكشف أيضاً؟
لماذا الكشف أصعب من التصنيف؟ لأن المُصنِّف يحتاج إجابة واحدة فقط عن كل صورة: «ما الجسم الموجود فيها؟» أمّا الكاشف فعليه أن يجيب عن سؤالين في آنٍ واحد لكل جسم: ما هو؟ وأين يقع بالضبط؟ — أي أنه يحتاج وتسمية لكل نسخة من كل جسم. هذا يتطلب قدرة تمييز ودقّة مكانية معاً.
المرحلة الأولى: تحديد المناطق المرشّحة بالبحث الانتقائي
بدلاً من تمرير نافذة منزلقة على كل موقع وكل مقياس ممكن — وهو ما يعني ملايين العمليات — يلجأ R-CNN إلى البحث الانتقائي لترشيح نحو 2000 منطقة فقط لكل صورة. فكِّر فيه كمصفاة أوّلية سريعة: قبل أن نُشغّل الشبكة الالتفافية المُكلفة حسابياً، نُمرّر خوارزمية خفيفة تحدّد صناديق الإحاطة التي يُرجَّح أنها تحتوي على شيء ما.
آلية العمل تصاعدية: تبدأ بتقطيع الصورة إلى مناطق صغيرة جداً (تجزئة مفرطة)، ثم تدمج تكرارياً المناطق المتجاورة المتشابهة بحسب اللون والنسيج والحجم ومدى الاحتواء. عند كل خطوة دمج يُسجَّل صندوق الإحاطة الناتج كاقتراح. هذا التجميع الهرمي يُنتج اقتراحات بمقاييس متنوّعة تلقائياً — من أجسام صغيرة كالأكواب إلى كبيرة كالسيارات — دون الحاجة إلى أيّ نافذة منزلقة.
المحصّلة: نحو 2000 صندوق إحاطة لا تعرف شيئاً عن نوع الجسم. تعبير «مستقلّة عن الفئة» يعني أن الخوارزمية تكتفي بالإشارة إلى مناطق تبدو مثيرة للاهتمام دون أن تُسمّيها. سؤال «ما الجسم الموجود هنا؟» يُترك للمرحلة التالية حين تفحص الشبكة الالتفافية كل منطقة على حدة.
المرحلة الثانية: الرؤية بعيون مُستعارة — استخلاص السمات
كل منطقة من المناطق الـ 2000 المقترحة تُحجَّم قسرياً إلى 227×227 بكسل — وهو الحجم الثابت الذي تتوقعه AlexNet — بغضّ النظر عن أبعادها الأصلية. هذا التحجيم يُشوّه بعض الأجسام بالطبع، لكن النتائج العملية أثبتت أنه يعمل بشكل مقبول.
بعد ذلك تُمرَّر كل منطقة عبر شبكة التفافية (AlexNet أولاً ثم VGGNet لاحقاً) سبق على ImageNet لتصنيف 1000 فئة. لكن R-CNN لا يأخذ قرار التصنيف النهائي من الشبكة، بل يستخلص ذا الأبعاد الـ 4096 من الطبقة قبل الأخيرة (fc7). هذا المتجه هو بصمة المنطقة — ملخّص مضغوط لكل ما «تراه» الشبكة في تلك الرقعة من الصورة.
وهنا تظهر الفكرة الجوهرية في : الشبكة لم تُدرَّب قطّ على بيانات PASCAL VOC ولا على مهمة الكشف، ومع ذلك فإن سماتها مفيدة بشكل مذهل. السبب أن ImageNet علّمتها بناء «قاموس بصري» متدرّج: الطبقات السفلى تتعرّف على أنماط بصرية عامة كالحواف والزوايا والبقع اللونية، والطبقات العليا تتعرّف على أجزاء مرتبطة بأجسام محددة كالعيون والعجلات والفرو. هذه السمات تنتقل إلى مهام جديدة بفعالية ملحوظة.
لتقليص الفجوة بين تصنيف ImageNet وكشف VOC، يُجري R-CNN ضبطاً دقيقاً على الشبكة: يستبدل مُصنِّف AlexNet ذا الـ1000 فئة بمُصنِّف (K+1) فئة (K فئة أجسام + الخلفية)، ويواصل التدريب باستخدام المناطق المقترحة المُحجَّمة. أيّ منطقة تتقاطع مع بنسبة أعلى من 0.5 تُعدّ مثالاً إيجابياً، وما دون ذلك يُعدّ سلبياً.
الفكرة الجوهرية: نقل التعلُّم يسدّ فجوة البيانات
الدرس الأعمق في R-CNN ليس المنظومة بحدّ ذاتها، بل وصفة نقل التعلُّم التي أثبتت جدواها. مجموعة ImageNet تحتوي 1.2 مليون صورة مُعنوَنة للتصنيف، في حين لا تملك PASCAL VOC سوى بضعة آلاف صورة للكشف. لو حاولنا تدريب شبكة التفافية عميقة من الصفر على VOC لوقعنا فوراً في .
الحلّ الذي قدّمه R-CNN: ابدأ بـ**** على بيانات ImageNet الوفيرة كي تتعلّم الشبكة سمات بصرية غنية — أشبه ببناء «قاموس بصري شامل». ثم أجرِ الضبط الدقيق على مجموعة الكشف الصغيرة كي تُكيِّف الشبكة تلك السمات العامة مع المهمة المطلوبة. هذه الوصفة ذات الخطوتين — تدريب مسبق ثم ضبط دقيق — تبيّن أنها واحدة من أهمّ الأفكار في تاريخ ، وامتدّت لاحقاً إلى معالجة اللغة الطبيعية مع BERT وGPT وما تلاهما.
في الورقة تكشف نمطاً لافتاً: حتى بدون الضبط الدقيق، كانت سمات الشبكة الالتفافية تتفوّق أصلاً على أساليب HOG. ومع الضبط الدقيق، قفزت بـ8 نقاط إضافية. سمات الطبقة fc7 بعد الضبط كانت الأكثر تمييزاً على الإطلاق — وهذا دليل مباشر على أن الطبقات العليا هي التي تتكيّف أكثر مع المجال الجديد.
المرحلة الثالثة: تصنيف كل منطقة بآلات المتجهات الداعمة
بعد استخلاص متجه سمات بـ4096 بُعداً من كل منطقة مقترحة، يُمرِّره R-CNN إلى خطية مُخصَّصة لكل فئة. في مجموعة بيانات تضمّ 20 فئة مثل PASCAL VOC، يعني ذلك 20 مُصنِّفاً ثنائياً مستقلاً، كلٌّ منها يطرح سؤالاً واحداً: «هل تحتوي هذه المنطقة على الفئة X؟»
سؤال مشروع: لماذا نستخدم المتجهات الداعمة بدلاً من مُصنِّف الموجود أصلاً في الشبكة؟ الورقة فحصت هذا بعناية ووجدت أن softmax يؤدّي أسوأ قليلاً. السرّ في طريقة وضع التسميات: أثناء الضبط الدقيق تُعدّ أيّ منطقة ذات تقاطع فوق اتحاد أعلى من 0.5 مثالاً «إيجابياً» — وهو معيار فضفاض نسبياً. أمّا تدريب المتجهات الداعمة فيستخدم معياراً أكثر صرامة: الصناديق الحقيقية وحدها هي الإيجابية، وأيّ منطقة بتقاطع أقل من 0.3 تُعدّ سلبية. هذه الصرامة تمنح المُصنِّف حدّ قرار أوضح وأدقّ.
بعد أن يُقيِّم كل مُصنِّف جميع المناطق، تأتي مرحلة لتنظيف النتائج: لكل فئة على حدة، تُرتَّب المناطق حسب درجة الثقة ثم يُحذف تكرارياً كل اقتراح يتداخل بشدة (تقاطع فوق اتحاد أعلى من 0.3 عادةً) مع اقتراح أعلى منه درجةً. المحصّلة: صندوق إحاطة واحد نظيف لكل جسم مكتشَف.
المرحلة الرابعة: تنقيح الصندوق بانحدار صندوق الإحاطة
البحث الانتقائي يقترح صناديق إحاطة تقريبية، لكنها نادراً ما تُحيط بالجسم بدقة. لذلك يضيف R-CNN خطوة تنقيح: نموذج خطي بسيط يتنبّأ بأربع إزاحات () تُزيح الصندوق وتُعيد تحجيمه ليُطابق الجسم الحقيقي بشكل أفضل.
الفكرة بسيطة: الاقتراح الأوّلي يقول «غالباً يوجد كلب في هذه المنطقة»، فيأتي المُنحنِي ويقول «حسناً، لكن ازِح الصندوق قليلاً لليسار وقلّص ارتفاعه بنسبة 10%». هذا التعديل البسيط يرفع الدقة المتوسطة عادةً بمقدار 3 إلى 4 نقاط.
قياس التداخل: التقاطع فوق الاتحاد (IoU)
يعتمد R-CNN على التقاطع فوق الاتحاد (IoU) في كل مراحله تقريباً: لتحديد ما إذا كانت المنطقة المقترحة إيجابية أم سلبية أثناء التدريب، ولضبط عتبة كبت القيم غير العُظمى، ولتقييم جودة الكشف النهائية. الفكرة بسيطة: IoU يقيس مدى تطابق صندوق الإحاطة المُتنبَّأ به مع الصندوق الحقيقي:
التدريب: وصفة متعددة المراحل
تدريب R-CNN يمرّ بـثلاث مراحل متتابعة — وهذا من أبرز نقاط ضعفه مقارنةً بالأساليب التي جاءت بعده:
المرحلة أ — الضبط الدقيق للشبكة. نبدأ بـ AlexNet المُدرَّبة مسبقاً على ImageNet، ونستبدل مُصنِّفها ذا الـ1000 فئة بمُصنِّف جديد بـ(K+1) فئة (K فئة أجسام + الخلفية) مُهيَّأ عشوائياً. ثم ندرّب على اقتراحات المناطق المُحجَّمة: كل اقتراح يتقاطع مع صندوق حقيقي بنسبة IoU ≥ 0.5 يُعدّ إيجابياً والباقي سلبي. نستخدم بـ 0.001 — أي عُشر المعدل الأصلي لـ ImageNet.
المرحلة ب — تدريب المتجهات الداعمة. نُجمِّد الشبكة المضبوطة ونستخلص السمات لجميع المناطق. ثم ندرّب مُصنِّف متجهات داعمة خطي لكل فئة، مع الصناديق الحقيقية كأمثلة إيجابية والمناطق ذات IoU أقل من 0.3 كـ. لاحِظ أن التسميات هنا أكثر صرامة من المرحلة السابقة.
المرحلة ج — تدريب مُنحنيات صندوق الإحاطة. باستخدام السمات المجمّدة نفسها، ندرّب مُنحنِي انحدار خطي لكل فئة للتنبّؤ بإزاحات الصندوق. تُستخدم فقط المناطق ذات IoU ≥ 0.6 مع صندوق حقيقي كأمثلة تدريب.
هذه المنظومة التتابعية معقّدة وتستهلك مساحة تخزين ضخمة — إذ يجب حفظ السمات مؤقتاً لكل المناطق في كل الصور. لاحقاً جاء Fast R-CNN ودمج المراحل الثلاث في شبكة واحدة قابلة للتدريب من طرف إلى طرف.
النتائج: قفزة بـ30%
تأثير R-CNN كان فورياً وكبيراً:
على PASCAL VOC 2012 حقّق 53.3% في الدقة المتوسطة — قفزة نسبية تتجاوز 30% مقارنةً بأفضل نتيجة سابقة (DPM بنحو 40%).
على ILSVRC 2013 للكشف حقّق 31.4% مقابل 24.3% للفائز OverFeat.
دراسات الاستئصال رسمت صورة واضحة: (1) سمات الشبكة الالتفافية وحدها (من طبقة pool5) تتفوّق أصلاً على HOG. (2) كلما صعدنا في الطبقات (fc6 ثم fc7) تحسّنت السمات تدريجياً. (3) الضبط الدقيق يضيف نحو 8 نقاط. (4) انحدار صندوق الإحاطة يضيف 3–4 نقاط إضافية. (5) استبدال AlexNet بشبكة VGGNet-16 الأعمق دفع الدقة إلى 66.0% على VOC 2007.
أبعد من الصناديق: التجزئة الدلالية
لم يقتصر R-CNN على رسم الصناديق فحسب، بل تعامل أيضاً مع — أي تصنيف كل بكسل في الصورة. الطريقة: لكل منطقة مقترحة تُحسب سمات الشبكة الالتفافية على ثلاثة أشكال: (أ) المنطقة المستطيلة كاملةً، (ب) بكسلات المقدّمة فقط مع إخفاء الخلفية، (ج) مقدّمة منطقة أوسع قليلاً. تُدمج المتجهات الثلاثة ويُدرَّب مُصنِّف متجهات داعمة لكل فئة.
النتائج كانت تنافسية على تجزئة VOC 2011، وأثبتت أن السمات ذاتها المفيدة للكشف تحمل أيضاً معلومات كافية للتصنيف على مستوى البكسل. أعمال لاحقة كالشبكات الالتفافية الكاملة (FCN) تجاوزت هذا النهج، لكن R-CNN هو من رسم الطريق.
القيود وما جاء بعدها
رغم إنجازاته، كانت لدى R-CNN قيود واضحة دفعت الباحثين لتطوير أجيال أفضل:
البطء. تشغيل الشبكة الالتفافية على كل اقتراح بشكل مستقل استغرق نحو 47 ثانية لكل صورة — وهو بعيد جداً عن الاستخدام الفوري. السبب أن المناطق المتداخلة تتشارك كثيراً من البكسلات، والنظام يُعيد حساب السمات لكلٍّ منها من الصفر.
التدريب المُجزَّأ. ثلاث مراحل منفصلة — ضبط الشبكة ثم تدريب المتجهات الداعمة ثم تدريب مُنحنِي الصندوق — جعلت المنظومة معقّدة وصعبة الأمثَلة المشتركة.
مساحة التخزين. حفظ السمات لجميع المناطق في جميع الصور تطلّب مئات الجيجابايت.
التحجيم القسري. إجبار كل منطقة على 227×227 يُضيّع معلومات نسبة العرض إلى الارتفاع التي قد تُحسّن التمييز.
هذه القيود حفّزت سلسلة سريعة من التحسينات:
2014
R-CNN — هذه الورقة
اقتراحات مناطق + سمات الشبكة الالتفافية + تصنيف بمتجهات داعمة. أثبت أن السمات المُتعلَّمة تنتقل بقوة إلى الكشف. حقّق 53.3% على VOC 2012.
2015
Fast R-CNN
يُشغّل الشبكة مرة واحدة على الصورة بأكملها ثم يُجمّع السمات لكل منطقة عبر تجميع منطقة الاهتمام. تدريب موحّد وسرعة تفوق R-CNN بتسع مرات.
2015
Faster R-CNN
يستغني عن البحث الانتقائي ويستبدله بشبكة اقتراح مناطق مُتعلَّمة (RPN). كشف شبه فوري وتدريب من طرف إلى طرف.
2016
SSD وYOLO — كواشف أحادية المرحلة
تتخطّى مرحلة الاقتراحات كلياً وتتنبّأ بالصناديق والفئات مباشرةً من خرائط السمات. كشف فوري مقابل تنازل طفيف في الدقة.
2017
Mask R-CNN
يبني على Faster R-CNN ويضيف فرع أقنعة للتجزئة على مستوى الكائن. يكشف ويُصنّف ويُجزّئ كل جسم في تمريرة واحدة.
منظومة R-CNN كاملةً في شيفرة برمجية
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
import numpy as np
def selective_search(image):
"""ترشيح نحو 2000 منطقة محتملة (صناديق إحاطة)."""
# تقطيع تصاعدي ← دمج تكراري بحسب اللون والنسيج
# والحجم والاحتواء ← جمع صناديق المناطق الناتجة
return proposals # قائمة من (x, y, w, h)
def extract_features(cnn, image, proposals):
"""تحجيم كل منطقة إلى 227×227 واستخلاص سمات fc7."""
features = []
for (x, y, w, h) in proposals:
region = image[y:y+h, x:x+w]
warped = resize(region, (227, 227)) # تحجيم قسري
feat = cnn.forward(warped, layer='fc7') # متجه بـ4096 بُعداً
features.append(feat)
return np.array(features) # (2000, 4096)
def classify_and_detect(features, svms, regressors, proposals):
"""تصنيف كل منطقة بمُصنِّف مستقل لكل فئة، ثم تنقيح الصناديق."""
detections = []
for cls in range(num_classes):
scores = svms[cls].predict(features) # (2000,)
# كبت القيم غير العُظمى: نُبقي الأفضل ونحذف المتداخلات
kept = nms(proposals, scores, iou_threshold=0.3)
# انحدار صندوق الإحاطة: تعديل إحداثيات الصندوق
for idx in kept:
offsets = regressors[cls].predict(features[idx])
refined_box = apply_offsets(proposals[idx], offsets)
detections.append((cls, refined_box, scores[idx]))
return detectionsلماذا غيَّر R-CNN كل شيء
المرجعGirshick, Donahue, Darrell, Malik. Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation. CVPR, 2014.
مصطلحات هذه الورقة
- رصد وتحديد الكائناتObject Detection
- المنطقة المرشحةRegion Proposal
- البحث الانتقائيSelective Search
- نقل التعلمTransfer Learning
- الضبط الدقيقFine-Tuning
- مربع الإحاطةBounding Box
- كبت غير أعظميNon-Maximum Suppression
- آلة ناقلات الدعم (SVM)Support Vector Machine
- استخلاص السماتFeature Extraction
- متوسط الدقة المتوسطةMean Average Precision
- التقاطع على الاتحادIntersection over Union
- الشبكة العصبية الالتفافيةConvolutional Neural Network (CNN)