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

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 UI مع تدريب YOLOv5

جرّب مثالاً!

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

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

افتح في كولاب

تسجيل الدخول تلقائياً

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

المقاييس

المعلمات

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

التصورات

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

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

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

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

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

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

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

# 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 Artifacts إذا كانت مستخدمة في التشغيل الأصلي. سيستمر التشغيل المستأنف في تسجيل الدخول إلى التجربة الحالية في واجهة مستخدم 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

📅 تم إنشاؤها منذ 1 سنة مضت ✏️ تم التحديث منذ 8 أيام

التعليقات