Non-Maximum Suppression (NMS)
تعرف على كيفية القضاء على صناديق الإحاطة المتكررة في كشف الكائنات باستخدام كبت غير الأعظم (NMS). اكتشف كيف يوفر Ultralytics YOLO26 ميزة NMS أصلية متكاملة.
قمع الحد الأقصى غير المرغوب فيه (NMS) هو تقنية معالجة لاحقة تُستخدم في اكتشاف الكائنات لتحسين التنبؤات الخام التي ينتجها النموذج. عندما يقوم نموذج اكتشاف الكائنات بتحليل صورة، فإنه غالباً ما ينشئ مربعات إحاطة متداخلة متعددة لكائن واحد، ويقترن كل منها بـ درجة ثقة. تحدث هذه التنبؤات الزائدة لأن النموذج قد يكتشف الميزة نفسها بمقاييس أو مواضع مختلفة قليلاً. يقوم NMS بتصفية هذا الناتج عن طريق الاحتفاظ بمربع الإحاطة الأكثر دقة لكل كائن واستبعاد البقية، مما يضمن أن الناتج النهائي يكون نظيفاً ودقيقاً وخالياً من التكرارات.
كيف يعمل قمع القيم غير القصوى#
تعمل خوارزمية NMS على قائمة من مربعات الإحاطة المرشحة ودرجات الثقة المقابلة لها. الهدف هو اختيار أفضل مربع لجسم ما وقمع (إزالة) أي مربعات أخرى تتداخل معه بشكل كبير، حيث من المرجح أن تكون هذه المربعات عبارة عن اكتشافات متكررة لنفس الجسم. تتبع العملية عادةً الخطوات التالية:
-
التصفية: التخلص من جميع مربعات الإحاطة ذات درجات الثقة الأقل من حد معين (على سبيل المثال، 0.25) لإزالة التنبؤات الضعيفة فورًا.
-
الفرز: فرز المربعات المتبقية بترتيب تنازلي بناءً على درجات ثقتها.
-
الاختيار: اختيار المربع صاحب أعلى درجة ثقة ككشف صحيح.
-
المقارنة: قارن مربع الإحاطة المختار هذا بجميع المربعات الأخرى المتبقية باستخدام التقاطع فوق الاتحاد (IoU)، وهو مقياس يقيس التداخل بين مربعين.
-
القمع: إذا تجاوز مقياس IoU بين المربع المختار ومربع آخر حدًا محددًا مسبقًا (على سبيل المثال، 0.45)، يُعتبر المربع صاحب الدرجة الأقل متكررًا ويتم حذفه.
-
التكرار: تكرار العملية مع المربع التالي صاحب أعلى درجة ثقة والذي لم يتم قمعه أو اختياره بعد، حتى تتم معالجة جميع المربعات.
تطبيقات العالم الحقيقي#
تعد NMS ضرورية في السيناريوهات التي تكون فيها الدقة ذات أهمية قصوى حيث يمكن أن تؤدي الاكتشافات المتكررة إلى إرباك الأنظمة الملحقة.
- القيادة الذاتية: في أنظمة السيارات ذاتية القيادة، تكتشف الكاميرات المشاة والمركبات الأخرى وإشارات المرور. قد يتنبأ النموذج بثلاثة مربعات مختلفة قليلاً لمشاة واحد. تضمن NMS أن نظام تخطيط السيارة يتلقى إحداثيات واحدة فقط لهذا المشاة، مما يمنع الكبح المفاجئ أو أخطاء تخطيط المسار الناتجة عن عوائق "وهمية".
- إدارة مخزون التجزئة: عند استخدام الرؤية الحاسوبية لعد المنتجات على الرف، غالباً ما تكون العناصر متراصة بشكل متقارب جداً. بدون استخدام NMS، قد يتم عد علبة صودا واحدة مرتين بسبب التنبؤات المتداخلة، مما يؤدي إلى مستويات مخزون غير دقيقة. يقوم NMS بتحسين عمليات الاكتشاف هذه لضمان تطابق عد المخزون مع الواقع.
تطبيق NMS باستخدام PyTorch#
بينما تتعامل العديد من الأطر الحديثة مع Nms داخلياً، فإن فهم آلية التنفيذ يساعد في ضبط المعلمات. يوضح المثال التالي كيفية تطبيق NMS باستخدام مكتبة PyTorch:
import torch
import torchvision.ops as ops
# Example bounding boxes: [x1, y1, x2, y2]
boxes = torch.tensor(
[
[100, 100, 200, 200], # Box A
[105, 105, 195, 195], # Box B (High overlap with A)
[300, 300, 400, 400], # Box C (Distinct object)
],
dtype=torch.float32,
)
# Confidence scores for each box
scores = torch.tensor([0.9, 0.8, 0.95], dtype=torch.float32)
# Apply NMS with an IoU threshold of 0.5
# Boxes with IoU > 0.5 relative to the highest scoring box are suppressed
keep_indices = ops.nms(boxes, scores, iou_threshold=0.5)
print(f"Indices to keep: {keep_indices.tolist()}")
# Output will likely be [2, 0] corresponding to Box C (0.95) and Box A (0.9),
# while Box B (0.8) is suppressed due to overlap with A.NMS مقابل الكشف الشامل (End-to-End)#
تقليدياً، كان NMS خطوة "تنظيف" إلزامية تقع خارج الشبكة العصبية الرئيسية، مما يضيف زمن انتقال الاستدلال. ومع ذلك، فإن المجال يتطور نحو بنيات من طرف إلى طرف.
- NMS القياسي: عملية استدلالية تتطلب ضبطاً يدويّاً لعتبة IoU. إذا كانت العتبة منخفضة للغاية، فقد يتم تفويت كائنات صالحة قريبة من بعضها البعض (استرجاع منخفض). وإذا كانت مرتفعة للغاية، تظل التكرارات موجودة (دقة منخفضة).
- نماذج من طرف إلى طرف: تم تصميم نماذج الجيل التالي مثل YOLO26 لتكون أصلية من طرف إلى طرف. وهي تتعلم كيفية التنبؤ بمربع واحد بالضبط لكل كائن أثناء التدريب، مما يؤدي بفعالية إلى استيعاب عملية NMS داخلياً. وهذا يلغي الحاجة إلى المعالجة اللاحقة الخارجية، مما ينتج عنه سرعات استدلال أسرع وخطوط أنابيب نشر أبسط على منصة Ultralytics.
مفاهيم ذات صلة#
- Soft-NMS: نوع مختلف لا تتم فيه إزالة المربعات المتداخلة بشكل صارم، بل يتم تخفيض درجات الثقة الخاصة بها. يتيح ذلك للكائنات المتداخلة إلى حد ما (مثل الأشخاص في حشد) الاستمرار في الاكتشاف إذا ظلت درجاتهم عالية بما يكفي بعد الاضمحلال.
- مربعات الاركاء (Anchor Boxes): أشكال مربعات محددة مسبقاً تُستخدم بواسطة العديد من الكواشف لتقدير حجم الكائن. يتم تطبيق NMS على التنبؤات النهائية التي تم تحسينها من هذه المربعات.
- التقاطع فوق الاتحاد (IoU): الصيغة الرياضية التي يستخدمها NMS لتحديد مدى تداخل مربعين، والتي تعمل كعتبة قرار للقمع.






