YOLOv10: اكتشاف الأجسام في الزمن الحقيقي من البداية إلى النهاية#
يقدم YOLOv10، الذي صدر في مايو 2024 وطوّره باحثون في جامعة تسينغهوا اعتمادًا على حزمة Python من Ultralytics، نهجًا جديدًا لاكتشاف الأجسام في الزمن الحقيقي يعالج أوجه القصور في المعالجة اللاحقة وبنية النماذج الموجودة في إصدارات YOLO السابقة. وبإلغاء الكبت غير الأقصى (NMS) وتحسين مكونات مختلفة من النموذج، حقق YOLOv10 أداءً ممتازًا مع خفض كبير للنفقات الحاسوبية العامة وقت إصداره. وقد مهّد تصميمه الشامل الخالي من NMS الطريق لنهج طُوّر لاحقًا في YOLO26.

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

مقارنةً بالكواشف الأخرى المتطورة:
- يعمل YOLOv10s / x بسرعة أكبر بمقدار 1.8× / 1.3× من RT-DETR-R18 / R101 مع دقة مماثلة
- يحتوي YOLOv10b على معلمات أقل بنسبة 25% وزمن استجابة أقل بنسبة 46% من YOLOv9-C مع الدقة نفسها
- يتفوق YOLOv10l / x على YOLOv8l / x بمقدار 0.3 AP / 0.5 AP، مع عدد معلمات أقل بمقدار 1.8× / 2.3×
الأرقام أدناه واردة كما وردت في ورقة YOLOv10، وقد قِيست وفق بروتوكولها الخاص، لذا لا يمكن مقارنتها مباشرةً بالقيم الواردة في صفحات نماذج Ultralytics:
| النموذج | المعلمات (M) | FLOPs (G) | mAPالتحقق 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 | 38.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.3 | 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.1 | 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.2 | 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 |
قيم المعلمات وFLOPs تخص النموذج المدمج بعد model.fuse()، الذي يدمج طبقات Conv وBatchNorm ويزيل رأس الكشف المساعد من واحد إلى متعدد. تحتفظ نقاط التحقق المدربة مسبقًا ببنية التدريب الكاملة، وقد تُظهر أعدادًا أعلى.
أمثلة الاستخدام#
يمكن أيضًا تدريب النماذج على GPU سحابية عبر منصة Ultralytics. لإجراء تنبؤات على صور جديدة باستخدام YOLOv10:
from ultralytics import YOLO
# تحميل نموذج YOLOv10n مدرّب مسبقًا
model = YOLO("yolov10n.pt")
# إجراء كشف الكائنات في صورة
results = model("image.jpg")
# اعرض النتائج
results[0].show()لتدريب YOLOv10 على مجموعة بيانات مخصصة:
from ultralytics import YOLO
# تحميل نموذج YOLOv10n من البداية
model = YOLO("yolov10n.yaml")
# تدريب النموذج
model.train(data="coco8.yaml", epochs=100, imgsz=640)المهام والأوضاع المدعومة#
تقدم سلسلة نماذج YOLOv10 مجموعة من النماذج، حُسّن كل منها لتحقيق أداء عالٍ في اكتشاف الأجسام. تلبي هذه النماذج احتياجات متفاوتة من حيث الموارد الحسابية ومتطلبات الدقة، ما يجعلها متعددة الاستخدامات في نطاق واسع من التطبيقات.
| النموذج | أسماء الملفات | المهام | التدريب | التحقق | الاستدلال | التصدير |
|---|---|---|---|---|---|---|
| YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10b.pt yolov10l.pt yolov10x.pt | كشف الكائنات | ✅ | ✅ | ✅ | ✅ |
تصدير YOLOv10#
نظرًا إلى العمليات الجديدة التي أُدخلت مع YOLOv10، لا تدعم Ultralytics حاليًا جميع تنسيقات التصدير المتاحة. يوضح الجدول التالي التنسيقات التي نجح تحويلها باستخدام Ultralytics لـ YOLOv10. لا تتردد في فتح طلب سحب إذا كنت قادرًا على تقديم مساهمة لإضافة دعم التصدير إلى تنسيقات إضافية لـ YOLOv10.
| تنسيق التصدير | دعم التصدير | استدلال النموذج المُصدّر | ملاحظات |
|---|---|---|---|
| TorchScript | ✅ | ✅ | تنسيق نموذج PyTorch القياسي. |
| ONNX | ✅ | ✅ | مدعوم على نطاق واسع للنشر. |
| OpenVINO | ✅ | ✅ | محسّن لأجهزة Intel. |
| TensorRT | ✅ | ✅ | محسّن لوحدات GPU من NVIDIA. |
| CoreML | ✅ | ✅ | يقتصر على أجهزة Apple. |
| TF SavedModel | ✅ | ✅ | تنسيق النماذج القياسي لـTensorFlow. |
| TF GraphDef | ✅ | ✅ | تنسيق TensorFlow قديم. |
| TF Edge TPU | ✅ | ✅ | مخصص لأجهزة Edge TPU من Google. |
| LiteRT | ✅ | ✅ | محسّن للأجهزة المحمولة والأنظمة المضمنة والمتصفحات (LiteRT.js). |
| PaddlePaddle | ❌ | ❌ | شائع في الصين؛ ودعمه أقل انتشارًا عالميًا. |
| NCNN | ✅ | ❌ | لا يدعم وقت تشغيل NCNN العامل torch.topk. |
الخلاصة#
أرسى YOLOv10 معيارًا جديدًا في اكتشاف الأجسام في الوقت الفعلي عند إصداره، إذ عالج أوجه القصور في إصدارات YOLO السابقة واعتمد استراتيجيات تصميم مبتكرة. وكان نهجه الذي لا يستخدم NMS رائدًا في اكتشاف الأجسام من البداية إلى النهاية ضمن عائلة YOLO. للاطلاع على أحدث نموذج من Ultralytics، بأداء محسّن واستدلال دون NMS، راجع YOLO26.
الاستشهادات والشكر والتقدير#
نود أن نعرب عن تقديرنا لمؤلفي YOLOv10 من جامعة تسينغهوا على أبحاثهم الواسعة ومساهماتهم المهمة في إطار عمل Ultralytics:
@inproceedings{wang2024yolov10,
title={YOLOv10: Real-Time End-to-End Object Detection},
author={Wang, Ao and Chen, Hui and Liu, Lihao and Chen, Kai and Lin, Zijia and Han, Jungong and Ding, Guiguang},
booktitle={Advances in Neural Information Processing Systems},
doi = {10.52202/079017-3429},
url = {https://proceedings.neurips.cc/paper_files/paper/2024/file/c34ddd05eb089991f06f3c5dc36836e0-Paper-Conference.pdf},
volume={37},
pages={107984--108011},
year={2024}
}للاطلاع على تفاصيل التنفيذ والابتكارات المعمارية والنتائج التجريبية، يُرجى الرجوع إلى ورقة YOLOv10 البحثية ومستودع GitHub لفريق جامعة تسينغهوا.
الأسئلة الشائعة#
يقدم YOLOv10، الذي طوّره باحثون في جامعة تسينغهوا، ابتكارات رئيسية متعددة في اكتشاف الأجسام في الوقت الفعلي. ويلغي الحاجة إلى كبت القيم غير العظمى (NMS) باستخدام إسنادات مزدوجة متسقة أثناء التدريب ومكونات نموذج محسّنة لتحقيق أداء فائق مع تقليل العبء الحسابي. لمزيد من التفاصيل حول البنية والميزات الرئيسية، اطّلع على قسم نظرة عامة على YOLOv10.
لإجراء الاستدلال بسهولة، يمكنك استخدام مكتبة Ultralytics YOLO لـPython أو واجهة سطر الأوامر (CLI). فيما يلي أمثلة على التنبؤ بصور جديدة باستخدام YOLOv10:
مثالfrom ultralytics import YOLO # تحميل نموذج YOLOv10n المدرّب مسبقًا model = YOLO("yolov10n.pt") results = model("image.jpg") results[0].show()لمزيد من أمثلة الاستخدام، تفضّل بزيارة قسم أمثلة الاستخدام.
يقدم YOLOv10 عدة متغيرات من النماذج لتلبية حالات الاستخدام المختلفة:
- YOLOv10n: مناسب للبيئات شديدة التقييد بالموارد
- YOLOv10s: يوازن بين السرعة والدقة
- YOLOv10m: للاستخدامات العامة
- YOLOv10b: دقة أعلى مع زيادة العرض
- YOLOv10l: دقة عالية على حساب الموارد الحاسوبية
- YOLOv10x: أقصى درجات الدقة والأداء
صُمم كل متغير لتلبية احتياجات حاسوبية ومتطلبات دقة مختلفة، ما يجعله مناسبًا لمجموعة متنوعة من التطبيقات. استكشف قسم متغيرات النماذج لمزيد من المعلومات.
يدرّب YOLOv10 باستخدام تعيينات ثنائية متسقة، بحيث تنتج وحدة الرأس أحادية المطابقة أفضل تنبؤ واحد لكل كائن، ما يلغي الحاجة إلى كبت غير الأعظميات (NMS) أثناء الاستدلال. يستخدم التنبؤ والتحقق في Ultralytics افتراضيًا وحدة الرأس متعددة المطابقات مع NMS؛ عيّن
nms=Falseلاختيار وحدة الرأس الخالية من NMS وتجاوز خطوة NMS. للاطلاع على شرح مفصل، راجع قسم التعيينات الثنائية المتسقة للتدريب الخالي من NMS.يدعم YOLOv10 عدة تنسيقات تصدير، منها TorchScript وONNX وOpenVINO وTensorRT. مع ذلك، لا تتوافق بعض تنسيقات التصدير التي توفرها Ultralytics حاليًا مع YOLOv10 بسبب عملياته الجديدة. للاطلاع على التفاصيل المتعلقة بالتنسيقات المدعومة وإرشادات التصدير، تفضّل بزيارة قسم تصدير YOLOv10.
يتفوق YOLOv10 على إصدارات YOLO السابقة وغيرها من النماذج المتطورة من حيث الدقة والكفاءة. فعلى سبيل المثال، يتفوق YOLOv10s في السرعة على RT-DETR-R18 بمقدار 1.8x مع تحقيق AP مماثل على مجموعة بيانات COCO. ويحقق YOLOv10b زمن استجابة أقل بنسبة 46% وعدد معلمات أقل بنسبة 25% من YOLOv9-C مع الحفاظ على الأداء نفسه. يمكن الاطلاع على المعايير التفصيلية في قسم المقارنات.