
YOLOv5 مع Comet#
سيوضح هذا الدليل كيفية استخدام YOLOv5 مع Comet، وهي أداة قوية لتتبع تجارب التعلم الآلي ومقارنتها وتحسينها.
عن Comet#
تقوم Comet بنناء أدوات تساعد علماء البيانات والمهندسين وقادة الفرق على تسريع وتحسين نماذج التعلم الآلي والتعلم العميق.
تتبع مقاييس النموذج وتصورها في الوقت الفعلي، واحفظ المعلمات الفائقة ومجموعات البيانات ونقاط حفظ النموذج، وتصور تنبؤات نموذجك باستخدام Comet Custom Panels! تضمن 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 عبر جميع الفئات
- مخطط الارتباط (Correlogram) لتسميات الفئات
تهيئة تسجيل 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تسجيل نقاط التحقق (Checkpoints) مع 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 المخصصة Object Detection. يتوافق هذا التكرار مع كل دفعة بيانات N-th لكل حقبة. في المثال أدناه، نقوم بتسجيل كل دفعة ثانية من البيانات لكل حقبة.
ملاحظة: سيكون محمل بيانات التحقق من الصحة في 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 Artifacts#
إذا كنت ترغب في تخزين بياناتك باستخدام Comet Artifacts، فيمكنك القيام بذلك باستخدام علامة 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:

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

استئناف عملية التدريب#
إذا تم مقاطعة عملية التدريب الخاصة بك لأي سبب من الأسباب، على سبيل المثال، انقطاع اتصال الإنترنت، يمكنك استئناف التشغيل باستخدام علامة resume ومسار تشغيل Comet.
يحتوي مسار التشغيل على التنسيق التالي comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID.
سيؤدي هذا إلى استعادة التشغيل إلى حالته قبل المقاطعة، والتي تتضمن استعادة النموذج من نقطة تحقق، واستعادة جميع المعلمات الفائقة وسيطات التدريب، وتنزيل Comet dataset Artifacts إذا تم استخدامها في التشغيل الأصلي. ستستمر عملية التشغيل المستأنفة في التسجيل في التجربة الموجودة في واجهة مستخدم Comet:
python train.py \
--resume "comet://YOUR_RUN_PATH"البحث عن المعلمات الفائقة باستخدام Comet Optimizer#
تم دمج YOLOv5 أيضًا مع Comet's Optimizer، مما يسهل تصور عمليات البحث عن المعلمات الفائقة في واجهة مستخدم Comet.
تهيئة مسح Optimizer#
لتكوين 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 عددًا من الطرق لتصور نتائج عملية البحث الخاصة بك. ألقِ نظرة على مشروع يحتوي على عملية بحث مكتملة هنا.
