Ultralytics YOLO27:

YOLOv10: اكتشاف الأجسام الشامل في الوقت الفعلي#

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

التعيين المزدوج المتسق في YOLOv10 للتدريب الخالي من NMS



Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset

نظرة عامة#

يهدف اكتشاف الأجسام في الوقت الفعلي إلى التنبؤ بدقة بفئات الأجسام ومواضعها في الصور بزمن استجابة منخفض. وقد تصدرت سلسلة YOLO هذا البحث بفضل توازنها بين الأداء والكفاءة. إلا أن الاعتماد على NMS وأوجه القصور المعمارية أعاقا تحقيق الأداء الأمثل. ويعالج YOLOv10 هذه المشكلات من خلال تقديم تعيينات مزدوجة متسقة للتدريب الخالي من NMS، واستراتيجية شاملة لتصميم النموذج مدفوعة بالكفاءة والدقة.

البنية#

تعتمد بنية YOLOv10 على نقاط قوة نماذج YOLO السابقة، مع تقديم العديد من الابتكارات الرئيسية. وتتكون بنية النموذج من المكوّنات التالية:

  1. العمود الفقري: يتولى استخراج السمات، ويستخدم العمود الفقري في YOLOv10 إصدارًا مُحسّنًا من CSPNet (الشبكة الجزئية المتقاطعة للمراحل) لتحسين تدفق التدرجات وتقليل التكرار الحسابي.
  2. العنق: صُمم العنق لتجميع السمات من مقاييس مختلفة وتمريرها إلى الرأس. ويتضمن طبقات PAN (شبكة تجميع المسارات) لدمج السمات متعددة المقاييس بفعالية.
  3. رأس من واحد إلى متعدد: يولّد تنبؤات متعددة لكل جسم أثناء التدريب لتوفير إشارات إشراف غنية وتحسين دقة التعلم.
  4. رأس من واحد إلى واحد: يولّد أفضل تنبؤ واحد لكل جسم أثناء الاستدلال لإلغاء الحاجة إلى NMS، مما يقلل زمن الاستجابة ويحسن الكفاءة.

الميزات الرئيسية#

  1. التدريب الخالي من NMS: يستخدم التعيينات المزدوجة المتسقة لإلغاء الحاجة إلى NMS، مما يقلل زمن استجابة الاستدلال.
  2. تصميم النموذج الشامل: تحسين شامل لمختلف المكونات من منظور الكفاءة والدقة، بما في ذلك رؤوس التصنيف خفيفة الوزن، والتقليل المفصول للمكان والقنوات، وتصميم الكتل الموجه بالرتبة.
  3. إمكانات محسّنة للنموذج: يدمج التفافات كبيرة النواة ووحدات انتباه ذاتي جزئي لتحسين الأداء دون تكلفة حسابية كبيرة.

تنويعات النماذج#

يتوفر YOLOv10 بمقاييس نماذج مختلفة لتلبية احتياجات التطبيقات المتنوعة:

  • YOLOv10n: إصدار Nano للبيئات شديدة القيود من حيث الموارد.
  • YOLOv10s: إصدار صغير يوازن بين السرعة والدقة.
  • YOLOv10m: إصدار متوسط للاستخدامات العامة.
  • YOLOv10b: إصدار متوازن بعرض أكبر لتحقيق دقة أعلى.
  • YOLOv10l: إصدار كبير لتحقيق دقة أعلى على حساب زيادة الموارد الحسابية.
  • YOLOv10x: إصدار كبير جدًا لتحقيق أقصى قدر من الدقة والأداء.

الأداء#

يتفوق YOLOv10 على إصدارات YOLO السابقة والنماذج الأخرى المتقدمة في المجال من حيث الدقة والكفاءة. فعلى سبيل المثال، يُعد YOLOv10s أسرع بمقدار 1.8 مرة من RT-DETR-R18 مع AP مماثل على مجموعة بيانات COCO، بينما يتمتع YOLOv10b بزمن استجابة أقل بنسبة 46% وعدد معلمات أقل بنسبة 25% من YOLOv9-C مع الأداء نفسه.

الأداء

قيس زمن الاستجابة باستخدام TensorRT FP16 على GPU من طراز T4.

النموذجحجم الإدخالAPvalFLOPs (G)زمن الاستجابة (مللي ثانية)
[YOLOv10n][1]64038.56.71.84
[YOLOv10s][2]64046.321.62.49
[YOLOv10m][3]64051.159.14.74
[YOLOv10b][4]64052.592.05.74
[YOLOv10l][5]64053.2120.37.28
[YOLOv10x][6]64054.4160.410.70

المنهجية#

التعيينات المزدوجة المتسقة للتدريب الخالي من NMS#

تستخدِم YOLOv10 تعيينات تسميات ثنائية، تجمع بين استراتيجيات الواحد-إلى-الكثير والواحد-إلى-واحد أثناء التدريب لضمان إشراف غني نشر فعال من النهاية إلى النهاية. تعيين التنبؤ والتحقق من Ultralytics افتراضياً إلى رأس الواحد-إلى-الكثير مع NMS؛ قم بتعيين nms=False لتحديد رأس الخالي من NMS. يتوافق مقياس المطابقة المتسق مع الإشراف بين الاستراتيجيتين، مما يعزز جودة التنبؤات أثناء الاستدلال.

تصميم النموذج الشامل المدفوع بالكفاءة والدقة#

