انتقل إلى المحتوى

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

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

قبل البدء

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

git clone https://github.com/ultralytics/yolov5  # clone
cd yolov5
pip install -r requirements.txt  # install

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

Ultralytics التعلم النشط

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

الترخيص

Ultralytics يقدم خيارين للترخيص:

لمزيد من التفاصيل انظر Ultralytics الترخيص.

YOLOv5 يجب تدريب النماذج على البيانات المصنفة من أجل تعلم فئات الكائنات في تلك البيانات. هناك خياران لإنشاء مجموعة البيانات الخاصة بك قبل بدء التدريب:

الخيار 1: إنشاء ملف Roboflow مجموعة البيانات

1.1 جمع الصور

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

إذا لم يكن ذلك ممكنا ، فيمكنك البدء من مجموعة بيانات عامة لتدريب نموذجك الأولي ثم أخذ عينات من الصور من البرية أثناء الاستدلال لتحسين مجموعة البيانات الخاصة بك والنمذجة بشكل متكرر.

1.2 إنشاء تسميات

بمجرد جمع الصور ، ستحتاج إلى التعليق على الكائنات ذات الأهمية لإنشاء حقيقة أساسية لنموذجك للتعلم منها.

YOLOv5 الدقة

Roboflow Annotate هي أداة بسيطة قائمة على الويب لإدارة صورك وتصنيفها مع فريقك وتصديرها في YOLOv5تنسيق التعليق التوضيحي.

1.3 إعداد مجموعة البيانات ل YOLOv5

سواء كنت قم بتسمية صورك باستخدام Roboflow أم لا ، يمكنك استخدامه لتحويل مجموعة البيانات الخاصة بك إلى YOLO تنسيق ، إنشاء ملف YOLOv5 ملف تكوين YAML ، واستضافته لاستيراده إلى البرنامج النصي للتدريب الخاص بك.

إنشاء مجانا Roboflow حساب وقم بتحميل مجموعة البيانات الخاصة بك إلى ملف Public مساحة العمل، وقم بتسمية أي صور غير مشروحة، ثم قم بإنشاء إصدار من مجموعة البيانات الخاصة بك وتصديره في YOLOv5 Pytorch تنسيق.

ملاحظه: YOLOv5 يقوم بالتعزيز عبر الإنترنت أثناء التدريب ، لذلك لا نوصي بتطبيق أي خطوات زيادة في Roboflow للتدريب مع YOLOv5. لكننا نوصي بتطبيق خطوات المعالجة المسبقة التالية:

خطوات المعالجة المسبقة الموصى بها

  • التوجيه التلقائي - لتجريد اتجاه EXIF من صورك.
  • تغيير الحجم (التمدد) - إلى حجم الإدخال المربع للطراز الخاص بك (640 × 640 هو YOLOv5 افتراضي).

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

تصدير في YOLOv5 تنسيق

تصدير في YOLOv5 Pytorch ، ثم انسخ المقتطف إلى البرنامج النصي للتدريب أو دفتر الملاحظات لتنزيل مجموعة البيانات الخاصة بك.

Roboflow مقتطف تنزيل مجموعة البيانات

الخيار 2: إنشاء مجموعة بيانات يدوية

2.1 إنشاء dataset.yaml

COCO128 هو مثال مجموعة بيانات تعليمية صغيرة تتكون من أول 128 صورة في كوكو قطار2017. يتم استخدام هذه الصور ال 128 نفسها لكل من التدريب والتحقق من الصحة للتحقق من أن خط أنابيب التدريب لدينا قادر على التجهيز الزائد. data/coco128.yaml، الموضح أدناه، هو ملف تكوين مجموعة البيانات الذي يحدد 1) الدليل الجذر لمجموعة البيانات path والمسارات النسبية إلى train / val / test دلائل الصور (أو *.txt الملفات ذات مسارات الصور) و 2) فئة names قاموس:

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco128  # dataset root dir
train: images/train2017  # train images (relative to 'path') 128 images
val: images/train2017  # val images (relative to 'path') 128 images
test:  # test images (optional)

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

2.2 إنشاء تسميات

بعد استخدام أداة التعليقات التوضيحية لتسمية صورك، قم بتصدير التسميات إلى YOLO تنسيق، مع واحد *.txt ملف لكل صورة (إذا لم تكن هناك كائنات في الصورة ، لا *.txt الملف مطلوب). ال *.txt مواصفات الملف هي:

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

Roboflow التعليقات التوضيحيه

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

Roboflow المعالجة المسبقة لمجموعة البيانات

2.3 تنظيم الدلائل

قم بتنظيم صور وملصقات القطار و val وفقا للمثال أدناه. YOLOv5 يفترض /coco128 داخل ملف /datasets دليل بجانب ال /yolov5 دليل. YOLOv5 تحديد موقع التسميات تلقائيا لكل صورة عن طريق استبدال المثيل الأخير من /images/ في كل مسار صورة باستخدام /labels/. على سبيل المثال:

../datasets/coco128/images/im0.jpg  # image
../datasets/coco128/labels/im0.txt  # label

