Ultralytics YOLO27:
Get Started

درّب YOLOv5 على بيانات مخصصة#

📚 يشرح هذا الدليل كيفية تدريب مجموعة بيانات مخصصة خاصة بك باستخدام نموذج YOLOv5 🚀. يُعد تدريب النماذج المخصصة خطوة أساسية لتكييف حلول الرؤية الحاسوبية مع تطبيقات واقعية محددة تتجاوز اكتشاف الأجسام العام.

قبل البدء#

أولاً، تأكد من إعداد البيئة اللازمة. استنسخ مستودع YOLOv5 وثبّت التبعيات المطلوبة من requirements.txt. من الضروري توفر بيئة Python>=3.8.0 مع PyTorch>=1.8. تُنزَّل النماذج ومجموعات البيانات تلقائياً من أحدث إصدار من YOLOv5 إذا لم تكن موجودة محلياً.

git clone https://github.com/ultralytics/yolov5 # Clone the repository
cd yolov5
pip install -r requirements.txt # Install dependencies

التدريب على بيانات مخصصة#

مخطط حلقة التعلم النشط في Ultralytics

يُعد تطوير نموذج مخصص لـاكتشاف الأجسام عملية تكرارية:

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

توفر منصة Ultralytics حلاً مبسطاً لا يتطلب كتابة تعليمات برمجية لدورة عمليات تعلّم الآلة (MLOps) بأكملها، بما في ذلك إدارة مجموعات البيانات وتدريب النماذج ونشرها.

الترخيص

توفر Ultralytics خيارين للترخيص لتلبية حالات الاستخدام المتنوعة:

  • ترخيص AGPL-3.0: هذا الترخيص مفتوح المصدر المعتمد من OSI مثالي للطلاب والباحثين والمتحمسين للتعاون المفتوح وتبادل المعرفة. ويشترط مشاركة الأعمال المشتقة بموجب الترخيص نفسه. راجع ملف LICENSE للاطلاع على التفاصيل الكاملة.
  • ترخيص Enterprise: يتيح هذا الترخيص استخدام برامج Ultralytics ونماذج الذكاء الاصطناعي ودمجها بسلاسة في منتجات الشركات وخدماتها لأغراض التطوير والإنتاج، بما في ذلك الأدوات الداخلية وسير العمل المؤتمت وعمليات النشر الإنتاجية، مع تجاوز متطلبات المصدر المفتوح الخاصة بـ AGPL-3.0. للبدء، يُرجى التواصل معنا عبر ترخيص Ultralytics.

تعرّف على مزيد من التفاصيل حول خيارات الترخيص لدينا في صفحة تراخيص Ultralytics.

من الضروري إعداد مجموعة البيانات قبل بدء التدريب.

1. إنشاء مجموعة بيانات#

تتطلب نماذج YOLOv5 بيانات موسومة لتعلّم الخصائص المرئية لفئات الأجسام. ويُعد تنظيم مجموعة البيانات بشكل صحيح أمراً أساسياً.

1.1 إنشاء dataset.yaml#

يوضح ملف إعداد مجموعة البيانات (مثل coco128.yaml) بنية مجموعة البيانات وأسماء الفئات والمسارات إلى أدلة الصور. تُعد COCO128 مجموعة بيانات صغيرة نموذجية تضم أول 128 صورة من مجموعة بيانات COCO الكبيرة. وهي مفيدة لاختبار مسار التدريب بسرعة وتشخيص المشكلات المحتملة مثل فرط التكيّف.

تتضمن بنية ملف dataset.yaml ما يلي:

  • path: الدليل الجذر الذي يحتوي على مجموعة البيانات.
  • train وval وtest: مسارات نسبية من path إلى الأدلة التي تحتوي على الصور أو الملفات النصية التي تسرد مسارات الصور لمجموعات التدريب والتحقق والاختبار.
  • names: قاموس يربط فهارس الفئات (بدءاً من 0) بأسماء الفئات المقابلة.

يمكنك تعيين path إلى دليل ذي مسار مطلق (مثل /home/user/datasets/coco128) أو إلى مسار نسبي مثل ../datasets/coco128 عند بدء التدريب من الدليل الجذر لمستودع YOLOv5.

فيما يلي بنية coco128.yaml (عرض على GitHub):

# Dataset root directory relative to the yolov5 directory
path: ../datasets/coco128

# Train/val/test sets: specify directories, *.txt files, or lists
train: images/train2017 # 128 images for training
val: images/train2017 # 128 images for validation
test: # Optional path to test images

