الرؤية الحاسوبية2014تأسيسي11 دقيقة قراءة

Microsoft COCO: الأجسام الشائعة في سياقها الطبيعي

Microsoft COCO: Common Objects in Context

Lin, T.-Y. · Maire, M. · Belongie, S. · Bourdev, L. · Girshick, R. · Hays, J. · Perona, P. · Ramanan, D. · Zitnick, C.L. · Dollár, P. — ECCV

المشكلة

بحلول عام 2014، كان مجال التعرُّف على الأجسام قد تجاوز ما تقدر عليه مجموعات البيانات المتاحة. أثبتت ImageNet أن الشبكات العميقة تستطيع جسم واحد يتوسّط الصورة، لكن المشاهد الواقعية مليئة بعشرات الأجسام المتداخلة بأحجام مختلفة. وأما PASCAL VOC فقد وفّرت كشفاً لكنها لم تتجاوز 20 فئة بمعدل 2–3 أجسام في الصورة. لم تكن أيٌّ من هاتين المجموعتين تُلزم النماذج بفهم الأجسام ضمن مشهد مزدحم ومعقّد — وهو التحدي الحقيقي في الإدراك البصري.

الإسهام

مجموعة بيانات تضم 328,000 صورة تحتوي على 2.5 مليون عنصر مُعلَّم موزّعة على 91 فئة، وكل عنصر فيها مُشرَّح بقناع تجزئة خاص به — وليس فقط بإطار محيط. اختيرت الصور عمداً لتعرض الأجسام في سياقها الطبيعي: غرف فوضوية، شوارع مزدحمة، طاولات طعام. ولتوصيف هذا الكم الهائل ابتُكر خط إنتاج جماهيري من ثلاث مراحل (تصنيف الفئات ← تحديد العناصر ← تجزئة كل عنصر). كما قُدّمت معايير تقييم جديدة تقيس الكشف عند عتبات تقاطع متعددة وعبر أحجام مختلفة.

الأثر

صارت COCO المرجع الأساسي لتقييم كشف الأجسام والتجزئة على مستوى العناصر. كل بنية كشف رئيسية — من Faster R-CNN وYOLO وSSD إلى RetinaNet وDETR وMask R-CNN — اختُبرت وقورنت عليها. أقنعة التجزئة الفردية التي قدّمتها هي ما مكّن Mask R-CNN وأطلق مجال التجزئة على مستوى العناصر بأكمله. وصيغة التوصيف فيها (ملف JSON يحتوي إطارات محيطة ومضلعات تجزئة وتسلسلاً هرمياً للفئات) تحوّلت إلى معيار فعلي تبنّته عشرات مجموعات البيانات اللاحقة. كما دفعت مسابقات COCO السنوية هذا المجال قُدُماً على مدار عقد كامل.

تخيّل أنك تُعلّم طفلاً التعرُّف على الأشياء حوله. الطريقة الأولى أن تُريه قاموساً مصوَّراً — صورة واحدة لكل شيء، الجسم في المنتصف تماماً على خلفية بيضاء. هذا أسلوب ImageNet: «هذا كلب». النتيجة؟ الطفل يحفظ الأسماء، لكنه لا يعرف كيف يبدو الكلب وهو جالس على الأريكة أو مختبئ تحت الطاولة أو ماشٍ خلف الناس.

الطريقة الثانية أن تعطيه ألبوم صور من الحياة اليومية — مطبخ فوضوي، حفلة عيد ميلاد، نزهة في الحديقة. هنا كل كلب وكرسي وكعكة يظهر في مكانه الطبيعي: متداخل مع أشياء أخرى، مختفٍ جزئياً، بأحجام مختلفة. هذا هو أسلوب COCO: تعليم بالطريقة التي يبدو بها العالم فعلاً.

المشكلة: معايير قياس أنظف من الواقع

بحلول عام 2014 كان الميدان يعتمد على بارزتَين، وكلتاهما تعاني من ثغرة جوهرية:

ImageNet — ملايين الصور وآلاف الفئات، لكن كل صورة تعرض جسماً واحداً في مركز الإطار. التي دُرِّبت عليها تعلّمت التصنيف جيداً، لكنها لم تتعلّم أين يقع كل جسم ولا كيف تفصل بين الأجسام في مشهد مركّب.

PASCAL VOC — أدخلت والتجزئة لعشرين فئة، لكن بمعدل 2.3 جسم فحسب في كل صورة. يمكن لأي نموذج أن ينجح عليها دون أن يفهم فعلاً ما يحدث حين تتزاحم الأجسام أو يحجب بعضُها بعضاً أو تتفاوت أحجامها.

