فهم الكشف من البداية إلى النهاية في Ultralytics YOLO26#
يقوم YOLO26 بتدريب رأس متعدد إلى واحد ورأس واحد إلى واحد. يستخدم التنبؤ والتحقق رأس متعدد إلى واحد مع قمع الحد الأقصى غير (NMS) بشكل افتراضي. هذا يفضل الدقة باستخدام نفس الأوزان المدربة. قم بتعيين nms=False لاستخدام رأس واحد إلى واحد الأسرع والخالي من NMS بدلاً من ذلك.
يتحكم وسيط واحد في الاختيار عبر التنبؤ، والتحقق، والتتبع، والتصدير، والمقارنة:
nms | التنبؤ والتحقق | التصدير |
|---|---|---|
None (افتراضي) | رأس متعدد إلى واحد؛ يشغل Ultralytics نظام NMS | مخرجات متعددة إلى واحد خام؛ يشغل المستهلك نظام NMS |
True | مثل None | رأس متعدد إلى واحد مع دمج NMS حيثما كان مدعوماً |
False | رأس واحد إلى واحد بدون قمع IoU | مخرجات واحد إلى واحد خالية من NMS حيثما كانت مدعومة |
يعني None عدم تضمين أي معالجة لاحقة اختيارية في النموذج. وهو لا يزيل المعالجة العادية التي تحول مخرجات النموذج إلى نتائج تنبؤ أو مقاييس تحقق. يحتفظ التصنيف، والتجزئة الدلالية، والعمق، والنماذج التي ليس لها رؤوس اكتشاف قابلة للاختيار بسلوك مهمتها الأساسي.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model.predict("image.jpg") # one-to-many + NMS
metrics = model.val(data="coco.yaml") # one-to-many + NMS
results = model.predict("image.jpg", nms=False) # opt into NMS-free inference
results = model.predict("image.jpg", nms=None) # switch back to one-to-many + NMS
model.export(format="onnx") # raw one-to-many outputs
model.export(format="onnx", nms=True) # embed NMS
model.export(format="onnx", nms=False) # NMS-free one-to-one outputsكيفية عمل الكشف من البداية إلى النهاية#
يتشارك الرأسان الهيكل الأساسي والعنق ويتم تحسينهما أثناء التدريب. يوفر رأس متعدد إلى واحد تنبؤات مرشحة متعددة لكل كائن؛ ويزيل NMS الاكتشافات المتداخلة. يتعلم رأس واحد إلى واحد إنتاج تنبؤ واحد لكل كائن. لا يؤدي اختيار مسار الاستدلال إلى تعطيل الإشراف ثنائي الرأس. يستخدم التحقق أثناء التدريب رأس الاستدلال المحدد، لذا فإن اختيار نقطة التحقق والإيقاف المبكر يتبعان نفس تنبؤات النشر.
| الرأس | إخراج الاكتشاف قبل المعالجة الخارجية | المعالجة |
|---|---|---|
| متعدد إلى واحد (افتراضي) | (N, nc + 4, 8400) | تصفية الثقة و NMS |
| واحد إلى واحد | (N, 300, 6) | تصفية الثقة؛ لا يوجد قمع IoU |
هنا N هو حجم الدُفعة، وnc هو عدد الفئات، و8400 هو عدد المرشحين عند imgsz=640. تحتوي صفوف اكتشاف واحد إلى واحد على [x1, y1, x2, y2, confidence, class_id]. تحمل مهام الاكتشاف الأخرى مخرجات إضافية:
| المهمة | إخراج شامل | بيانات إضافية |
|---|---|---|
| الكشف | (N, 300, 6) | — |
| تجزئة المثيلات | (N, 300, 6 + nm) و (N, nm, H, W) | معاملات القناع والنماذج الأولية |
| الوضعية | (N, 300, 57) | 17 نقطة رئيسية × 3 قيم |
| OBB | (N, 300, 7) | زاوية الدوران |
يزيل الدمج فروع الاستدلال غير المستخدمة بالإضافة إلى طي طبقات Conv و BatchNorm. احتفظ بنقطة التحقق الأصلية للتدريب إذا كنت بحاجة إلى تبديل الرؤوس: لا يمكن للدمج إعادة بناء فرع تم إزالته بالفعل. النموذج الذي يتبقى فيه رأس واحد إلى واحد فقط يحتفظ بهذا المسار المتاح.
المخرجات المصدرة#
تقوم نماذج اكتشاف YOLOv8 و YOLO11 و YOLO26 بتصدير تنبؤات متعددة إلى واحد خام بشكل افتراضي. قم بتصدير YOLO26 باستخدام nms=False للاكتشافات الخالية من NMS.
nms=None | nms=False | |
|---|---|---|
| إخراج الاكتشاف | (N, nc + 4, 8400) | (N, 300, 6) |
| تنسيق الصندوق | xywh | xyxy |
| الدرجات | درجة واحدة لكل فئة لكل مرشح | الثقة ومعرف الفئة لكل اكتشاف |
| المعالجة الخارجية | تصفية الثقة و NMS | تصفية الثقة |
ينتج nms=True أيضاً اكتشافات معالجة، ولكنه يستخدم رأس متعدد إلى واحد ويدمج نظام NMS التقليدي. يكون مفيداً عندما يجب أن تتلقى بيئة تشغيل النشر الخاص بك اكتشافات دون تنفيذ القمع بنفسها.
يحدد الرسم البياني للنموذج المصدر مخرجاته. تمرير nms عند تحميله لا يعيد بناء الرسم البياني؛ قم بتصدير نقطة التحقق المصدرية بالقيم المطلوبة nms لتحديد مسار إخراجها. يستخدم Ultralytics البيانات الوصفية للعنصر لتجنب تطبيق NMS مرتين.
توافق تنسيقات التصدير#
تدعم ONNX، وTensorRT، وCoreML، وOpenVINO والعديد من التنسيقات الأخرى الصادرات الخالية من NMS. تعود NCNN، وRKNN، وPaddlePaddle، وExecuTorch، وIMX، وEdge TPU، وQualcomm QNN إلى مسار متعدد إلى واحد عندما لا تستطيع عوامل التشغيل الخاصة بها دعم الإخراج الشامل. تشرح تحذيرات التنسيق هذا التراجع.
- NMS المدمج: يخضع
nms=Trueبقيود المهمة والدقة والشكل الديناميكي لكل تنسيق. تقوم التنسيقات التي ليس لها دعم NMS مدمج بتصدير مخرجات أصلية للمعالجة الخارجية. - CoreML: يدعم NMS المدمج الاكتشاف والتجزئة والوضع بأشكال ثابتة. استخدم
nms=Trueلنماذج الاكتشاف التي تحتاج إلى خط الأنابيب NMS في Xcode Preview. - MNN: يدعم NMS المدمج الاكتشاف والوضع باستخدام
dynamic=False. - IMX: يتطلب الاكتشاف وتجزئة المثيلات والوضع نظام NMS مدمج، ويتم تحديده تلقائياً.
- Hailo: يستخدم YOLO26 موترات خام مع NMS المضيف افتراضياً؛ يحدد
nms=Falseمسار واحد إلى واحد الخاص به. يستخدم اكتشاف YOLOv8/YOLO11 نظام HailoRT NMS. - الكمية: تتراجع إصدارات TensorRT الأقدم من 8.5.0، وTensorRT 10.3.0 INT8 على JetPack 6، وLiteRT INT8 أو
w8a16إلى مخرجات متعددة إلى واحد.
راجع أدلة التكامل الفردية لمعرفة متطلبات الأجهزة. للحصول على موترات إخراج FP16 كاملة، استخدم nms=None؛ يمكن لمؤشرات الفئات الشاملة الاحتفاظ بموترات الإخراج في FP32 حتى عندما يتم كمية النموذج.
المفاضلات بين الدقة والسرعة#
تظهر نتائج COCO المنشورة لـ YOLO26 أن رأس متعدد إلى واحد يحسن mAP الاكتشاف بمقدار 0.6-0.8 نقطة عبر المقاييس الخمسة: على سبيل المثال، 40.9 مقابل 40.1 لـ YOLO26n، و57.5 مقابل 56.9 لـ YOLO26x. يتجنب رأس واحد إلى واحد تمرير NMS ويفضل زمن الانتقال. تحفز هذه النتائج الإعداد الافتراضي؛ وهي لا تضمن مكسباً على كل مجموعة بيانات.
تستخدم قياسات السرعة الخالية من NMS المنشورة nms=False. قارن الدقة وزمن الانتقال باستخدام نفس اختيار الرأس، وحجم الصورة، والدقة، والأجهزة.
الأسئلة الشائعة#
يؤدي ذلك إلى تقييد عمليات الكشف المُعادة بواسطة التنبؤ والتحقق. بالنسبة لعمليات التصدير من طرف إلى طرف (End-to-End) وتلك التي تتضمن تضمين خوارزمية NMS مدمجة، يكون الحد جزءاً من الرسم البياني، لذا يلزم إعادة التصدير لتغييره؛ ويُعد الكشف المدمج لخوارزمية NMS في CoreML هو الاستثناء وليس له حد أقصى للكشف. يمكن أن يحتوي الناتج من طرف إلى طرف على مرشحين أقل عندما توفر الصورة عدداً من المراسي أقل من
max_det.نعم، بالنسبة لـ
nms=Falseأوnms=Trueمع حد الاكتشاف الافتراضي. وحدها الشابلا لا تحدد الرأس الذي تم تصديره. بدلاً من ذلك، عادةً ما يكون لتصدير اكتشاف COCO الخام الافتراضي الشكل(1, 84, 8400)عندimgsz=640.نعم. يحدد نفس وسيط
nmsرأس الاكتشاف المتاح للاكتشاف، وتجزئة المثيلات، والوضع، وOBB. وهو لا يستبدل إعادة بناء القناع، فك تشفير النقاط الرئيسية، معالجة الصناديق الدوارة، احتمالات التصنيف، خرائط الفئات الدلالية، أو فك تشفير العمق.