تحسينات الكفاءة#

  1. رأس تصنيف خفيف: يقلل الحمل الحسابي لرأس التصنيف باستخدام التفافات قابلة للفصل حسب العمق.
  2. التقليل المفصول للمكان والقنوات: يفصل بين تقليل المكان وتعديل القنوات بتقليل فقد المعلومات وتكلفة الحساب إلى أدنى حد.
  3. تصميم كتل موجّه بالرتبة: يكيّف تصميم الكتل استنادًا إلى التكرار الجوهري للمراحل، بما يضمن الاستخدام الأمثل للمعلمات.

تحسينات الدقة#

  1. التفاف كبير النواة: يوسّع المجال الاستقبالي لتعزيز قدرة استخراج السمات.
  2. الانتباه الذاتي الجزئي (PSA): يدمج وحدات الانتباه الذاتي لتحسين تعلم التمثيل العام مع حمل إضافي ضئيل.

التجارب والنتائج#

اختُبر YOLOv10 على نطاق واسع باستخدام معايير قياسية مثل COCO، مما أظهر أداءً وكفاءةً متفوقين. ويحقق النموذج نتائج رائدة في المجال عبر تنويعاته المختلفة، موضحًا تحسينات كبيرة في زمن الاستجابة والدقة مقارنة بالإصدارات السابقة وكواشف الأجسام المعاصرة الأخرى.

المقارنات#

مقارنة YOLOv10 مع كواشف الأجسام الرائدة في المجال

مقارنةً بكواشف الأجسام الأخرى الرائدة في المجال:

  • يتفوق 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)
mAPval
50-95
زمن الاستجابة
(مللي ثانية)
زمن الاستجابة المُقدَّم
(مللي ثانية)
YOLOv6-3.0-N4.711.437.02.691.76
Gold-YOLO-N5.612.139.62.921.82
YOLOv8n3.28.737.36.161.77
YOLOv10n2.36.739.51.841.79
YOLOv6-3.0-S18.545.344.33.422.35
Gold-YOLO-S21.546.045.43.822.73
YOLOv8s11.228.644.97.072.33
YOLOv10s7.221.646.82.492.39
RT-DETR-R1820.060.046.54.584.49
YOLOv6-3.0-M34.985.849.15.634.56
Gold-YOLO-M41.387.549.86.385.45
YOLOv8m25.978.950.69.505.09
YOLOv10m15.459.151.34.744.63
YOLOv6-3.0-L59.6150.751.89.027.90
Gold-YOLO-L75.1151.751.810.659.78
YOLOv8l43.7165.252.912.398.06
RT-DETR-R5042.0136.053.19.209.07
YOLOv10l24.4120.353.47.287.21
YOLOv8x68.2257.853.916.8612.83
RT-DETR-R10176.0259.054.313.7113.58
YOLOv10x29.5160.454.410.7010.60

قيم المعلمات وFLOPs مخصّصة للنموذج المدمج بعد model.fuse()، الذي يدمج طبقات Conv وBatchNorm ويزيل رأس الكشف المساعد من واحد إلى متعدد. أما نقاط التحقق المدربة مسبقًا فتحتفظ ببنية التدريب الكاملة، وقد تعرض أعدادًا أعلى.

أمثلة على الاستخدام#

للتنبؤ بصور جديدة باستخدام YOLOv10. ويمكن أيضًا تدريب النماذج على GPU سحابية من خلال منصة Ultralytics:

مثال
from ultralytics import YOLO

# Load a pretrained YOLOv10n model
model = YOLO("yolov10n.pt")

# Perform object detection on an image
results = model("image.jpg")

# Display the results
results[0].show()

لتدريب 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)

المهام والأوضاع المدعومة#

تقدم سلسلة نماذج YOLOv10 مجموعة من النماذج، إذ حُسّن كل منها لتحقيق اكتشاف الأجسام عالي الأداء. وتلبي هذه النماذج احتياجات حوسبية ومتطلبات دقة متباينة، مما يجعلها متعددة الاستخدامات لمجموعة واسعة من التطبيقات.

النموذجأسماء الملفاتالمهامالتدريبالتحققالاستدلالالتصدير
YOLOv10yolov10n.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 قديم.
LiteRTمُحسَّن للأجهزة المحمولة والمدمجة والمتصفحات (LiteRT.js).
TF Edge TPUمخصص لأجهزة Edge TPU من Google.
PaddlePaddleشائع في الصين؛ ودعمُه العالمي أقل.
NCNNالمعامل torch.topk غير مدعوم بواسطة بيئة تشغيل NCNN.

الخلاصة#

وضع 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
    
    # Load the pretrained YOLOv10n model
    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). للحصول على شرح مفصل، راجع قسم التعيينات الثنائية المتسقة للتدريب الخالي من كبح الحد الأقصى غير الضروري.

  • يدعم YOLOv10 عدة تنسيقات للتصدير، بما في ذلك TorchScript وONNX وOpenVINO وTensorRT. ومع ذلك، لا تدعم YOLOv10 حاليًا جميع تنسيقات التصدير التي توفرها Ultralytics بسبب عملياتها الجديدة. للحصول على تفاصيل حول التنسيقات المدعومة وتعليمات التصدير، تفضل بزيارة قسم تصدير YOLOv10.

  • يتفوق YOLOv10 على إصدارات YOLO السابقة والنماذج الأخرى المتطورة في كل من الدقة والكفاءة. فعلى سبيل المثال، يُعد YOLOv10s أسرع بمقدار 1.8 مرة من RT-DETR-R18 مع AP مماثل على مجموعة بيانات COCO. ويُظهر YOLOv10b زمن انتقال أقل بنسبة 46% وعدد معاملات أقل بنسبة 25% من YOLOv9-C مع الأداء نفسه. يمكن العثور على المعايير التفصيلية في قسم المقارنات.

التعليقات