رؤية YOLO لعام 2026:

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

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

قبل البدء#

أولاً، تأكد من إعداد البيئة اللازمة. قم استنساخ مستودع 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

يعد تطوير نموذج object detection مخصص عملية تكرارية:

  1. جمع الصور وتنظيمها: اجمع الصور ذات الصلة بمهمتك المحددة. البيانات عالية الجودة والمتنوعة أمر بالغ الأهمية. راجع دليلنا حول Data Collection and Annotation.
  2. تصنيف الكائنات: قم بتصنيف الكائنات محل الاهتمام داخل صورك بدقة.
  3. تدريب نموذج: استخدم البيانات المصنفة لـ تدريب نموذج YOLOv5 الخاص بك. استغل transfer learning من خلال البدء بأوزان مدربة مسبقًا.
  4. النشر والتنبؤ: استخدم النموذج المدرب لـ inference على بيانات جديدة وغير مرئية.
  5. جمع الحالات الحدية: حدد السيناريوهات التي يكون فيها أداء النموذج ضعيفًا (edge cases) وأضف بيانات مماثلة إلى مجموعة البيانات الخاصة بك لتحسين المتانة. كرر دورة العمل.

توفر Ultralytics Platform حلاً مبسطًا وخالياً من التعليمات البرمجية لدورة machine learning operations (MLOps) بأكملها، بما في ذلك إدارة مجموعات البيانات، وتدريب النماذج، والنشر.

الترخيص

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

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

استكشف خيارات الترخيص الخاصة بنا بشكل أكبر على صفحة Ultralytics Licensing.

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

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

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

1.1 إنشاء dataset.yaml#

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

يتضمن هيكل ملف 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: 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 (Segment Anything Model 2): يمكن للنماذج الأساسية التي تركز على التجزئة، مثل SAM2، تحديد وتخطيط الكائنات بدقة عالية. وفي حين أنها مخصصة أساسًا للتجزئة، غالبًا ما يمكن تحويل الأقنعة الناتجة إلى تعليقات توضيحية لصناديق الإحاطة المناسبة لمهام كشف الكائنات.
  • YOLOWorld: يقدم هذا النموذج إمكانيات الكشف عن المفردات المفتوحة. يمكنك توفير أوصاف نصية للكائنات التي تهتم بها، ويمكن لـ YOLOWorld تحديد موقعها في الصور دون التدريب المسبق على تلك الفئات المحددة. يمكن استخدام هذا نقطة بداية لتوليد التسميات الأولية، والتي يمكن بعد ذلك تحسينها.

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

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

  • صف واحد لكل كائن bounding box.
  • يجب أن يحتوي كل صف على: 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

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

YOLO format label file content example

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

قم بتنظيم دليل datasets الخاص بك كما هو موضح أدناه. افتراضيًا، يتوقع 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

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

اختر pretrained model لبدء عملية التدريب. يبدأ البدء بأوزان مدربة مسبقًا في تسريع التعلم بشكل كبير وتحسين الأداء مقارنة بالتدريب من الصفر. يوفر YOLOv5 أحجام نماذج مختلفة، يوازن كل منها بين السرعة والدقة بشكل مختلف. على سبيل المثال، يعد YOLOv5s هو النموذج الثاني الأصغر والأسرع، وهو مناسب للبيئات المحدودة الموارد. راجع README table للحصول على مقارنة مفصلة لجميع models المتاحة.

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

تدريب#

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

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

يتم تنزيل الأوزان المدربة مسبقًا تلقائيًا من latest YOLOv5 release إذا لم يتم العثور عليها محليًا.

# 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 أو القرص المحلي، على التوالي. هذا يسرع التدريب بشكل كبير، لا سيما عندما تكون عمليات الإدخال/الإخراج (I/O) لمجموعة البيانات عنق زجاجة. لاحظ أن هذا يتطلب مساحة تخزين مؤقت كبيرة أو مساحة قرص.

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

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

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

تصور#

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

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

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

البدء مباشر:

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 Integration Guide. تعرف على المزيد حول إمكانيات Comet من documentation الرسمي الخاص بهم. جرب دفتر ملاحظات Comet Colab لعرض توضيحي مباشر: Open In Colab

Comet UI showing YOLOv5 training metrics and visualizations

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

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

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

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

ClearML experiment management UI for YOLOv5

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

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

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

يتم تحديث ملف results.csv بعد كل عصر ويتم رسمه كـ results.png بمجرد انتهاء التدريب. يمكنك أيضًا رسم أي ملف results.csv يدويًا باستخدام وظيفة الأدوات المساعدة المتوفرة:

from utils.plots import plot_results

# Plot results from a specific training run directory
plot_results("runs/train/exp/results.csv")  # This will generate 'results.png' in the same directory

YOLOv5 results.png training metrics plot

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

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

  • قم بتشغيل inference على صور أو مقاطع فيديو جديدة باستخدام النموذج المدرب عبر CLI أو Python.
  • قم بإجراء validation لتقييم accuracy النموذج وقدرات التعميم على مجموعات بيانات مختلفة (على سبيل المثال، مجموعة اختبار مستبعدة).
  • Export النموذج إلى تنسيقات نشر مختلفة مثل ONNX، أو TensorFlow SavedModel، أو TensorRT للاستدلال الأمثل على منصات متنوعة.
  • استخدم تقنيات hyperparameter tuning لاستخراج مكاسب أداء إضافية محتملة.
  • استمر في تحسين نموذجك باتباع Tips for Best Training Results وإضافة المزيد من البيانات المتنوعة والصعبة تدريجيًا استنادًا إلى تحليل الأداء.

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

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

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

YOLOv5 Continuous Integration Status Badge

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

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

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

    1. إعداد مجموعة البيانات الخاصة بك: اجمع الصور وقم بتعليقها. تأكد من أن التعليقات التوضيحية في YOLO format المطلوبة. نظم الصور والتسميات في أدلّة 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 Platform منصة شاملة مصممة لتبسيط دورة حياة تطوير نموذج YOLO بأكملها، وغالبًا دون الحاجة إلى كتابة أي تعليمات برمجية. تشمل الفوائد الرئيسية ما يلي:

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

    للحصول على جولة عملية، راجع منشور المدونة الخاص بنا: How to Train Your Custom Models with Ultralytics Platform.

  • سواء كنت تضع التعليقات يدويًا أو تستخدم أدوات مؤتمتة (مثل تلك المذكورة في القسم 1.2)، يجب أن تكون الملصقات النهائية بصيغة YOLO format المحددة المطلوبة بواسطة 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. إذا كنت تستخدم نماذج آلية، فستحتاج إلى برامج نصية أو عمليات لتحويل مخرجاتها (مثل إحداثيات مربع الإحاطة، وأقنعة التجزئة) إلى هذا التنسيق النصي المسوى المحدد. تأكد من أن بنية مجموعة البيانات النهائية الخاصة بك تلتزم بالمثال الوارد في الدليل. لمزيد من التفاصيل، راجع Data Collection and Annotation Guide.

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

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

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

التعليقات