الإدراك البصري في العالم الحقيقي يحتاج إلى الثلاثة معاً: ماذا يوجد في المشهد (تصنيف)، أين يقع كل عنصر (كشف)، ما شكله بالتحديد (تجزئة) — وكل ذلك في مشاهد مزدحمة ومتداخلة ومتعددة الأحجام. لم تكن هناك مجموعة بيانات واحدة تدفع النماذج نحو هذا الفهم المتكامل.

افتح في المختبر
قارن بين عدد الأجسام وثراء التوصيفات في كلٍّ من ImageNet وPASCAL VOC وCOCO.
تستيقظ التجربة عند وصولك…

قرارات التصميم: ما الذي يُميّز COCO

اتخذ فريق COCO أربعة قرارات تصميمية مدروسة رسمت هوية مجموعة البيانات هذه:

صور غير أيقونية. لو بحثت عن «كلب» في محرك بحث ستحصل على صورة كلب يتوسّط الإطار بأبهى حُلّة. COCO لم تفعل ذلك؛ بل بحثت عن أزواج من الفئات معاً («كلب + قرص طائر»، «شخص + دراجة») لتحصل على صور تظهر فيها الأجسام في سياقاتها الطبيعية المزدحمة. النتيجة: متوسط عدد العناصر في صورة COCO الواحدة يبلغ 7.7 — أي أكثر من ثلاثة أضعاف ما في PASCAL VOC.

91 فئة من الحياة اليومية. اختيرت الفئات بحيث يستطيع طفل في الرابعة التعرُّف عليها: شخص، سيارة، كرسي، كلب، بيتزا. لا أنواع غريبة من الحشرات ولا قطع صناعية متخصصة. وهذه الفئات مُنظَّمة في 11 فئة عليا (حيوان، مركبة، أثاث، طعام، …) تُشكّل تسلسلاً هرمياً واضحاً.

لكل عنصر على حِدة. كل جسم يحصل على قناعه الخاص على مستوى — ليس مجرد إطار محيط، وليس تسمية دلالية لكل بكسل فحسب، بل محيط مستقل لكل كوب بذاته ولكل شخص بذاته. هذا هو المفصلي الذي أسّس كحقل بحثي قائم بذاته.

إحصاءات سياقية ثرية. صور COCO تحتوي على أجسام صغيرة وأجسام محجوبة وعناصر متعددة في كل صورة أكثر من أي مجموعة بيانات سبقتها، وهذا بالتصميم — لأن الهدف دفع النماذج نحو تعقيد العالم الحقيقي.

افتح في المختبر
تصفّح فئات COCO الـ91 مُرتَّبة حسب الفئات العليا. انقر على أي فئة لعرض إحصائياتها.
تستيقظ التجربة عند وصولك…

خط التوصيف: البشر في صلب العملية

توصيف 2.5 مليون عنصر بأقنعة على مستوى البكسل يحتاج إلى منظومة عمل محكمة. استخدم الفريق خط إنتاج على منصة Amazon Mechanical Turk يمرّ بثلاث مراحل متتالية، كلٌّ منها ينفّذها عمّال مختلفون ضماناً للجودة:

المرحلة الأولى — تحديد الفئات الموجودة. لكل صورة يُحدّد العمّال أيّ الفئات الـ91 موجودة فيها. طرح 91 سؤالاً لكل صورة مكلف جداً، فاستُخدم أسلوب هرمي: أولاً يُسأل عن الفئات العليا الـ11، ثم يُتعمَّق في الفئات الفرعية داخل كل واحدة. ثمانية عمّال يُراجعون كل صورة لضمان عدم إغفال أي فئة.

المرحلة الثانية — رصد العناصر الفردية. يضع كل عامل علامة على كل عنصر يراه من كل فئة مُحدَّدة — حتى 10 عناصر في كل فئة. ومرة أخرى ثمانية عمّال لكل صورة حتى يُلتقَط ما قد يفوت أي عامل بمفرده.

المرحلة الثالثة — رسم محيط كل عنصر. يتتبّع العامل حواف كل جسم مُحدَّد بالنقر حوله لتشكيل مُضلَّع. هذه أكثر الخطوات تكلفة: نحو 79 ثانية لكل عنصر. ثم تأتي خطوة تحقُّق مستقلة لفحص جودة كل قناع.

استغرق خط الإنتاج بأكمله أكثر من 70,000 ساعة عمل بشري. هذا الاستثمار في جودة التوصيف هو السبب الذي جعل COCO مرجعاً موثوقاً لعقد كامل.

