
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.

جرّب مثالًا!#
اطّلع على مثال عملية تشغيل مكتملة هنا.
أو الأفضل من ذلك، جرّبه بنفسك في دفتر Colab هذا:
التسجيل تلقائيًا#
بشكل افتراضي، ستسجل Comet العناصر التالية:
المقاييس#
- خسارة المربّع، وخسارة الكائن، وخسارة التصنيف لبيانات التحقق
- مقاييس 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تسجيل نقاط التحقّق باستخدام 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#
إذا كنت ترغب في تخزين بياناتك باستخدام عناصر 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 تلقائيًا البيانات الوصفية من ملف مجموعة البيانات yaml:

استخدام عنصر محفوظ#
إذا كنت ترغب في استخدام مجموعة بيانات من عناصر Comet، فعيّن المتغير 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تتيح لك العناصر أيضًا تتبّع سلالة البيانات أثناء مرورها عبر سير عمل التجارب. يمكنك هنا رؤية رسم بياني يوضح جميع التجارب التي استخدمت مجموعة البيانات التي حمّلتها:

استئناف عملية تشغيل التدريب#
إذا انقطعت عملية تشغيل التدريب لأي سبب، مثل انقطاع اتصال الإنترنت، فيمكنك استئناف عملية التشغيل باستخدام العلامة resume ومسار تشغيل Comet.
يتخذ مسار التشغيل التنسيق التالي 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 عدة طرق لتصور نتائج عملية المسح. ألقِ نظرة على مشروع يتضمن عملية مسح مكتملة هنا.
