
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_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 للوسيطة --batch 16)، لذا عليك ضبط تواتر التسجيل بما يتناسب مع ذلك.
إليك مثالًا لمشروع يستخدم اللوحة
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يمكنك العثور على مجموعة البيانات المحمّلة في علامة تبويب Artifacts ضمن مساحة عمل 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 عدة طرق لتصوّر نتائج عملية المسح. ألقِ نظرة على مشروع يتضمن عملية مسح مكتملة هنا.

الأسئلة الشائعة#
أنشئ حسابًا مجانيًا على comet.com، وافتح إعدادات حسابك، وانسخ مفتاح API. صدّره في صورة
COMET_API_KEYأو خزّنه في ملف.comet.configبجوارtrain.py.نعم. اضبط
COMET_MODE=offlineلكتابة التجربة في أرشيف محلي، ثم ارفعها لاحقًا باستخدامcomet upload path/to/archive.zip.يكون تسجيل نقاط التحقق معطلًا افتراضيًا. مرّر
--save-period 1(أو فترة زمنية أخرى) إلىtrain.py، وسيُرفع كل ملف نقطة تحقق محفوظ إلى التجربة.انسخ مسار التشغيل من واجهة Comet وابدأ التدريب باستخدام
python train.py --resume "comet://WORKSPACE/PROJECT/EXPERIMENT_ID". يستعيد YOLOv5 نقطة التحقق والمعلمات الفائقة وأي عنصر من مجموعة بيانات Comet، ثم يواصل التسجيل في التجربة نفسها.