تدريب البيانات المخصصة
📚 يشرح هذا الدليل كيفية تدريب مجموعة البيانات المخصصة الخاصة بك باستخدام YOLOv5 🚀.
قبل أن تبدأ
استنساخ الريبو وتثبيت المتطلبات.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 خيارين للترخيص:
- رخصةAGPL-3.0 ، وهي رخصة مفتوحة المصدر معتمدة من OSI، وهي رخصة مفتوحة المصدر مثالية للطلاب والمتحمسين.
- ترخيص المؤسسات للشركات التي تسعى إلى دمج نماذج الذكاء الاصطناعي الخاصة بنا في منتجاتها وخدماتها.
للمزيد من التفاصيل انظر Ultralytics الترخيص.
YOLOv5 يجب أن يتم تدريب النماذج على بيانات موسومة من أجل تعلم فئات الكائنات في تلك البيانات. هناك خياران لإنشاء مجموعة البيانات الخاصة بك قبل البدء في التدريب:
الخيار 1: إنشاء Roboflow مجموعة بيانات
1.1 جمع الصور
سوف يتعلم نموذجك بالقدوة. إن التدريب على صور مشابهة للصور التي سيشاهدها في البرية أمر في غاية الأهمية. من الناحية المثالية، ستقوم بجمع مجموعة متنوعة من الصور من نفس التكوين (الكاميرا، الزاوية، الإضاءة، إلخ) حيث ستقوم بنشر مشروعك في نهاية المطاف.
إذا لم يكن ذلك ممكنًا، يمكنك البدء من مجموعة بيانات عامة لتدريب نموذجك الأولي ثم أخذ عينة من الصور من البرية أثناء الاستدلال لتحسين مجموعة بياناتك ونموذجك بشكل متكرر.
1.2 إنشاء التسميات
بمجرد الانتهاء من جمع الصور، ستحتاج إلى وضع تعليقات توضيحية للأشياء التي تهمك لإنشاء حقيقة أساسية للنموذج الخاص بك للتعلم منها.
Roboflow Annotate هي أداة بسيطة قائمة على الويب لإدارة صورك وتسميتها مع فريقك وتصديرها بتنسيق التعليقات التوضيحيةYOLOv5.
1.3 إعداد مجموعة البيانات من أجل YOLOv5
سواء قمت بتسمية صورك بـ Roboflow أم لا، يمكنك استخدامه لتحويل مجموعة بياناتك إلى تنسيق YOLO ، وإنشاء ملف تكوين YAML YOLOv5 واستضافته لاستيراده إلى البرنامج النصي التدريبي الخاص بك.
إنشاء حساب مجاني Roboflow وتحميل مجموعة البيانات الخاصة بك إلى Public
مساحة العمل، وقم بتسمية أي صور غير مفسرة، ثم قم بإنشاء وتصدير نسخة من مجموعة البيانات الخاصة بك في YOLOv5 Pytorch
الشكل.
ملاحظة: يقوم YOLOv5 بإجراء زيادة عبر الإنترنت أثناء التدريب، لذلك لا نوصي بتطبيق أي خطوات زيادة في Roboflow للتدريب باستخدام YOLOv5. لكننا نوصي بتطبيق خطوات المعالجة المسبقة التالية:
- الاتجاه التلقائي - لإزالة اتجاه EXIF من صورك.
- تغيير الحجم (التمدد) - إلى حجم الإدخال المربع للنموذج الخاص بك (640 × 640 هو YOLOv5 الافتراضي).
سيمنحك إنشاء نسخة لقطة من مجموعة البيانات الخاصة بك، بحيث يمكنك دائمًا العودة ومقارنة عمليات تدريب النموذج في المستقبل بها، حتى لو أضفت المزيد من الصور أو غيّرت تكوينها لاحقًا.
التصدير في YOLOv5 Pytorch
ثم انسخ المقتطف إلى البرنامج النصي للتدريب أو دفتر الملاحظات لتحميل مجموعة البيانات الخاصة بك.
الخيار 2: إنشاء مجموعة بيانات يدوية
2.1 إنشاء dataset.yaml
COCO128 هو مثال لمجموعة بيانات تعليمية صغيرة مكونة من أول 128 صورة في كوكو تدريب 2017. تُستخدم هذه الصور ال 128 نفسها في كلٍ من التدريب والتحقق من الصحة للتحقق من أن خط أنابيب التدريب لدينا قادر على الإفراط في التركيب. data/coco128.yaml.comالموضح أدناه، هو ملف تكوين مجموعة البيانات الذي يحدد 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).
يحتوي ملف التسمية المطابق للصورة أعلاه على شخصين (الفئة 0
) وربطة عنق (فئة 27
):
2.3 تنظيم الدلائل
نظّم صور القطار والصور والتسميات وفقاً للمثال أدناه. YOLOv5 يفترض /coco128
داخل /datasets
الدليل بجانب فإن /yolov5
الدليل. YOLOv5 يحدد موقع التسميات تلقائياً لكل صورة باستبدال المثيل الأخير من /images/
في كل مسار صورة مع /labels/
. على سبيل المثال:
3. اختر الطراز
حدد نموذجًا مدربًا مسبقًا لبدء التدريب منه. هنا نختار YOLOv5s، ثاني أصغر وأسرع نموذج متاح. راجع جدول README لمقارنة كاملة بين جميع النماذج.
4. القطار
قم بتدريب نموذج YOLOv5s على COCO128 من خلال تحديد مجموعة البيانات، وحجم الدُفعة، وحجم الصورة، وإما أن تكون قد خضعت للتدريب المسبق --weights yolov5s.pt
(موصى به)، أو تمت تهيئتها عشوائيًا --weights '' --cfg yolov5s.yaml
(غير مستحسن). يتم تنزيل الأوزان المدربة مسبقًا تلقائيًا من أحدث إصدار YOLOv5.
نصيحة
💡 إضافة --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 Colab Notebook:
ClearML التسجيل والأتمتة 🌟 جديد
ClearML مدمج بالكامل في YOLOv5 لتتبع تجاربك وإدارة إصدارات مجموعة البيانات وحتى تنفيذ عمليات التدريب عن بُعد. لتمكين ClearML:
pip install clearml
- تشغيل
clearml-init
للاتصال بخادم ClearML
ستحصل على جميع الميزات الرائعة المتوقعة من مدير التجارب: التحديثات المباشرة، وتحميل النماذج، ومقارنة التجارب وما إلى ذلك، ولكن ClearML يتتبع أيضًا التغييرات غير الملتزم بها والحزم المثبتة على سبيل المثال. وبفضل ذلك ClearML المهام (وهو ما نسميه التجارب) قابلة للتكرار أيضًا على أجهزة مختلفة! من خلال سطر إضافي واحد فقط، يمكننا جدولة مهمة تدريب YOLOv5 على قائمة انتظار ليتم تنفيذها من قبل أي عدد من وكلاء (عمّال) ClearML .
يمكنك استخدام ClearML Data لإصدار مجموعة البيانات الخاصة بك ثم تمريرها إلى YOLOv5 ببساطة باستخدام معرفها الفريد. سيساعدك هذا على تتبع بياناتك دون إضافة المزيد من المتاعب. استكشف البرنامج التعليميClearML للحصول على التفاصيل!
التسجيل المحلي
يتم تسجيل نتائج التدريب تلقائيًا مع تينسوربورد و CSV المسجلات إلى runs/train
مع إنشاء دليل تجارب جديد لكل تدريب جديد على النحو التالي runs/train/exp2
, runs/train/exp3
إلخ.
يحتوي هذا الدليل على إحصائيات التدريب والتقييم والفسيفساء والتسميات والتنبؤات والفسيفساء المعززة، بالإضافة إلى مقاييس ومخططات تتضمن منحنيات دقةالاسترجاع (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'
الخطوات التالية
بمجرد أن يتم تدريب النموذج الخاص بك يمكنك استخدام أفضل نقطة تفتيش لديك best.pt
لـ
- تشغيل CLI أو Python الاستدلال على الصور ومقاطع الفيديو الجديدة
- التحقق من الدقة في تقسيمات التدريب والتقييم والاختبار
- التصدير إلى TensorFlowو Keras و ONNX و TFlite و TF.js و CoreML و TensorRT
- تطوير المعلمات الفائقة لتحسين الأداء
- حسّن نموذجك من خلال أخذ عينات من صور العالم الحقيقي وإضافتها إلى مجموعة بياناتك
البيئات المدعومة
Ultralytics مجموعة من البيئات الجاهزة للاستخدام، كل منها مثبت مسبقًا مع التبعيات الأساسية مثل CUDA، CUDNN, Pythonو PyTorchلبدء مشاريعك.
- GPU دفاتر مجاناً:
- Google السحابة: دليل البدء السريع لـ GCP
- أمازون دليل AWS للبدء السريع
- Azure: دليل البدء السريع لـ AzureML
- دوكر: دليل البدء السريع لـ Docker
حالة المشروع
تشير هذه الشارة إلى اجتياز جميع اختبارات التكامل المستمر (CI) لإجراءات GitHub YOLOv5 بنجاح. تتحقق اختبارات التكامل المستمر هذه بدقة من وظائف وأداء YOLOv5 عبر مختلف الجوانب الرئيسية: التدريب والتحقق من الصحة والاستدلال والتصدير والمعايير. وهي تضمن تشغيلًا متسقًا وموثوقًا على أنظمة macOS وWindows وUbuntu، مع إجراء الاختبارات كل 24 ساعة وعند كل التزام جديد.
الأسئلة الشائعة
كيف يمكنني تدريب YOLOv5 على مجموعة البيانات المخصصة الخاصة بي؟
يتضمن تدريب YOLOv5 على مجموعة بيانات مخصصة عدة خطوات:
- إعداد مجموعة البيانات الخاصة بك: جمع الصور وتسميتها. استخدم أدوات مثل Roboflow لتنظيم البيانات وتصديرها بتنسيقYOLOv5 .
- بيئة الإعداد: استنساخ الريبو YOLOv5 وتثبيت التبعيات:
- إنشاء تكوين مجموعة البيانات: اكتب
dataset.yaml
ملف يحدد مسارات القطار/الفئة وأسماء الفئات. - تدريب النموذج:
ما الأدوات التي يمكنني استخدامها للتعليق على مجموعة البيانات YOLOv5 ؟
يمكنك استخدام Roboflow Annotate، وهي أداة بديهية قائمة على الويب لتسمية الصور. وهي تدعم التعاون الجماعي وتصدر بتنسيق YOLOv5 . بعد جمع الصور، استخدم Roboflow لإنشاء التعليقات التوضيحية وإدارتها بكفاءة. تشمل الخيارات الأخرى أدوات مثل LabelImg وCVAT للتعليقات التوضيحية المحلية.
لماذا يجب أن أستخدم Ultralytics HUB لتدريب نماذج YOLO الخاصة بي؟
Ultralytics يوفر HUB منصة شاملة للتدريب على نماذج YOLO ونشرها وإدارتها دون الحاجة إلى مهارات ترميز واسعة النطاق. تشمل فوائد استخدام Ultralytics HUB ما يلي:
- سهولة التدريب على النماذج: تبسيط عملية التدريب باستخدام بيئات مهيأة مسبقًا.
- إدارة البيانات: إدارة مجموعات البيانات والتحكم في الإصدار دون عناء.
- المراقبة في الوقت الحقيقي: يدمج أدوات مثل Comet لتتبع المقاييس في الوقت الفعلي وتصورها.
- التعاون: مثالي للمشاريع الجماعية ذات الموارد المشتركة والإدارة السهلة.
كيف يمكنني تحويل بياناتي المشروحة إلى تنسيق YOLOv5 ؟
لتحويل البيانات المشروحة إلى تنسيق YOLOv5 باستخدام Roboflow:
- تحميل مجموعة البيانات الخاصة بك إلى مساحة عمل Roboflow .
- قم بتسمية الصور إذا لم تكن موسومة بالفعل.
- توليد وتصدير مجموعة البيانات في
YOLOv5 Pytorch
التنسيق. تأكّد من تطبيق خطوات المعالجة المسبقة مثل التهيئة التلقائية وتغيير الحجم (التمدد) إلى حجم الإدخال المربع (على سبيل المثال، 640 × 640). - قم بتنزيل مجموعة البيانات ودمجها في النص البرمجي التدريبي YOLOv5 الخاص بك.
ما هي خيارات الترخيص لاستخدام YOLOv5 في التطبيقات التجارية؟
Ultralytics خيارين للترخيص:
- AGPL-3.0 الترخيص: رخصة مفتوحة المصدر مناسبة للاستخدام غير التجاري، مثالية للطلاب والمتحمسين.
- ترخيص المؤسسة: مخصص للشركات التي تسعى إلى دمج YOLOv5 في المنتجات والخدمات التجارية. للحصول على معلومات مفصلة، تفضل بزيارة صفحة الترخيص.
لمزيد من التفاصيل، راجع دليلنا على Ultralytics الترخيص.