
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 العناصر التالية افتراضيًا:
المقاييس#
- خسارة الصندوق، وخسارة الكائن، وخسارة التصنيف لبيانات التدريب وبيانات التحقق
- مقاييس mAP50 وmAP50-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.
يجب تنظيم مجموعة البيانات كما هو موضح في درس تدريب البيانات المخصصة. ويجب أن يتبع ملف إعداد مجموعة البيانات 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، ثم يواصل التسجيل في التجربة نفسها.
التعليقات
اطرح سؤالًا، وشارك نتائجك، أو ساعد شخصًا آخر.