YOLOv5 هيكل مجموعة البيانات

3. حدد نموذجا

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

YOLOv5 نماذج

4. القطار

قم بتدريب نموذج YOLOv5s على COCO128 من خلال تحديد مجموعة البيانات وحجم الدفعة وحجم الصورة وإما تم تدريبه مسبقا --weights yolov5s.pt (مستحسن)، أو تمت تهيئته عشوائيا --weights '' --cfg yolov5s.yaml (غير مستحسن). يتم تنزيل الأوزان المدربة مسبقا تلقائيا من أخير YOLOv5 أفرج.

python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt

بقشيش

💡 جمع --cache ram أو --cache disk لتسريع التدريب (يتطلب موارد كبيرة من ذاكرة الوصول العشوائي / القرص).

بقشيش

💡 تدرب دائما من مجموعة بيانات محلية. ستكون محركات الأقراص المثبتة أو محركات أقراص الشبكة مثل Google Drive بطيئة للغاية.

يتم حفظ جميع نتائج التدريب في runs/train/ مع زيادة أدلة التشغيل ، أي runs/train/exp2, runs/train/exp3 الخ. لمزيد من التفاصيل، راجع قسم التدريب في دفتر ملاحظاتنا التعليمي. فتح في كولاب فتح في كاغل

5. تصور

Comet التسجيل والتصور 🌟 جديد

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

البدء سهل:

pip install comet_ml  # 1. install
export COMET_API_KEY=<Your API Key>  # 2. paste API key
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt  # 3. train

لمعرفة المزيد حول كل ما هو مدعوم Comet ميزات لهذا التكامل ، تحقق من Comet تعليمي. إذا كنت ترغب في معرفة المزيد عن Comet، توجه إلى موقعنا توثيق. ابدأ بتجربة Comet كولاب نوتر: فتح في كولاب

YOLO واجهة المستخدم

ClearML التسجيل والأتمتة 🌟 جديد

ClearML مدمج تماما في YOLOv5 لتتبع تجاربك وإدارة إصدارات مجموعة البيانات وحتى تنفيذ عمليات التدريب عن بعد. لتمكين ClearML:

  • pip install clearml
  • ركض clearml-init للاتصال بملف ClearML ملقم

ستحصل على جميع الميزات الرائعة المتوقعة من مدير التجارب: التحديثات المباشرة وتحميل النموذج ومقارنة التجربة وما إلى ذلك ولكن ClearML يتتبع أيضا التغييرات غير الملتزم بها والحزم المثبتة على سبيل المثال. بفضل ذلك ClearML المهام (وهو ما نسميه التجارب) قابلة للتكرار أيضا على أجهزة مختلفة! مع سطر إضافي 1 فقط ، يمكننا جدولة ملف YOLOv5 مهمة تدريب على قائمة انتظار ليتم تنفيذها بواسطة أي عدد من ClearML الوكلاء (العمال).

يمكنك استخدام ClearML البيانات لإصدار مجموعة البيانات الخاصة بك ثم تمريرها إلى YOLOv5 ببساطة باستخدام المعرف الفريد الخاص به. سيساعدك هذا على تتبع بياناتك دون إضافة متاعب إضافية. استكشف ClearML البرنامج التعليمي للحصول على التفاصيل!

ClearML واجهة مستخدم إدارة التجارب

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

يتم تسجيل نتائج التدريب تلقائيا باستخدام تينسوربورد و سي اس في الحطابين إلى runs/train، مع إنشاء دليل تجربة جديد لكل تدريب جديد ك runs/train/exp2, runs/train/exp3الخ.

يحتوي هذا الدليل على إحصائيات القطار و val والفسيفساء والملصقات والتنبؤات والفسيفساء المعززة ، بالإضافة إلى المقاييس والرسوم البيانية بما في ذلك منحنيات استدعاء الدقة (PR) ومصفوفات الارتباك.

نتائج التسجيل المحلي

ملف النتائج results.csv يتم تحديثه بعد كل حقبة ، ثم يتم رسمه ك results.png (أدناه) بعد اكتمال التدريب. يمكنك أيضا رسم أي results.csv الملف يدويا:

from utils.plots import plot_results

plot_results('path/to/results.csv')  # plot 'results.csv' as 'results.png'

results.png

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

بمجرد تدريب نموذجك ، يمكنك استخدام أفضل نقطة تفتيش لديك best.pt ل:

  • ركض CLI أو Python الاستدلال على الصور ومقاطع الفيديو الجديدة
  • التحقق من الدقة في تقسيمات القطار و val والاختبار
  • تصدير إلى TensorFlowكيراس,, ONNX، TFlite ، TF.شبيبه CoreML و TensorRT تنسيقات
  • تطوير المعلمات الفائقة لتحسين الأداء
  • قم بتحسين نموذجك عن طريق أخذ عينات من صور العالم الحقيقي وإضافتها إلى مجموعة البيانات الخاصة بك

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

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

حالة المشروع

YOLOv5 سي آي

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



تم النشر في 2023-11-12, اخر تحديث 2024-01-21
المؤلفون: جلين جوشر (11)

التعليقات