# Classes (example using 80 COCO classes)
names:
    0: person
    1: bicycle
    2: car
    # ... (remaining COCO classes)
    77: teddy bear
    78: hair drier
    79: toothbrush

1.2 الاستفادة من النماذج لوضع التسميات آلياً#

يُعد وضع التسميات يدوياً نهجاً شائعاً، لكنه يستغرق وقتاً طويلاً. ويمكن للنماذج التأسيسية أتمتة التعليق أو شبه أتمتته وتسريع إنشاء مجموعات البيانات. ومن أمثلة النماذج التي يمكن أن تساعد في إنشاء التسميات:

  • Google Gemini: تتمتع النماذج متعددة الوسائط الكبيرة مثل Gemini بقدرات قوية على فهم الصور. ويمكن توجيهها لتحديد الأجسام داخل الصور وتحديد مواقعها، وإنشاء مربعات إحاطة أو أوصاف يمكن تحويلها إلى تسميات بتنسيق YOLO. استكشف إمكاناتها في دفتر البرنامج التعليمي المرفق.
  • SAM2 (نموذج تقسيم كل شيء 2): تستطيع النماذج التأسيسية المركزة على التقسيم، مثل SAM2، تحديد الأجسام وتعيين حدودها بدقة عالية. وعلى الرغم من استخدامها أساساً للتقسيم، يمكن غالباً تحويل الأقنعة الناتجة إلى تعليقات توضيحية بمربعات إحاطة مناسبة لمهام اكتشاف الأجسام.
  • YOLOWorld: يوفر هذا النموذج إمكانات اكتشاف مفتوحة المفردات. يمكنك تقديم أوصاف نصية للأجسام التي تهمك، وسيتمكن YOLOWorld من تحديد مواقعها في الصور من دون تدريب مسبق على تلك الفئات تحديداً. ويمكن استخدام ذلك نقطة انطلاق لإنشاء تسميات أولية، ثم تحسينها لاحقاً.

قد يتيح استخدام هذه النماذج خطوة «لوضع التسميات الأولية»، مما يقلل الجهد اليدوي المطلوب. ومع ذلك، من الضروري مراجعة التسميات المنشأة آلياً وتنقيحها لضمان دقتها واتساقها، إذ تؤثر جودتها مباشرةً في أداء نموذج YOLOv5 المدرّب. بعد إنشاء التسميات (وربما تنقيحها)، تأكد من توافقها مع تنسيق YOLO: ملف *.txt واحد لكل صورة، بحيث يمثّل كل سطر جسماً بصيغة class_index x_center y_center width height (إحداثيات مطبّعة، وفهرس فئة يبدأ من الصفر). إذا لم تتضمن الصورة أجساماً محل اهتمام، فلا حاجة إلى ملف *.txt مقابل لها.

مواصفات ملف *.txt بتنسيق YOLO دقيقة:

  • صف واحد لكل جسم محدّد بمربع إحاطة.
  • يجب أن يحتوي كل صف على: class_index x_center y_center width height.
  • يجب تطبيع الإحداثيات لتقع ضمن نطاق يتراوح بين 0 و1. ولتحقيق ذلك، اقسم قيم البكسل لكل من x_center وwidth على العرض الكلي للصورة، واقسم y_center وheight على الارتفاع الكلي للصورة.
  • تبدأ فهارس الفئات من الصفر (أي إن الفئة الأولى تُمثَّل بـ0، والثانية بـ1، وهكذا).

Example image with two persons and a tie annotated

سيبدو ملف التسميات المقابل للصورة أعلاه، والذي يحتوي على كائنين من فئة 'person' (فهرس الفئة 0) وكائن واحد من فئة 'tie' (فهرس الفئة 27)، كما يلي:

YOLO format label file content example

1.3 تنظيم الأدلة#

نظّم دليل مجموعات البيانات كما هو موضح أدناه. يتوقع YOLOv5 افتراضياً أن يكون دليل مجموعة البيانات (مثل /coco128) داخل مجلد /datasets يقع بجوار دليل مستودع /yolov5.

يعثر YOLOv5 تلقائياً على تسميات كل صورة من خلال استبدال آخر ظهور لـ/images/ في مسار الصورة بـ/labels/. على سبيل المثال:

../datasets/coco128/images/im0.jpg # Path to the image file
../datasets/coco128/labels/im0.txt # Path to the corresponding label file

بنية الأدلة الموصى بها هي:

/datasets/
└── coco128/  # Dataset root
    ├── images/
    │   ├── train2017/  # Training images
    │   │   ├── 000000000009.jpg
    │   │   └── ...
    │   └── val2017/    # Validation images (optional if using same set for train/val)
    │       └── ...
    └── labels/
        ├── train2017/  # Training labels
        │   ├── 000000000009.txt
        │   └── ...
        └── val2017/    # Validation labels (optional if using same set for train/val)
            └── ...

