Meet YOLO26: next-gen vision AI.

شعار Comet ML لتتبع تجارب تعلم الآلة

Link to this sectionYOLOv5 مع Comet#

سيتناول هذا الدليل كيفية استخدام YOLOv5 مع Comet، وهي أداة قوية لتتبع ومقارنة وتحسين تجارب تعلم الآلة.

Link to this sectionعن Comet#

تعمل Comet على بناء أدوات تساعد علماء البيانات والمهندسين وقادة الفرق على تسريع وتحسين نماذج تعلم الآلة والتعلم العميق.

تتبع وتصور مقاييس النموذج في الوقت الفعلي، واحفظ المعلمات الفائقة (hyperparameters) ومجموعات البيانات ونقاط التحقق (checkpoints) الخاصة بالنموذج، وقم بتصور تنبؤات النموذج باستخدام لوحات Comet المخصصة! تضمن Comet عدم فقدان تتبع عملك وتسهل مشاركة النتائج والتعاون بين الفرق بجميع أحجامها!

Link to this sectionالبدء#

Link to this sectionتثبيت Comet#

pip install comet_ml

Link to this sectionتهيئة بيانات اعتماد 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'

Link to this sectionتشغيل نص التدريب البرمجي#

# 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 تعرض مقاييس تدريب YOLOv5 وتتبع التجربة

Link to this sectionجرب مثالًا!#

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

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

فتح في Colab

Link to this sectionالتسجيل تلقائيًا#

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

Link to this sectionالمقاييس#

  • خسارة المربع (Box Loss)، وخسارة الكائن (Object Loss)، وخسارة التصنيف (Classification Loss) لبيانات التدريب وبيانات التحقق
  • مقاييس mAP_0.5 و mAP_0.5:0.95 لبيانات التحقق
  • الدقة والاستدعاء لبيانات التحقق

Link to this sectionالمعاملات#

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

Link to this sectionالتصورات#

  • مصفوفة الارتباك لتنبؤات النموذج على بيانات التحقق
  • مخططات منحنيات PR و F1 عبر جميع الفئات
  • مخطط الارتباط (Correlogram) لتسميات الفئات

Link to this sectionتهيئة تسجيل 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

Link to this sectionتسجيل نقاط التحقق (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

Link to this sectionتسجيل تنبؤات النموذج#

بشكل افتراضي، سيتم تسجيل تنبؤات النموذج (الصور، تسميات الحقيقة الأرضية، والمربعات المحيطة) في Comet.

يمكنك التحكم في تكرار التنبؤات المسجلة والصور المرتبطة بها عن طريق تمرير وسيط سطر الأوامر bbox_interval. يمكن تصور التنبؤات باستخدام لوحة اكتشاف الكائنات المخصصة في Comet. يتوافق هذا التكرار مع كل دفعة (batch) ن-ث من البيانات لكل حقبة. في المثال أدناه، نقوم بتسجيل كل دفعة ثانية من البيانات لكل حقبة.

ملاحظة: سيتم تعيين محمل بيانات التحقق لـ YOLOv5 افتراضيًا على حجم دفعة يبلغ 32، لذا سيتعين عليك ضبط تكرار التسجيل وفقًا لذلك.

إليك مشروع مثال يستخدم اللوحة

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt \
  --bbox_interval 2

Link to this sectionالتحكم في عدد صور التنبؤ المسجلة في 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

Link to this sectionتسجيل المقاييس على مستوى الفئة#

استخدم متغير البيئة 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

Link to this sectionتحميل مجموعة بيانات إلى 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 artifacts لإصدار مجموعات البيانات

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

معاينة مجموعة بيانات Comet وسجل الإصدارات

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

بيانات تعريف Comet Artifact

Link to this sectionاستخدام 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 أيضًا بتتبع نسب البيانات أثناء تدفقها عبر سير عمل التجريب الخاص بك. هنا يمكنك رؤية رسم بياني يوضح لك جميع التجارب التي استخدمت مجموعة البيانات التي قمت بتحميلها:

رسم بياني لنسب Comet Artifact

Link to this sectionاستئناف عملية التدريب#

إذا تمت مقاطعة عملية التدريب الخاصة بك لأي سبب من الأسباب، على سبيل المثال، انقطاع اتصال الإنترنت، يمكنك استئناف التشغيل باستخدام العلامة resume ومسار تشغيل Comet.

يحتوي مسار التشغيل على التنسيق التالي comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID.

سيؤدي هذا إلى استعادة التشغيل إلى حالته قبل المقاطعة، والتي تتضمن استعادة النموذج من نقطة تحقق، واستعادة جميع المعلمات الفائقة وسيطات التدريب، وتنزيل Comet dataset Artifacts إذا تم استخدامها في التشغيل الأصلي. ستستمر عملية التشغيل المستأنفة في التسجيل في التجربة الموجودة في واجهة مستخدم Comet:

python train.py \
  --resume "comet://YOUR_RUN_PATH"

Link to this sectionالبحث عن المعلمات الفائقة باستخدام Comet Optimizer#

تم دمج YOLOv5 أيضًا مع Comet's Optimizer، مما يجعل من السهل تصور عمليات مسح المعلمات الفائقة في واجهة مستخدم Comet.

Link to this sectionتهيئة مسح 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

Link to this sectionتصور النتائج#

توفر Comet عددًا من الطرق لتصور نتائج عملية المسح الخاصة بك. ألقِ نظرة على مشروع مع عملية مسح مكتملة هنا.

تصور المعلمات الفائقة لـ Comet

المساهمون

التعليقات