افتح في المختبر
تابع مراحل التوصيف الثلاث على صورة نموذجية. لاحظ كيف تبني كل مرحلة على سابقتها.
تستيقظ التجربة عند وصولك…

فهم التوصيفات: الإطارات والأقنعة والتجمُّعات

كل عنصر مُوصَّف في COCO يحمل عدة أنواع من المعلومات، لنستعرضها واحدة تلو الأخرى:

الإطار المحيط — أصغر مستطيل موازٍ للمحاور يُحيط بالجسم. صيغته: [x, y, عرض, ارتفاع]. هذا هو الحد الأدنى من التوصيف المطلوب لمهمة الكشف.

قناع التجزئة — مُضلَّع يتكوّن من قائمة رؤوس [x, y] تتتبّع حواف الجسم. إذا كان الجسم مقطّعاً إلى أجزاء منفصلة (كشخص يظهر من خلال سياج) تُستخدم عدة مضلعات. هذا التوصيف هو ما يُمكّن التجزئة على مستوى العناصر.

المساحة — عدد البكسلات داخل قناع التجزئة. تستخدمها COCO لتقسيم الأجسام إلى ثلاث شرائح حجمية: صغير (أقل من 32²)، متوسط (بين 32² و96²)، وكبير (أكبر من 96²). هذا التقسيم بالغ الأهمية عند التقييم، لأن معظم أخطاء الكشف تحدث مع الأجسام الصغيرة.

iscrowd — علامة ثنائية تُميّز التجمُّعات الكثيفة التي يصعب فصل أفرادها (حشد من الأشخاص، كومة من الموز). هذه المناطق تُرمَّز بأسلوب RLE (ترميز أطوال التكرار) بدلاً من المضلعات، ويُتعامل معها بقواعد خاصة أثناء التقييم.

افتح في المختبر
بدّل بين الإطارات المحيطة وأقنعة التجزئة وتسميات الفئات على صورة توضيحية.
تستيقظ التجربة عند وصولك…

التقييم: كيف تقيس COCO أداء النماذج

قدّمت COCO بروتوكول تقييم أصبح المعيار المعتمد في أبحاث الكشف. الفكرة المحورية بسيطة: بدلاً من قياس عند عتبة واحدة (مثل AP@0.5 الذي اعتمدته PASCAL VOC)، تحسب COCO المتوسط عبر 10 عتبات تقاطع تتدرّج من 0.50 إلى 0.95 بخطوة 0.05 في كل مرة.

لفهم الفرق: حين يكون التقاطع IoU = 0.5 فهذا يعني أن الإطار المُتنبَّأ به يتداخل مع بنحو النصف — تطابق تقريبي ومقبول. عند 0.75 يجب أن يكون التداخل أدقّ بكثير. وعند 0.95 يجب أن يكاد التنبُّؤ يتطابق مع الحقيقة تماماً. حين نأخذ المتوسط على كل هذه العتبات، فإن COCO تُكافئ النماذج التي تُنتج كشوفاً محكمة ودقيقة المواقع، لا مجرد تقريبات فضفاضة.

AP=1TtTAPt,T={0.50,0.55,,0.95}AP = \frac{1}{|T|} \sum_{t \in T} AP_t, \quad T = \{0.50, 0.55, \ldots, 0.95\}
متوسط الدقة في COCO — المقياس الرئيسييُحسب AP كمتوسط على 10 عتبات تقاطع T. كل قيمة AP_t تمثّل المساحة تحت منحنى الدقة مقابل الاستدعاء عند العتبة t. كلما ارتفعت العتبة، زاد تشدُّد المقياس في دقة تحديد الموقع.

تُقدّم COCO أيضاً مقاييس مفصّلة حسب الحجم: AP_S للأجسام الصغيرة (أقل من 32²)، وAP_M للمتوسطة (بين 32² و96²)، وAP_L للكبيرة (أكبر من 96²). هذا التفصيل كشف عن ملاحظة بالغة الأهمية: كشف الأجسام الصغيرة أصعب بمراحل — معظم الكواشف عند إطلاقها لم تحقّق حتى نصف أدائها على الأجسام الكبيرة حين طُبّقت على الصغيرة. هذا الاكتشاف وحده غذّى سنوات من البحث في الكشف متعدد الأحجام و و عالية الدقة.

افتح في المختبر
اسحب الإطار المُتنبَّأ به وراقب كيف يتغيّر التقاطع. لاحظ كيف يزداد المقياس صرامة كلما ارتفعت العتبة.
تستيقظ التجربة عند وصولك…

إحصاءات مجموعة البيانات: ماذا تكشف الأرقام

حين نقارن إحصاءات COCO مع ImageNet Detection وPASCAL VOC نفهم لماذا تُشكّل COCO تحدياً أكبر بكثير:

