YOLOv5 مع Comet
سيغطي هذا الدليل كيفية استخدام YOLOv5 مع Cometوهي أداة قوية لتتبع تجارب التعلم الآلي ومقارنتها وتحسينها.
نبذة عن Comet
Comet يبني أدوات تساعد علماء البيانات والمهندسين وقادة الفرق على تسريع وتحسين نماذج التعلم الآلي والتعلم العميق.
تتبّع مقاييس النموذج وتصورها في الوقت الفعلي، واحفظ المعلمات الفائقة ومجموعات البيانات ونقاط التحقق من النموذج، وتصور تنبؤات نموذجك باستخدام لوحاتComet المخصصة! يضمن لك Comet عدم فقدان تتبع عملك أبدًا ويجعل من السهل مشاركة النتائج والتعاون بين الفرق من جميع الأحجام!
الشروع في العمل
التثبيت Comet
تكوين Comet بيانات الاعتماد
هناك طريقتان لتكوين Comet مع YOLOv5.
يمكنك إما تعيين بيانات الاعتماد الخاصة بك من خلال متغيرات البيئة:
متغيرات البيئة
export COMET_API_KEY=YOUR_API_KEY
export COMET_PROJECT_NAME=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'
أو إنشاء .comet.config
في دليل العمل الخاص بك وتعيين بيانات الاعتماد الخاصة بك هناك:
Comet ملف التكوين
تشغيل البرنامج النصي للتدريب
# Train YOLOv5s on COCO128 for 5 epochs
python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt
هذا كل شيء! سيقوم Comet تلقائيًا بتسجيل المعلمات التشعبية ووسائط سطر الأوامر ومقاييس التدريب والتحقق من الصحة. يمكنك تصور وتحليل عمليات التشغيل الخاصة بك في واجهة مستخدم Comet .
جرّب مثالاً!
اطّلع على مثال على عملية تشغيل مكتملة هنا.
أو الأفضل من ذلك، جربها بنفسك في دفتر ملاحظات كولاب هذا:
تسجيل الدخول تلقائياً
بشكل افتراضي، يقوم Comet بتسجيل العناصر التالية:
المقاييس
- فقدان الصندوق، وفقدان الكائن، وفقدان التصنيف لبيانات التدريب والتحقق من الصحة
- مقاييس mAP_0.5، mAP_0.5:0.95 لبيانات التحقق من الصحة
- الدقة والاسترجاع لبيانات التحقق من الصحة
المعلمات
- المعلمات الفائقة للنموذج
- تمرير جميع المعلمات من خلال خيارات سطر الأوامر
التصورات
- مصفوفة الارتباك لتوقعات النموذج على بيانات التحقق من الصحة
- مخططات منحنيات العلاقات العامة ومنحنيات F1 في جميع الفئات
- الرسم البياني الارتباطي لتسميات الفئات
تكوين Comet تسجيل
يمكن تهيئة Comet لتسجيل بيانات إضافية إما من خلال إشارات سطر الأوامر التي يتم تمريرها إلى البرنامج النصي للتدريب أو من خلال متغيرات البيئة:
export COMET_MODE=online # Set whether to run Comet in 'online' or 'offline' mode. Defaults to online
export COMET_MODEL_NAME="yolov5" # Set the name for the saved model. Defaults to yolov5
export COMET_LOG_CONFUSION_MATRIX=false # Set to disable logging a Comet Confusion Matrix. Defaults to true
export COMET_MAX_IMAGE_UPLOADS=30 # Controls how many total image predictions to log to Comet. Defaults to 100.
export COMET_LOG_PER_CLASS_METRICS=true # Set to log evaluation metrics for each detected class at the end of training. Defaults to false
export COMET_DEFAULT_CHECKPOINT_FILENAME="last.pt" # Set this if you would like to resume training from a different checkpoint. Defaults to 'last.pt'
export COMET_LOG_BATCH_LEVEL_METRICS=true # Set this if you would like to log training metrics at the batch level. Defaults to false.
export COMET_LOG_PREDICTIONS=true # Set this to false to disable logging model predictions
تسجيل نقاط التفتيش مع Comet
يتم تعطيل تسجيل النماذج إلى Comet بشكل افتراضي. لتمكينه، قم بتمرير save-period
إلى البرنامج النصي للتدريب. سيؤدي ذلك إلى حفظ نقاط التفتيش المسجلة في Comet بناءً على قيمة الفاصل الزمني التي توفرها save-period
:
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--save-period 1
تنبؤات نموذج التسجيل
بشكل افتراضي، سيتم تسجيل تنبؤات النموذج (الصور، وتسميات الحقيقة الأرضية، والمربعات المحددة) على Comet.
يمكنك التحكم بتكرار التنبؤات المسجلة والصور المرتبطة بها عن طريق تمرير bbox_interval
وسيطة سطر الأوامر. يمكن تصور التنبؤات باستخدام Comet's اكتشاف الكائن لوحة مخصصة. يتوافق هذا التردد مع كل دفعة N من البيانات لكل الحقبة الزمنية. في المثال أدناه، نقوم بتسجيل كل دفعة ثانية من البيانات لكل حقبة زمنية.
ملاحظة: سيقوم مُحمّل بيانات التحقق من الصحة YOLOv5 بتحميل بيانات التحقق من الصحة افتراضيًا على حجم دُفعة 32، لذا سيتعين عليك ضبط تردد التسجيل وفقًا لذلك.
فيما يلي مثال على مشروع باستخدام اللوحة
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--bbox_interval 2
التحكم في عدد صور التنبؤ التي تم تسجيلها إلى Comet
عند تسجيل التنبؤات من YOLOv5 ، سيقوم Comet بتسجيل الصور المرتبطة بكل مجموعة من التنبؤات. بشكل افتراضي، يتم تسجيل 100 صورة تحقق من الصحة كحد أقصى. يمكنك زيادة هذا العدد أو إنقاصه باستخدام COMET_MAX_IMAGE_UPLOADS
متغير البيئة:
env COMET_MAX_IMAGE_UPLOADS=200 python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--bbox_interval 1
تسجيل المقاييس على مستوى الفئة
استخدم COMET_LOG_PER_CLASS_METRICS
متغير البيئة لتسجيل mAP، والدقة، والاستدعاء، و f1 لكل فئة:
env COMET_LOG_PER_CLASS_METRICS=true python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt
تحميل مجموعة بيانات إلى Comet التحف الفنية
إذا كنت ترغب في تخزين بياناتك باستخدام Comet التحف الفنية، يمكنك القيام بذلك باستخدام upload_dataset
العلم.
يجب تنظيم مجموعة البيانات كما هو موضح في YOLOv5 الوثائق. تكوين مجموعة البيانات yaml
يجب أن يتبع الملف نفس تنسيق ملف coco128.yaml
الملف.
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--upload_dataset
يمكنك العثور على مجموعة البيانات التي تم تحميلها في علامة التبويب القطع الأثرية في مساحة عمل Comet :
يمكنك معاينة البيانات مباشرةً في واجهة مستخدم Comet UI:
يتم إصدار القطع الأثرية وتدعم أيضًا إضافة البيانات الوصفية حول مجموعة البيانات. Comet سيقوم تلقائيًا بتسجيل البيانات الوصفية من مجموعة البيانات الخاصة بك yaml
الملف:
استخدام قطعة أثرية محفوظة
إذا كنت ترغب في استخدام مجموعة بيانات من Comet Artifacts، قم بتعيين path
متغير في مجموعة بياناتك yaml
للإشارة إلى عنوان URL مورد القطع الأثرية التالي:
# Contents of artifact.yaml file
path: "comet://WORKSPACE_NAME>/ARTIFACT_NAME:ARTIFACT_VERSION_OR_ALIAS"
ثم مرر هذا الملف إلى البرنامج النصي للتدريب بالطريقة التالية:
تسمح لك القطع الأثرية أيضًا بتتبع تسلسل البيانات أثناء تدفقها خلال سير عمل التجارب الخاصة بك. يمكنك هنا رؤية رسم بياني يوضح لك جميع التجارب التي استخدمت مجموعة البيانات التي تم تحميلها:
استئناف التدريب على الجري
إذا توقفت عملية التدريب لأي سبب من الأسباب، مثل انقطاع الاتصال بالإنترنت، يمكنك استئناف التدريب باستخدام resume
العلم ومسار Comet Run Path.
يحتوي مسار التشغيل على التنسيق التالي comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID
.
سيؤدي ذلك إلى استعادة التشغيل إلى حالته قبل الانقطاع، والذي يتضمن استعادة النموذج من نقطة تفتيش، واستعادة جميع المعلمات الفائقة ووسائط التدريب، وتنزيل مجموعة بيانات Comet Artifacts إذا كانت مستخدمة في التشغيل الأصلي. سيستمر التشغيل المستأنف في تسجيل الدخول إلى التجربة الحالية في واجهة مستخدم Comet :
البحث عن المعلمة الفائقة باستخدام مُحسِّن Comet
تم دمج YOLOv5 أيضًا مع مُحسِّنComet مما يجعل من السهل تصور عمليات مسح المعلمات الفائقة في واجهة مستخدم Comet .
تكوين مسح المُحسِّن
لتهيئة مُحسِّن Comet ، سيتعين عليك إنشاء ملف JSON يحتوي على معلومات حول المسح. تم توفير مثال على ملف في utils/loggers/comet/optimizer_config.json
:
python utils/loggers/comet/hpo.py \
--comet_optimizer_config "utils/loggers/comet/optimizer_config.json"
إن hpo.py
يقبل البرنامج النصي نفس الوسيطات التي يقبلها train.py
. إذا كنت ترغب في تمرير وسيطات إضافية إلى عملية المسح الخاصة بك، ما عليك سوى إضافتها بعد البرنامج النصي:
python utils/loggers/comet/hpo.py \
--comet_optimizer_config "utils/loggers/comet/optimizer_config.json" \
--save-period 1 \
--bbox_interval 1
تصور النتائج
يوفر Comet عدداً من الطرق لتصور نتائج المسح الخاص بك. ألقِ نظرة على مشروع مسح مكتمل هنا.