YOLOv10: الكشف الشامل عن الأجسام في الوقت الفعلي
يقدم YOLOv10، المبني على حزمة Ultralytics بايثون بواسطة باحثين في جامعة تسينغ هوا، نهجًا جديدًا للكشف عن الأجسام في الوقت الفعلي، ويعالج أوجه القصور في مرحلة ما بعد المعالجة وهندسة النموذج الموجودة في إصدارات YOLO السابقة. من خلال التخلص من Non-Maximum Suppression (NMS) وتحسين مكونات النموذج المختلفة، يحقق YOLOv10 أداءً متطورًا مع تقليل النفقات الحسابية بشكل كبير. تُظهر التجارب المكثفة المفاضلات الفائقة بين الدقة وزمن الوصول عبر نطاقات متعددة من نماذج.

شاهد: كيفية تدريب YOLOv10 على مجموعة بيانات SKU-110k باستخدام Ultralytics | مجموعة بيانات البيع بالتجزئة
نظرة عامة
يهدف الكشف عن الكائنات في الوقت الفعلي إلى التنبؤ بدقة بفئات الكائنات ومواقعها في الصور بزمن انتقال منخفض. كانت سلسلة YOLO في طليعة هذا البحث نظرًا لتوازنها بين الأداء والكفاءة. ومع ذلك، فإن الاعتماد على NMS وأوجه القصور المعمارية أعاقت الأداء الأمثل. تعالج YOLOv10 هذه المشكلات من خلال تقديم تعيينات مزدوجة متسقة للتدريب الخالي من NMS واستراتيجية تصميم نموذج شاملة مدفوعة بالكفاءة والدقة.
البنية
تعتمد بنية YOLOv10 على نقاط القوة في نماذج YOLO السابقة مع تقديم العديد من الابتكارات الرئيسية. تتكون بنية النموذج من المكونات التالية:
- Backbone: المسؤول عن استخراج الميزات، يستخدم Backbone في YOLOv10 نسخة محسنة من CSPNet (شبكة جزئية عبر المراحل) لتحسين تدفق التدرج وتقليل التكرار الحسابي.
- الرقبة: تم تصميم الرقبة لتجميع الميزات من مقاييس مختلفة وتمريرها إلى الرأس. وهي تتضمن طبقات PAN (شبكة تجميع المسار) لدمج الميزات متعددة المقاييس بشكل فعال.
- رأس واحد إلى متعدد: ينشئ تنبؤات متعددة لكل كائن أثناء التدريب لتوفير إشارات إشرافية غنية وتحسين دقة التعلم.
- رأس واحد لواحد: يقوم بإنشاء أفضل تنبؤ واحد لكل كائن أثناء الاستدلال لإزالة الحاجة إلى NMS، وبالتالي تقليل زمن الوصول وتحسين الكفاءة.
الميزات الرئيسية
- تدريب بدون NMS: يستخدم تعيينات مزدوجة متسقة لإزالة الحاجة إلى NMS، مما يقلل من زمن الوصول للاستدلال.
- تصميم النموذج الشامل: تحسين شامل لمختلف المكونات من وجهتي نظر الكفاءة والدقة، بما في ذلك رؤوس التصنيف خفيفة الوزن، وأخذ العينات المتباعدة مكانيًا وقنواتيًا، وتصميم الكتلة الموجهة بالترتيب.
- قدرات نموذج محسّنة: يتضمن التفافات ذات النواة الكبيرة ووحدات الانتباه الذاتي الجزئي لتحسين الأداء دون تكلفة حسابية كبيرة.
متغيرات النموذج
تأتي YOLOv10 بمقاييس نماذج مختلفة لتلبية احتياجات التطبيقات المختلفة:
- YOLOv10n: نسخة نانو للبيئات ذات الموارد المحدودة للغاية.
- YOLOv10s: نسخة صغيرة توازن بين السرعة والدقة.
- YOLOv10m: نسخة متوسطة للاستخدام للأغراض العامة.
- YOLOv10b: نسخة متوازنة مع زيادة في العرض لتحقيق دقة أعلى.
- YOLOv10l: نسخة كبيرة لتحقيق دقة أعلى على حساب زيادة الموارد الحسابية.
- YOLOv10x: نسخة كبيرة جدًا لتحقيق أقصى قدر من الدقة والأداء.
الأداء
يتفوق YOLOv10 على إصدارات YOLO السابقة والنماذج الحديثة الأخرى من حيث الدقة والكفاءة. على سبيل المثال، YOLOv10s أسرع بـ 1.8 مرة من RT-DETR-R18 مع AP مماثل على مجموعة بيانات COCO، و YOLOv10b لديه زمن انتقال أقل بنسبة 46% وعدد معلمات أقل بنسبة 25% من YOLOv9-C مع نفس الأداء.
الأداء
تم قياس زمن الوصول باستخدام TensorRT FP16 على T4 GPU.
| النموذج | حجم الإدخال | APval | FLOPs (G) | زمن الوصول (بالمللي ثانية) |
|---|---|---|---|---|
| YOLOv10n | 640 | 38.5 | 6.7 | 1.84 |
| YOLOv10s | 640 | 46.3 | 21.6 | 2.49 |
| YOLOv10m | 640 | 51.1 | 59.1 | 4.74 |
| YOLOv10b | 640 | 52.5 | 92.0 | 5.74 |
| YOLOv10l | 640 | 53.2 | 120.3 | 7.28 |
| YOLOv10x | 640 | 54.4 | 160.4 | 10.70 |
المنهجية
تعيينات مزدوجة متسقة للتدريب الخالي من NMS
يستخدم YOLOv10 تعيينات تسمية مزدوجة، تجمع بين استراتيجيات واحد إلى متعدد وواحد إلى واحد أثناء التدريب لضمان إشراف غني ونشر فعال من طرف إلى طرف. يتوافق مقياس المطابقة المتسق مع الإشراف بين كلتا الاستراتيجيتين، مما يعزز جودة التنبؤات أثناء الاستدلال.
تصميم النموذج الشامل المدفوع بالكفاءة-الدقة
تحسينات الكفاءة
- رأس تصنيف خفيف الوزن: يقلل من النفقات الحسابية لرأس التصنيف باستخدام الالتواءات المنفصلة حسب العمق.
- أخذ العينات المتباعدة مكانيًا وقنواتيًا: يفصل بين تقليل المسافة وتعديل القناة لتقليل فقدان المعلومات والتكلفة الحسابية.
- تصميم الكتلة الموجهة بالترتيب: يقوم بتكييف تصميم الكتلة بناءً على التكرار المرحلي الجوهري، مما يضمن الاستخدام الأمثل للمعلمات.
تحسينات الدقة
- التفاف حجم النواة الكبير: يوسع حقل الاستقبال لتعزيز قدرة استخلاص الميزات.
- الانتباه الذاتي الجزئي (PSA): يدمج وحدات الانتباه الذاتي لتحسين تعلم التمثيل العالمي بأقل قدر من النفقات.
التجارب والنتائج
تم اختبار YOLOv10 على نطاق واسع على المعايير القياسية مثل COCO، مما يدل على الأداء والكفاءة الفائقين. يحقق النموذج أحدث النتائج عبر متغيرات مختلفة، ويعرض تحسينات كبيرة في زمن الوصول والدقة مقارنة بالإصدارات السابقة وأجهزة الكشف المعاصرة الأخرى.
المقارنات