عدد العناصر في الصورة: في COCO المتوسط هو 7.7 عنصر مُوصَّف في كل صورة، مقابل 2.3 في PASCAL VOC وعنصر واحد فقط في ImageNet. كلما زاد عدد الأجسام في الصورة ازداد الحجب المتبادل بينها وتعقّد السياق وصعبت مهمة الكشف.

أحجام الأجسام: نسبة الأجسام الصغيرة في COCO مرتفعة جداً — نحو 41% من أجسامها صغيرة (أقل من 32² بكسل مساحةً)، مقارنة بنحو 14% فقط في PASCAL VOC. الأجسام الصغيرة تفرض ضغطاً كبيراً على دقة خرائط السمات وتستدعي بنىً متعددة الأحجام.

توزيع الفئات: بخلاف ImageNet حيث لكل فئة تقريباً العدد نفسه من الصور، توزيع COCO غير متوازن بطبيعته — فئة «شخص» تهيمن بوضوح، بينما فئات مثل «محمّصة خبز» أو «مجفف شعر» ظهورها نادر نسبياً. هذا يعكس التوزيع الواقعي لتكرار الأجسام في حياتنا، ويختبر متانة النموذج أمام عدم توازن الفئات.

افتح في المختبر
قارن بين COCO وPASCAL VOC وImageNet في الإحصاءات الرئيسية: عدد العناصر في الصورة وتوزيع الأحجام وتوازن الفئات.
تستيقظ التجربة عند وصولك…

صيغة JSON في COCO

صيغة توصيفات COCO تحوّلت إلى معيار فعلي يتبنّاه الجميع. ملف JSON يحتوي خمسة مفاتيح رئيسية: images وannotations وcategories وlicenses وinfo. كل توصيف يرتبط بصورته عبر image_id وبفئته عبر category_id. أقنعة التجزئة تُخزَّن كقوائم رؤوس مضلعات، ومناطق التجمُّعات تُرمَّز بأسلوب RLE. هذه البنية العلائقية تتيح لك الاستعلام من أي زاوية: جميع الأجسام في صورة معيّنة، أو جميع عناصر فئة بذاتها، أو كل جسم يتجاوز حجماً محدداً.

واجهة pycocotools البرمجية تُغلّف هذه الصيغة بدوال جاهزة للتحميل والتصفية والتقييم. عملياً كل إطار عمل حديث في كشف الأجسام — سواء Detectron2 أو MMDetection أو Ultralytics — يتوقّع أن تكون التوصيفات بصيغة COCO مباشرة.

تحميل واستكشاف توصيفات COCOpython

مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.

from pycocotools.coco import COCO

# تحميل ملف التوصيفات
coco = COCO('annotations/instances_val2017.json')

# عرض جميع الفئات
cats = coco.loadCats(coco.getCatIds())
print([c['name'] for c in cats])
# → ['person', 'bicycle', 'car', 'motorcycle', ..., 'toothbrush']

# جلب كل الصور التي تحتوي على 'كلب' و'قرص طائر' معاً
dog_id = coco.getCatIds(catNms=['dog'])[0]
frisbee_id = coco.getCatIds(catNms=['frisbee'])[0]
img_ids = coco.getImgIds(catIds=[dog_id, frisbee_id])
print(f"صور تحتوي كلب + قرص طائر: {len(img_ids)}")

# تحميل كل توصيفات صورة معيّنة
anns = coco.loadAnns(coco.getAnnIds(imgIds=[img_ids[0]]))
for ann in anns:
    cat = coco.loadCats([ann['category_id']])[0]['name']
    area = ann['area']
    crowd = ann['iscrowd']
    print(f"  {cat}: المساحة={area:.0f}، تجمُّع={crowd}")

النتائج المرجعية: خط البداية

وضعت الورقة خطوطاً مرجعية باستخدام نموذج الأجزاء القابلة للتشوُّه (DPM)، وهو أقوى كاشف كان متاحاً قبل حقبة . النتائج كانت مُقلقة: لم يتجاوز DPM نحو 21% في لكشف الإطارات المحيطة على COCO — وهو أقل بكثير من أدائه على PASCAL VOC. الفجوة الأكبر ظهرت في الأجسام الصغيرة حيث اقترب AP_S من الصفر تقريباً.

هذه النتائج المتواضعة كانت مقصودة تماماً: صُمِّمت COCO لتكون تحدّياً حقيقياً، لا محلولاً سلفاً. الأرقام المنخفضة عند الانطلاق أتاحت لمجتمع البحث مساحة عقدٍ كامل لرفع دقة الكشف من نحو 20% إلى ما يزيد عن 60% من خلال ابتكارات معمارية مثل R-CNN وFaster R-CNN وشبكات هرم السمات وDETR.