YOLOv5 recommended dataset directory structure

2. اختيار نموذج#

اختر نموذجاً مدرّباً مسبقاً لبدء عملية التدريب. يؤدي البدء بأوزان مدرّبة مسبقاً إلى تسريع التعلّم بدرجة كبيرة وتحسين الأداء مقارنةً بالتدريب من الصفر. يقدم YOLOv5 أحجاماً مختلفة للنماذج، يوازن كل منها بين السرعة والدقة بطريقة مختلفة. فعلى سبيل المثال، YOLOv5s هو ثاني أصغر النماذج وثاني أسرعها، ويناسب البيئات محدودة الموارد. راجع جدول README للاطلاع على مقارنة مفصلة بين جميع النماذج المتاحة.

Comparison chart of YOLOv5 models showing size, speed, and accuracy

3. التدريب#

ابدأ تدريب النموذج باستخدام البرنامج النصي train.py. وتتضمن الوسائط الأساسية ما يلي:

  • --img: يحدد حجم صورة الإدخال (مثل --img 640). تؤدي الأحجام الأكبر عموماً إلى دقة أفضل، لكنها تتطلب مزيداً من ذاكرة GPU.
  • --batch: يحدد حجم الدفعة (مثل --batch 16). اختر أكبر حجم يمكن أن تتعامل معه GPU لديك.
  • --epochs: يحدد إجمالي عدد حقب التدريب (مثل --epochs 100). تمثل الحقبة مروراً كاملاً على مجموعة بيانات التدريب بأكملها.
  • --data: مسار ملف dataset.yaml (مثل --data coco128.yaml).
  • --weights: مسار ملف الأوزان الأولية. يُوصى بشدة باستخدام أوزان مدرّبة مسبقاً (مثل --weights yolov5s.pt) لتحقيق تقارب أسرع ونتائج أفضل. للتدريب من الصفر (وهو أمر غير مستحسن إلا إذا كانت لديك مجموعة بيانات كبيرة جداً واحتياجات محددة)، استخدم --weights '' --cfg yolov5s.yaml.

تُنزَّل الأوزان المدرّبة مسبقاً تلقائياً من أحدث إصدار من YOLOv5 إذا لم تكن موجودة محلياً.

# Example: Train YOLOv5s on the COCO128 dataset for 3 epochs
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt
تحسين سرعة التدريب

💡 استخدم --cache ram أو --cache disk لتخزين صور مجموعة البيانات مؤقتاً في RAM أو على القرص المحلي، على التوالي. يؤدي ذلك إلى تسريع التدريب بدرجة كبيرة، ولا سيما عندما تكون عمليات الإدخال والإخراج لمجموعة البيانات عنق زجاجة. لاحظ أن هذا يتطلب مساحة كبيرة في RAM أو على القرص.

تخزين البيانات محلياً

💡 احرص دائماً على التدريب باستخدام مجموعات بيانات مخزنة محلياً. قد يكون الوصول إلى البيانات عبر محركات أقراص الشبكة (مثل Google Drive) أو التخزين البعيد أبطأ بكثير ويؤثر سلباً في أداء التدريب. وغالباً ما يكون نسخ مجموعة البيانات إلى SSD محلي أفضل الممارسات.

تُحفظ جميع مخرجات التدريب، بما فيها الأوزان والسجلات، في دليل runs/train/. وتنشئ كل جلسة تدريب دليلاً فرعياً جديداً (مثل runs/train/exp وruns/train/exp2 وما إلى ذلك). ولتجربة تفاعلية وعملية، استكشف قسم التدريب في دفاتر البرنامج التعليمي الرسمية لدينا: Open In Colab Open In Kaggle

4. التصور#

يتكامل YOLOv5 بسلاسة مع أدوات متنوعة لتصور تقدم التدريب وتقييم النتائج ومراقبة الأداء في الوقت الفعلي.

تسجيل Comet والتصور#

يتكامل Comet تكاملاً كاملاً لتتبّع التجارب بصورة شاملة. تصوّر المقاييس مباشرةً، واحفظ المعلمات الفائقة، وأدِر مجموعات البيانات ونقاط التحقق للنماذج، وحلّل تنبؤات النماذج باستخدام لوحات Comet المخصصة التفاعلية.

البدء سهل ومباشر:

pip install comet_ml                                                          # 1. Install Comet library
export COMET_API_KEY=YOUR_API_KEY_HERE                                        # 2. Set your Comet API key (create a free account at Comet.ml)
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt # 3. Train your model - Comet automatically logs everything!

