الرؤية الحاسوبية متوسط · Intermediate 15 دقيقة

كشف الأجسام

Object Detection

تحديد الأجسام ومواقعها: المربعات المحيطة وIoU وNMS ومقياس mAP، والكاشفات ذات المرحلة والمرحلتين.

تقدّمك في المسار0%

المخرج

لكل جسم: \((x_1, y_1, x_2, y_2)\) أو \((c_x, c_y, w, h)\)، وفئة، ودرجة ثقة.

IoU

$$\text{IoU}(A, B) = \frac{|A \cap B|}{|A \cup B|}$$

def iou(a, b):
    x1, y1 = max(a[0], b[0]), max(a[1], b[1])
    x2, y2 = min(a[2], b[2]), min(a[3], b[3])
    inter = max(0, x2 - x1) * max(0, y2 - y1)
    area = lambda r: (r[2] - r[0]) * (r[3] - r[1])
    return inter / (area(a) + area(b) - inter)

print(round(iou((0, 0, 10, 10), (5, 0, 15, 10)), 3))   # 0.333

NMS

  1. رتب الكشوفات حسب الثقة.
  2. خذ الأعلى وأضفه للنتائج.
  3. احذف كل ما يتجاوز تداخله معه عتبة (مثلاً 0.5).
  4. كرر حتى تنتهي القائمة.

تتوفر جاهزة في torchvision.ops.nms.

التقييم: mAP

  • يُعد الكشف صحيحاً (TP) إذا كانت فئته صحيحة وIoU مع جسم حقيقي فوق عتبة.
  • يُرسم منحنى الدقة-الاستدعاء لكل فئة وتُحسب مساحته (AP)، ثم المتوسط على الفئات (mAP).
  • معيار COCO الأساسي يأخذ المتوسط على عتبات IoU من 0.50 إلى 0.95 بخطوة 0.05.

عائلات الكاشفات

العائلةأمثلةالسمات
مرحلتانR-CNN، Fast R-CNN، Faster R-CNNدقة عالية، أبطأ
مرحلة واحدةYOLO، SSD، RetinaNetسرعة عالية، مناسبة للزمن الحقيقي
قائمة على المحوّلاتDETR وتطويراتهدون مراسٍ ولا NMS يدوي

تجربة سريعة

import torch
from torchvision.models.detection import fasterrcnn_resnet50_fpn, FasterRCNN_ResNet50_FPN_Weights
from torchvision.io import read_image

weights = FasterRCNN_ResNet50_FPN_Weights.DEFAULT
model = fasterrcnn_resnet50_fpn(weights=weights).eval()
img = read_image("street.jpg")
with torch.no_grad():
    pred = model([weights.transforms()(img)])[0]
keep = pred["scores"] > 0.7
labels = [weights.meta["categories"][i] for i in pred["labels"][keep]]
print(labels, pred["boxes"][keep])

مصطلحات الدرس

التقاطع على الاتحاد Intersection over Union
نسبة مساحة تقاطع مربعين إلى مساحة اتحادهما، وتقيس مدى تطابق المربع المتنبأ مع الحقيقي.
الكبت غير الأقصى Non-Maximum Suppression
إزالة المربعات المتداخلة بشدة مع مربع أعلى ثقة للجسم نفسه.
متوسط الدقة المتوسطة mean Average Precision
متوسط مساحة منحنى الدقة-الاستدعاء عبر الفئات، وأحياناً عبر عتبات IoU متعددة.

الملخص

كشف الأجسام يحدد لكل جسم في الصورة فئته ومربعاً محيطاً به. يقاس تطابق المربعات بمقياس التقاطع على الاتحاد (IoU)، وتُزال الكشوفات المكررة بالكبت غير الأقصى (NMS)، ويُقيَّم الأداء بمتوسط الدقة المتوسطة (mAP). تنقسم الكاشفات إلى ذات مرحلتين مثل Faster R-CNN (اقتراح مناطق ثم تصنيفها) وذات مرحلة واحدة مثل YOLO وSSD (تنبؤ مباشر وأسرع)، إضافة إلى كاشفات قائمة على المحوّلات مثل DETR.

أسئلة مراجعة

  1. احسب IoU لمربعين مساحة كل منهما 100 وتقاطعهما 50.

    الاتحاد = 100 + 100 − 50 = 150، وIoU = 50/150 ≈ 0.33.

  2. ما الفرق الأساسي بين كاشف بمرحلتين وكاشف بمرحلة واحدة؟

    ذو المرحلتين يقترح مناطق مرشحة ثم يصنفها ويحسنها، وذو المرحلة الواحدة يتنبأ بالمربعات والفئات مباشرة في تمريرة واحدة فيكون أسرع غالباً.

المصادر والمراجع

  1. Ren et al. (2015) Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks — arXiv
  2. Lin et al. (2014) Microsoft COCO: Common Objects in Context — arXiv
  3. Carion et al. (2020) End-to-End Object Detection with Transformers (DETR) — arXiv
  4. torchvision — Object Detection models

إكمال الدرس