مقارنة بأحدث أجهزة الكشف الأخرى:
- تعد YOLOv10s / x أسرع بمقدار 1.8 / 1.3 مرة من RT-DETR-R18 / R101 بدقة مماثلة
- يحتوي YOLOv10b على معلمات أقل بنسبة 25% ووقت استجابة أقل بنسبة 46% من YOLOv9-C بنفس الدقة
- يتفوق YOLOv8l / x أداء YOLOv10l / x بمقدار 0.3 AP / 0.5 AP مع معلمات أقل بمقدار 1.8 × / 2.3 ×
الأداء
إليك مقارنة تفصيلية بين متغيرات YOLOv10 مع أحدث النماذج:
| النموذج | المعلمات (M) | FLOPs (G) | mAPval 50-95 | زمن الوصول (ms) | زمن الوصول-إعادة التوجيه (ms) |
|---|---|---|---|---|---|
| YOLOv6-3.0-N | 4.7 | 11.4 | 37.0 | 2.69 | 1.76 |
| Gold-YOLO-N | 5.6 | 12.1 | 39.6 | 2.92 | 1.82 |
| YOLOv8n | 3.2 | 8.7 | 37.3 | 6.16 | 1.77 |
| YOLOv10n | 2.3 | 6.7 | 39.5 | 1.84 | 1.79 |
| YOLOv6-3.0-S | 18.5 | 45.3 | 44.3 | 3.42 | 2.35 |
| Gold-YOLO-S | 21.5 | 46.0 | 45.4 | 3.82 | 2.73 |
| YOLOv8s | 11.2 | 28.6 | 44.9 | 7.07 | 2.33 |
| YOLOv10s | 7.2 | 21.6 | 46.8 | 2.49 | 2.39 |
| RT-DETR-R18 | 20.0 | 60.0 | 46.5 | 4.58 | 4.49 |
| YOLOv6-3.0-M | 34.9 | 85.8 | 49.1 | 5.63 | 4.56 |
| Gold-YOLO-M | 41.3 | 87.5 | 49.8 | 6.38 | 5.45 |
| YOLOv8m | 25.9 | 78.9 | 50.6 | 9.50 | 5.09 |
| YOLOv10m | 15.4 | 59.1 | 51.3 | 4.74 | 4.63 |
| YOLOv6-3.0-L | 59.6 | 150.7 | 51.8 | 9.02 | 7.90 |
| Gold-YOLO-L | 75.1 | 151.7 | 51.8 | 10.65 | 9.78 |
| YOLOv8l | 43.7 | 165.2 | 52.9 | 12.39 | 8.06 |
| RT-DETR-R50 | 42.0 | 136.0 | 53.1 | 9.20 | 9.07 |
| YOLOv10l | 24.4 | 120.3 | 53.4 | 7.28 | 7.21 |
| YOLOv8x | 68.2 | 257.8 | 53.9 | 16.86 | 12.83 |
| RT-DETR-R101 | 76.0 | 259.0 | 54.3 | 13.71 | 13.58 |
| YOLOv10x | 29.5 | 160.4 | 54.4 | 10.70 | 10.60 |
أمثلة الاستخدام
للتنبؤ بصور جديدة باستخدام YOLOv10:
مثال
from ultralytics import YOLO
# Load a pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")
# Perform object detection on an image
results = model("image.jpg")
# Display the results
results[0].show()
# Load a COCO-pretrained YOLOv10n model and run inference on the 'bus.jpg' image
yolo detect predict model=yolov10n.pt source=path/to/bus.jpg
لتدريب YOLOv10 على مجموعة بيانات مخصصة:
مثال
from ultralytics import YOLO
# Load YOLOv10n model from scratch
model = YOLO("yolov10n.yaml")
# Train the model
model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Build a YOLOv10n model from scratch and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov10n.yaml data=coco8.yaml epochs=100 imgsz=640
# Build a YOLOv10n model from scratch and run inference on the 'bus.jpg' image
yolo predict model=yolov10n.yaml source=path/to/bus.jpg
المهام والأوضاع المدعومة
تقدم سلسلة نماذج YOLOv10 مجموعة من النماذج، تم تحسين كل منها للكشف عن الكائنات عالي الأداء. تلبي هذه النماذج الاحتياجات الحسابية المختلفة ومتطلبات الدقة، مما يجعلها متعددة الاستخدامات لمجموعة واسعة من التطبيقات.
| النموذج | أسماء الملفات | المهام | الاستدلال | التحقق | التدريب | تصدير |
|---|---|---|---|---|---|---|
| YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt | الكشف عن الكائنات | ✅ | ✅ | ✅ | ✅ |
تصدير YOLOv10
نظرًا للعمليات الجديدة التي تم تقديمها مع YOLOv10، لا يتم دعم جميع تنسيقات التصدير التي توفرها Ultralytics حاليًا. يوضح الجدول التالي التنسيقات التي تم تحويلها بنجاح باستخدام Ultralytics لـ YOLOv10. لا تتردد في فتح طلب سحب إذا كنت قادرًا على تقديم تغيير مساهمة لإضافة دعم التصدير لتنسيقات إضافية لـ YOLOv10.
| تنسيق التصدير | دعم التصدير | الاستدلال على النموذج المصدَّر | ملاحظات |
|---|---|---|---|
| TorchScript | ✅ | ✅ | تنسيق نموذج PyTorch القياسي. |
| ONNX | ✅ | ✅ | مدعوم على نطاق واسع للنشر. |
| OpenVINO | ✅ | ✅ | محسن لأجهزة Intel. |
| TensorRT | ✅ | ✅ | محسن لوحدات معالجة الرسوميات NVIDIA. |
| CoreML | ✅ | ✅ | يقتصر على أجهزة Apple. |
| TF SavedModel | ✅ | ✅ | تنسيق النموذج القياسي لـ TensorFlow. |
| TF GraphDef | ✅ | ✅ | تنسيق TensorFlow القديم. |
| TF Lite | ✅ | ✅ | محسن للأجهزة المحمولة والمدمجة. |
| TF Edge TPU | ✅ | ✅ | خاص بأجهزة Edge TPU من Google. |
| TF.js | ✅ | ✅ | بيئة JavaScript للاستخدام في المتصفح. |
| PaddlePaddle | ❌ | ❌ | شائع في الصين؛ دعم عالمي أقل. |
| NCNN | ✅ | ❌ | طبقة torch.topk غير موجودة أو مسجلة |
الخلاصة
يضع YOLOv10 معيارًا جديدًا في الكشف عن الكائنات في الوقت الفعلي من خلال معالجة أوجه القصور في إصدارات YOLO السابقة ودمج استراتيجيات تصميم مبتكرة. إن قدرته على تقديم دقة عالية بتكلفة حسابية منخفضة تجعله خيارًا مثاليًا لمجموعة واسعة من تطبيقات العالم الحقيقي بما في ذلك التصنيع و البيع بالتجزئة و المركبات ذاتية القيادة.
الاقتباسات والإقرارات
نود أن نتقدم بالشكر لمؤلفي YOLOv10 من جامعة تسينغ هوا لأبحاثهم المكثفة ومساهماتهم الكبيرة في إطار عمل Ultralytics:
@article{THU-MIGyolov10,
title={YOLOv10: Real-Time End-to-End Object Detection},
author={Ao Wang, Hui Chen, Lihao Liu, et al.},
journal={arXiv preprint arXiv:2405.14458},
year={2024},
institution={Tsinghua University},
license = {AGPL-3.0}
}
للحصول على تفاصيل التنفيذ والابتكارات المعمارية والنتائج التجريبية، يرجى الرجوع إلى الورقة البحثية و مستودع GitHub الخاص بـ YOLOv10 من قبل فريق جامعة Tsinghua.
الأسئلة الشائعة
ما هو YOLOv10 وكيف يختلف عن إصدارات YOLO السابقة؟
يقدم YOLOv10، الذي تم تطويره بواسطة باحثين في جامعة تسينغ هوا، العديد من الابتكارات الرئيسية للكشف عن الأجسام في الوقت الفعلي. فهو يلغي الحاجة إلى Non-Maximum Suppression (NMS) من خلال استخدام تعيينات مزدوجة متسقة أثناء التدريب ومكونات نموذج محسّنة لتحقيق أداء فائق مع تقليل النفقات الحسابية. لمزيد من التفاصيل حول بنيته وميزاته الرئيسية، تحقق من قسم نظرة عامة على YOLOv10.
كيف يمكنني البدء في تشغيل الاستدلال باستخدام YOLOv10
لتسهيل الاستدلال، يمكنك استخدام مكتبة Ultralytics YOLO Python أو واجهة سطر الأوامر (CLI). فيما يلي أمثلة على التنبؤ بصور جديدة باستخدام YOLOv10:
مثال
from ultralytics import YOLO
# Load the pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show()
yolo detect predict model=yolov10n.pt source=path/to/image.jpg
لمزيد من أمثلة الاستخدام، قم بزيارة قسم أمثلة الاستخدام الخاص بنا.
ما هي متغيرات النماذج التي تقدمها YOLOv10 وما هي حالات استخدامها؟
يقدم YOLOv10 العديد من متغيرات النماذج لتلبية حالات الاستخدام المختلفة:
- YOLOv10n: مناسبة للبيئات ذات الموارد المحدودة للغاية
- YOLOv10s: توازن بين السرعة والدقة
- YOLOv10m: استخدام للأغراض العامة
- YOLOv10b: دقة أعلى مع زيادة في العرض
- YOLOv10l: دقة عالية على حساب الموارد الحسابية
- YOLOv10x: أقصى دقة وأداء
تم تصميم كل متغير لتلبية احتياجات حسابية مختلفة ومتطلبات دقة، مما يجعلها متعددة الاستخدامات لمجموعة متنوعة من التطبيقات. استكشف قسم متغيرات النموذج لمزيد من المعلومات.
كيف تعمل طريقة NMS-free في YOLOv10 على تحسين الأداء؟
تزيل YOLOv10 الحاجة إلى التثبيط غير الأقصى (NMS) أثناء الاستدلال من خلال استخدام تعيينات مزدوجة متسقة للتدريب. يقلل هذا النهج من زمن انتقال الاستدلال ويعزز كفاءة التنبؤ. يتضمن الهيكل أيضًا رأسًا فرديًا للاستدلال، مما يضمن حصول كل كائن على أفضل تنبؤ واحد. للحصول على شرح مفصل، راجع قسم التعيينات المزدوجة المتسقة للتدريب بدون NMS.
أين يمكنني العثور على خيارات التصدير لنماذج YOLOv10؟
يدعم YOLOv10 العديد من تنسيقات التصدير، بما في ذلك TorchScript و ONNX و OpenVINO و TensorRT. ومع ذلك، لا يتم دعم جميع تنسيقات التصدير التي توفرها Ultralytics حاليًا لـ YOLOv10 نظرًا لعملياته الجديدة. للحصول على تفاصيل حول التنسيقات المدعومة وإرشادات حول التصدير، تفضل بزيارة قسم تصدير YOLOv10.
ما هي المعايير القياسية لأداء نماذج YOLOv10؟
يتفوق YOLOv10 على إصدارات YOLO السابقة والنماذج الحديثة الأخرى في كل من الدقة والكفاءة. على سبيل المثال، YOLOv10s أسرع بـ 1.8 مرة من RT-DETR-R18 مع AP مماثل على مجموعة بيانات COCO. يُظهر YOLOv10b زمن انتقال أقل بنسبة 46% وعدد معلمات أقل بنسبة 25% من YOLOv9-C مع نفس الأداء. يمكن العثور على معايير مفصلة في قسم المقارنات.