كيفية استخدام Ultralytics YOLOv5 مع Comet
اكتشف كيف تتعاون Ultralytics مع Comet لتحسين نماذج Ultralytics YOLOv5: تتبع آني، وتعاون مبسّط، وقابلية إعادة إنتاج محسّنة.

في Ultralytics، نعقد شراكات تجارية مع شركات ناشئة أخرى لمساعدتنا في تمويل البحث والتطوير لأدواتنا الرائعة مفتوحة المصدر، مثل YOLOv5، والحفاظ على إتاحتها مجانًا للجميع. قد تحتوي هذه المقالة على روابط تابعة لشركائنا.
يبني شريكنا الأحدث، Comet، أدوات تساعد علماء البيانات والمهندسين وقادة الفرق على تسريع نماذج تعلّم الآلة والتعلّم العميق وتحسينها.
Comet أداة قوية لتتبّع نماذجك ومجموعات بياناتك ومقاييسك. كما أنها تسجّل متغيرات النظام والبيئة لديك لضمان قابلية إعادة الإنتاج وسلاسة تصحيح الأخطاء في كل عملية تشغيل. إنها أشبه بامتلاك مساعد افتراضي يعرف بطريقة سحرية الملاحظات التي ينبغي الاحتفاظ بها. تتبّع مقاييس النموذج واعرضها مرئيًا في الوقت الفعلي، واحفظ المعلمات الفائقة ومجموعات البيانات ونقاط فحص النموذج، واعرض تنبؤات النموذج مرئيًا باستخدام لوحات Comet المخصصة!
إضافةً إلى ذلك، تضمن Comet ألا تفقد أثر عملك مطلقًا، وتسهّل مشاركة النتائج والتعاون بين الفرق مهما كان حجمها!
يُعد YOLOv5 نقطة بداية رائعة لرحلتك في مجال الرؤية الحاسوبية. ولتحسين أداء نموذجك وجعله جاهزًا للاستخدام في الإنتاج، ستحتاج إلى تسجيل النتائج في أداة لتتبّع التجارب مثل Comet.
يوفّر التكامل بين Comet وYOLOv5 3 ميزات رئيسية:
- ميزات التسجيل التلقائي والتسجيل المخصص
- حفظ مجموعات البيانات والنماذج كعناصر اصطناعية لتصحيح الأخطاء وقابلية إعادة الإنتاج
- تنظيم العرض باستخدام اللوحات المخصصة في Comet
سيتناول هذا الدليل كيفية استخدام YOLOv5 مع Comet.
هل أنت مستعد لتتبّع تجاربك في الوقت الفعلي؟ فلنبدأ!
البدء#
1. تثبيت Comet#
pip install comet_ml2. إعداد بيانات اعتماد Comet#
هناك طريقتان لإعداد Comet مع YOLOv5.
يمكنك إما تعيين بيانات اعتمادك من خلال متغيرات البيئة، أو إنشاء ملف .comet.config في دليل العمل لديك وتعيين بيانات اعتمادك فيه.
متغيرات البيئة#
export COMET_API_KEY=<Your API Key>
export COMET_PROJECT_NAME=<Your Comet Project Name> # This will default to 'yolov5'ملف إعداد Comet#
[comet]
api_key=<Your API Key>
project_name=<Your Comet Project Name> # This will default to 'yolov5'3. تشغيل برنامج التدريب النصي#
# 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=<your model name> # 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=<number of allowed images to upload to Comet> # 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=<your checkpoint filename> # 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يمكنك العثور على مجموعة البيانات المحمّلة في علامة تبويب Artifacts في مساحة عمل Comet الخاصة بك

يمكنك معاينة البيانات مباشرةً في واجهة Comet.

تُدار إصدارات العناصر الاصطناعية، كما تدعم إضافة بيانات وصفية حول مجموعة البيانات. وستسجّل Comet تلقائيًا البيانات الوصفية من ملف yaml الخاص بمجموعة البيانات.

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

استئناف عملية تدريب#
إذا توقفت عملية التدريب لأي سبب، مثل انقطاع اتصال الإنترنت، فيمكنك استئنافها باستخدام علامة resume ومسار تشغيل Comet.
يكون لمسار التشغيل التنسيق التالي comet://<your workspace name>/<your 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 optimizer -j <num_workers> utils/loggers/comet/hpo.py \
utils/loggers/comet/optimizer_config.jsonتوفر Comet طرقًا عديدة لعرض نتائج عملية المسح مرئيًا. ألقِ نظرة على مشروع يتضمن عملية مسح مكتملة هنا:

ابقَ على تواصل#
ابدأ باستخدام تكاملنا مع Comet لإدارة نماذج YOLOv5 وتصورها وتحسينها، بدءًا من عمليات التشغيل التدريبية وصولًا إلى مراقبة الإنتاج.
وبالطبع، انضم إلى مجتمع Ultralytics، وهو مكان لطرح الأسئلة ومشاركة النصائح حول تدريب YOLOv5 والتحقق منه ونشره.









