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 مقابل الاكتشاف الشامل من البداية إلى النهاية#
تقليديًا، كان NMS خطوةً إلزاميةً لـ«التنظيف» تقع خارج الشبكة العصبية الرئيسية، ما يضيف زمن استجابة للاستدلال. إلا أن المجال يتجه نحو بنيات من البداية إلى النهاية.
- NMS القياسي: عملية استدلالية تتطلب ضبطًا يدويًا لعتبة IoU. فإذا كانت العتبة منخفضةً جدًا، فقد لا تُكتشف الكائنات الصالحة المتقاربة من بعضها (استرجاع منخفض recall). وإذا كانت مرتفعةً جدًا، تبقى الاكتشافات المكررة (دقة منخفضة precision).
- النماذج من البداية إلى النهاية: صُممت النماذج من الجيل التالي مثل YOLO26 لتكون من البداية إلى النهاية بطبيعتها. وهي تتعلم التنبؤ بمربع واحد بالضبط لكل كائن أثناء التدريب، فتستوعب عملية NMS داخليًا بفاعلية. ويُلغي ذلك الحاجة إلى المعالجة اللاحقة الخارجية، ما يؤدي إلى سرعات استدلال أعلى ومسارات نشر أبسط على منصة Ultralytics.
المفاهيم ذات الصلة#
- Soft-NMS: صيغة لا تُزال فيها المربعات المتداخلة بشكل صارم، بل تُخفَّض درجات الثقة الخاصة بها. ويسمح ذلك باكتشاف الكائنات المتداخلة إلى حد ما (مثل الأشخاص في حشد) إذا ظلت درجاتها مرتفعةً بما يكفي بعد التلاشي.
- مربعات الارتساء: أشكال مربعات محددة مسبقًا تستخدمها العديد من الكاشفات لتقدير حجم الكائن. ويُطبَّق NMS على التنبؤات النهائية المحسّنة انطلاقًا من مربعات الارتساء هذه.
- نسبة التقاطع إلى الاتحاد (IoU): الصيغة الرياضية التي يستخدمها NMS لتحديد مقدار تداخل مربعين، وتعمل بوصفها عتبة القرار للكبت.