تعمّق في الميزات المدعومة في دليل تكامل Comet. تعرّف على مزيد من إمكانات Comet في وثائقها الرسمية. جرّب دفتر Comet على Colab للاطلاع على عرض توضيحي مباشر: افتح في Colab

Comet UI showing YOLOv5 training metrics and visualizations

تسجيل ClearML والأتمتة#

يتيح تكامل ClearML تتبّعاً مفصلاً للتجارب وإدارة إصدارات مجموعات البيانات، وحتى تنفيذ عمليات التدريب عن بُعد. فعّل ClearML باتباع الخطوات البسيطة التالية:

  • ثبّت الحزمة: pip install clearml
  • هيّئ ClearML: شغّل clearml-init مرة واحدة للاتصال بخادم ClearML لديك (سواء أكان مستضافاً ذاتياً أم ضمن الفئة المجانية).

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

ClearML experiment management UI for YOLOv5

التسجيل المحلي#

تُسجّل نتائج التدريب تلقائياً باستخدام TensorBoard، وتُحفظ في ملفات CSV ضمن دليل التجربة المحدد (مثل runs/train/exp). وتشمل البيانات المسجلة ما يلي:

  • خسارة التدريب والتحقق ومقاييس الأداء.
  • صور نموذجية تعرض عمليات زيادة البيانات المطبقة (مثل الفسيفساء).
  • التسميات المرجعية إلى جانب تنبؤات النموذج للفحص البصري.
  • مقاييس التقييم الرئيسية مثل منحنيات الإحكام-الاستدعاء (PR).
  • مصفوفات الالتباس لتحليل الأداء تفصيلياً حسب الفئة.
YOLOv5 local logging results with charts and mosaics

يُحدَّث ملف results.csv بعد كل حقبة، ويُرسم بصيغة results.png عند انتهاء التدريب. ويمكنك أيضاً رسم أي ملف results.csv يدوياً باستخدام دالة الأداة المساعدة المرفقة:

from utils.plots import plot_results

# ⁨ارسم النتائج من دليل تشغيل تدريب محدد⁩
plot_results("runs/train/exp/results.csv")  # ⁨سينشئ هذا الملف 'results.png' في الدليل نفسه⁩

YOLOv5 results.png training metrics plot

5. الخطوات التالية#

بعد اكتمال التدريب بنجاح، تُحفظ نقطة التحقق الخاصة بأفضل نموذج أداءً (best.pt) وتصبح جاهزة للنشر أو لمزيد من التحسين. وتشمل الخطوات التالية المحتملة:

  • شغّل الاستدلال على صور أو مقاطع فيديو جديدة باستخدام النموذج المدرّب عبر CLI أو Python.
  • شغّل val.py لتقييم دقة النموذج وقدرته على التعميم على تقسيمات بيانات مختلفة (مثل مجموعة اختبار محجوبة).
  • صدّر النموذج إلى تنسيقات نشر متنوعة مثل ONNX أو TensorFlow SavedModel أو TensorRT لإجراء استدلال محسّن على منصات متنوعة.
  • استخدم تطوير المعلمات الفائقة لتحقيق مكاسب إضافية محتملة في الأداء.
  • واصل تحسين نموذجك باتباع نصائح للحصول على أفضل نتائج التدريب، وإضافة المزيد من البيانات المتنوعة والصعبة بصورة تكرارية استناداً إلى تحليل الأداء.

البيئات المدعومة#

توفر Ultralytics بيئات جاهزة للاستخدام ومزوّدة بالتبعيات الأساسية مثل CUDA وcuDNN وPython وPyTorch، لتسهيل البدء.

حالة المشروع#

YOLOv5 Continuous Integration Status Badge

تشير هذه الشارة إلى اجتياز جميع اختبارات GitHub Actions التكامل المستمر (CI) الخاصة بـ YOLOv5 بنجاح. تغطي اختبارات CI الصارمة هذه الوظائف الأساسية، بما في ذلك التدريب والتحقق والاستدلال والتصدير والمعايير، عبر أنظمة تشغيل macOS وWindows وUbuntu. تُنفَّذ الاختبارات تلقائياً كل 24 ساعة وعند كل إيداع للشيفرة، مما يضمن استقراراً متسقاً وأداءً أمثل.