ما بعد الكشف — مهام COCO الخمس

الورقة الأصلية ركّزت على الكشف والتجزئة، لكن COCO توسّعت لاحقاً لتستضيف خمس مهام متكاملة تغطّي طيف الفهم البصري بأكمله:

كشف الأجسام — التنبؤ بـإطار محيط وتسمية فئة لكل عنصر في المشهد.

التجزئة على مستوى العناصر — التنبؤ بـقناع على مستوى البكسل لكل عنصر. هذه المهمة تجمع بين الكشف والتجزئة معاً: كل قناع مرتبط بجسم محدد بعينه وليس بتسمية فئة عامة.

كشف النقاط المفتاحية — تحديد المعالم التشريحية لكل شخص في الصورة (17 نقطة تشمل الأنف والعينَين والأذنَين والكتفَين والمرفقَين والمعصمَين والوركَين والركبتَين والكاحلَين). هذه المهمة هي التي فتحت باب أبحاث تقدير وضعية الجسم.

التعليق التوضيحي على الصور — توليد وصف بلغة طبيعية لما يحدث في الصورة. كل صورة مصحوبة بخمسة تعليقات كتبها مُوصِّفون مختلفون.

— تعيين تسمية فئة ومُعرِّف عنصر لكل بكسل في الصورة بلا استثناء، بحيث تُغطّي «الأشياء» (أجسام قابلة للعدّ كالسيارات والأشخاص) و«الخامات» (مناطق غير قابلة للعدّ كالسماء والعشب) على حدٍّ سواء.

افتح في المختبر
انقر على كل مهمة لترى شكل توصيفاتها وما يجب أن يتنبّأ به النموذج.
تستيقظ التجربة عند وصولك…

لماذا كانت COCO مفصلية

  1. 2014

    R-CNN

    أثبت Girshick أن السمات المستخرجة بشبكة عصبية التفافية من مقترحات المناطق تتفوّق بفارق كبير على السمات المصمَّمة يدوياً في مهام الكشف. كان هذا أول كاشف مبني على التعلم العميق يتصدّر نتائج COCO.

  2. 2015

    Faster R-CNN — كشف متكامل من البداية للنهاية

    استبدل مقترحات المناطق الخارجية بشبكة مقترحات مناطق مُتعلَّمة (RPN) مُدمجة في خط الكشف نفسه. النتيجة: كشف شبه لحظي بدقة أعلى بمراحل.

  3. 2017

    Mask R-CNN — التجزئة على مستوى العناصر

    أضاف فرعاً للتنبُّؤ بالقناع فوق بنية Faster R-CNN. لكل إطار يُكتشَف، يتنبّأ النموذج أيضاً بقناع على مستوى البكسل. أقنعة COCO الفردية هي التي جعلت هذا ممكناً وقابلاً للتقييم.

  4. 2017

    شبكات هرم السمات

    بنت FPN خرائط سمات متعددة المقاييس داخل الشبكة الأساسية للكشف، مما حسّن كشف الأجسام الصغيرة بشكل جذري — استجابة مباشرة لتحدّي الأحجام الذي فرضته COCO.

  5. 2017

    RetinaNet ودالة الخسارة البؤرية

    قدّمت دالة الخسارة البؤرية لمعالجة الاختلال الحاد بين الفئات في الكواشف الكثيفة (حيث الغالبية العظمى من المراسي تقع على الخلفية). بفضلها تمكّنت الكواشف ذات المرحلة الواحدة أخيراً من مضاهاة دقة الكواشف ذات المرحلتين على COCO.

  6. 2020

    DETR — الكشف بوصفه تنبؤاً بمجموعة

    وظّف المحوِّلات في كشف الأجسام، مستغنياً عن المكونات المصمَّمة يدوياً كصناديق المراسي وكبت القيم غير القصوى. نقلة نوعية في المنهج قُيِّمت أساساً على COCO.

  7. 2023

    SAM — تجزئة أي شيء

    نموذج أساسي للتجزئة تدرَّب على 11 مليون صورة و1.1 مليار قناع. هذا هو إرث COCO: التجزئة على مستوى العناصر التي بدأت بـ91 فئة توسّعت لتشمل أي مفهوم بصري يمكن تخيُّله.

المرجعLin, Maire, Belongie, Bourdev, Girshick, Hays, Perona, Ramanan, Zitnick, Dollár. Microsoft COCO: Common Objects in Context. ECCV, 2014.

مصطلحات هذه الورقة