شعار Comet ML لتتبع تجارب تعلم الآلة

YOLOv5 مع Comet

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

حول Comet

تعمل Comet على بناء أدوات تساعد علماء البيانات والمهندسين وقادة الفرق على تسريع وتحسين نماذج تعلم الآلة والتعلم العميق.

تتبع وتصور مقاييس النموذج في الوقت الفعلي، واحفظ المعاملات الفائقة (hyperparameters) ومجموعات البيانات ونقاط تفتيش النماذج، وتصور توقعات نموذجك باستخدام لوحات Comet المخصصة! تضمن Comet أنك لن تفقد أثر عملك وتجعل من السهل مشاركة النتائج والتعاون عبر الفرق بجميع أحجامها!

البدء

تثبيت Comet

pip install comet_ml

تكوين بيانات اعتماد 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

[comet]
api_key=YOUR_API_KEY
project_name=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'

تشغيل برنامج التدريب

# 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 تعرض مقاييس تدريب YOLOv5 وتتبع التجربة

جرب مثالاً!

اطلع على مثال لـ عملية تشغيل مكتملة هنا.

أو الأفضل من ذلك، جربها بنفسك في دفتر ملاحظات Colab هذا:

فتح في Colab

التسجيل التلقائي

بشكل افتراضي، ستقوم Comet بتسجيل العناصر التالية:

المقاييس

  • خسارة الصندوق (Box Loss)، وخسارة الكائن (Object Loss)، وخسارة التصنيف (Classification Loss) لبيانات التدريب وبيانات التحقق
  • مقاييس mAP_0.5 و mAP_0.5:0.95 لبيانات التحقق
  • الدقة والاستدعاء لبيانات التحقق

المعاملات

  • المعاملات الفائقة للنموذج
  • جميع المعلمات الممررة عبر خيارات سطر الأوامر

التصورات

  • مصفوفة الارتباك لتوقعات النموذج على بيانات التحقق
  • رسوم بيانية لمنحنيات PR و 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

تسجيل نقاط التفتيش (Checkpoints) باستخدام 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 المخصصة لـ اكتشاف الكائنات. يتوافق هذا التكرار مع كل 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 Artifacts

إذا كنت ترغب في تخزين بياناتك باستخدام Comet Artifacts، يمكنك القيام بذلك باستخدام علامة upload_dataset.

يجب تنظيم مجموعة البيانات كما هو موضح في وثائق YOLOv5. يجب أن يتبع ملف تكوين مجموعة البيانات yaml نفس تنسيق ملف coco128.yaml.

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt \
  --upload_dataset

يمكنك العثور على مجموعة البيانات التي تم تحميلها في علامة التبويب Artifacts في مساحة عمل Comet الخاصة بك:

لوحة Comet Artifacts لإصدار مجموعات البيانات

يمكنك معاينة البيانات مباشرة في واجهة Comet:

معاينة مجموعة بيانات Comet وسجل الإصدارات

يتم إصدار القطع الأثرية (Artifacts) كما تدعم إضافة بيانات وصفية حول مجموعة البيانات. ستقوم Comet تلقائياً بتسجيل البيانات الوصفية من ملف yaml الخاص بمجموعة بياناتك:

البيانات الوصفية لقطعة Comet الأثرية

استخدام قطعة أثرية محفوظة

إذا كنت ترغب في استخدام مجموعة بيانات من Comet Artifacts، فقم بتعيين متغير path في ملف yaml الخاص بمجموعة البيانات ليشير إلى رابط مورد Artifact التالي:

# Contents of artifact.yaml file
path: "comet://WORKSPACE_NAME/ARTIFACT_NAME:ARTIFACT_VERSION_OR_ALIAS"

ثم قم بتمرير هذا الملف إلى برنامج التدريب الخاص بك بالطريقة التالية:

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data artifact.yaml \
  --weights yolov5s.pt

تسمح لك القطع الأثرية أيضاً بتتبع أصل البيانات أثناء تدفقها عبر سير عمل التجريب الخاص بك. هنا يمكنك رؤية رسم بياني يوضح لك جميع التجارب التي استخدمت مجموعة البيانات التي قمت بتحميلها:

رسم بياني لأصل قطعة Comet الأثرية

استئناف عملية التدريب

إذا تمت مقاطعة عملية التدريب الخاصة بك لأي سبب، على سبيل المثال، تعطل اتصال الإنترنت، يمكنك استئناف العملية باستخدام علامة resume ومسار تشغيل Comet.

يحتوي مسار التشغيل (Run Path) على التنسيق التالي comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID.

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

python train.py \
  --resume "comet://YOUR_RUN_PATH"

البحث عن المعاملات الفائقة باستخدام مُحسن 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 عدداً من الطرق لتصور نتائج عملية المسح الخاصة بك. ألقِ نظرة على مشروع به عملية مسح مكتملة هنا.

تصور المعاملات الفائقة لـ Comet

التعليقات