الأسئلة الشائعة#

  • يتضمن تدريب YOLOv5 على مجموعة بيانات مخصصة عدة خطوات أساسية:

    1. إعداد مجموعة البيانات: اجمع الصور وأضف التعليقات التوضيحية إليها. تأكد من أن التعليقات التوضيحية بالصيغة المطلوبة YOLO. نظّم الصور والتسميات في المجلدين train/ وval/ (واستخدم المجلد test/ اختياريًا). فكّر في استخدام نماذج مثل Google Gemini أو SAM2 أو YOLOWorld للمساعدة في عملية وضع التسميات أو أتمتتها (راجع القسم 1.2).
    2. إعداد بيئتك: استنسخ مستودع YOLOv5 وثبّت التبعيات باستخدام pip install -r requirements.txt.
      git clone https://github.com/ultralytics/yolov5
      cd yolov5
      pip install -r requirements.txt
    3. إنشاء إعدادات مجموعة البيانات: حدّد مسارات مجموعة البيانات وعدد الفئات وأسماءها في ملف dataset.yaml.
    4. بدء التدريب: نفّذ البرنامج النصي train.py، مع تمرير مسارات dataset.yaml والأوزان المدرّبة مسبقًا المطلوبة (مثل yolov5s.pt) وحجم الصورة وحجم الدفعة وعدد الحِقَب.
      python train.py --img 640 --batch 16 --epochs 100 --data path/to/your/dataset.yaml --weights yolov5s.pt
  • منصة Ultralytics منصة شاملة مصممة لتبسيط دورة تطوير نماذج YOLO بأكملها، وغالبًا من دون الحاجة إلى كتابة أي شيفرة. تشمل مزاياها الرئيسية:

    • تدريب مبسّط: درّب النماذج بسهولة باستخدام بيئات معدّة مسبقًا وواجهة مستخدم سهلة الاستخدام.
    • إدارة متكاملة للبيانات: ارفع مجموعات البيانات وأدر إصداراتها وتحكّم بها بكفاءة ضمن المنصة.
    • مراقبة آنية: تابع تقدّم التدريب واعرض مقاييس الأداء بصريًا فور ورودها.
    • ميزات التعاون: تيسّر العمل الجماعي من خلال الموارد المشتركة وأدوات إدارة المشاريع ومشاركة النماذج بسهولة.
    • النشر دون كتابة شيفرة: انشر النماذج المدرّبة مباشرةً على أهداف متنوعة.

    للاطلاع على شرح عملي، راجع تدوينة مدونتنا: كيفية تدريب نماذجك المخصصة باستخدام منصة Ultralytics.

  • سواء أضفت التعليقات التوضيحية يدويًا أو استخدمت أدوات مؤتمتة (مثل الأدوات المذكورة في القسم 1.2)، يجب أن تكون التسميات النهائية بالصيغة المحددة YOLO التي يتطلبها YOLOv5:

    • أنشئ ملف .txt واحدًا لكل صورة. يجب أن يطابق اسم الملف اسم الصورة (مثلًا، يقابل image1.jpg الملف image1.txt). ضع هذه الملفات في مجلد labels/ موازٍ لمجلد images/ (مثلًا، ../datasets/mydataset/labels/train/).
    • يمثل كل سطر في ملف .txt تعليقًا توضيحيًا لكائن واحد، ويتبع التنسيق التالي: class_index center_x center_y width height.
    • يجب أن تكون الإحداثيات (center_x وcenter_y وwidth وheight) مطبّعة (أي قيمًا بين 0.0 و1.0) بالنسبة إلى أبعاد الصورة.
    • تبدأ فهارس الفئات من الصفر (الفئة الأولى هي 0، والثانية هي 1، وهكذا).

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

  • توفر Ultralytics خيارات ترخيص مرنة تلائم الاحتياجات المختلفة:

    • ترخيص AGPL-3.0: يناسب هذا الترخيص مفتوح المصدر الأبحاث الأكاديمية والمشاريع الشخصية والحالات التي يكون فيها الامتثال لمتطلبات المصادر المفتوحة مقبولًا. ويشترط إتاحة التعديلات والأعمال المشتقة أيضًا كمصدر مفتوح بموجب AGPL-3.0. راجع تفاصيل ترخيص AGPL-3.0.
    • ترخيص المؤسسات: ترخيص تجاري موجّه إلى الشركات التي تدمج YOLOv5 في منتجات أو خدمات مملوكة. يلغي هذا الترخيص التزامات المصادر المفتوحة المنصوص عليها في AGPL-3.0، ما يتيح التوزيع مغلق المصدر. تفضل بزيارة صفحة التراخيص لمزيد من التفاصيل أو لطلب ترخيص المؤسسات.

    اختر الترخيص الأنسب لمتطلبات مشروعك ونموذج توزيعه.

التعليقات