تخطي إلى المحتوى

Comet

YOLOv5 مع Comet

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

حول Comet

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

تتبع وتصور مقاييس النموذج في الوقت الفعلي، واحفظ المعلمات الفائقة ومجموعات البيانات ونقاط تفتيش النموذج، وتصور تنبؤات النموذج باستخدام لوحات 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 بتسجيل العناصر التالية:

مقاييس (Metrics)

المعلمات

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

تصورات

  • Confusion Matrix لتوقعات النموذج على بيانات التحقق.
  • مخططات لمنحنيات الدقة والاسترجاع (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

تسجيل نقاط التفتيش باستخدام 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، لذلك سيتعين عليك تعيين تردد التسجيل وفقًا لذلك.

إليك مثال لمشروع يستخدم Panel

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)، والدقة (precision)، والاسترجاع (recall)، و 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، يمكنك القيام بذلك باستخدام الـ upload_dataset flag.

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

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

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

علامة تبويب عناصر Comet

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

معاينة بيانات Comet

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

بيانات تعريف عناصر Comet

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

إذا كنت ترغب في استخدام مجموعة بيانات من Comet Artifacts، فقم بتعيين path متغير في مجموعة البيانات الخاصة بك yaml ملف للإشارة إلى عنوان URL لمورد 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 flag ومسار تشغيل Comet.

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

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

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

البحث عن المعلمات الفائقة باستخدام مُحسِّن Comet

تم دمج YOLOv5 أيضًا مع محسِّن Comet، مما يجعل من السهل تصور عمليات مسح المعلمات الفائقة في واجهة مستخدم Comet.

تكوين مسح المُحسِّن

لتكوين Comet Optimizer، ستحتاج إلى إنشاء ملف 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



📅 تم إنشاؤه منذ سنة واحدة ✏️ تم التحديث منذ شهر واحد

تعليقات