انتقل إلى المحتوى

نصائح للحصول على أفضل نتائج التدريب

📚 يشرح هذا الدليل كيفية إنتاج أفضل نتائج mAP والتدريب باستخدام YOLOv5 🚀.

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

إذا كانت لديك أسئلة حول نتائج التدريب الخاصة بك نوصيك بتقديم أكبر قدر ممكن من المعلومات إذا كنت تتوقع استجابة مفيدة ، بما في ذلك مخططات النتائج (خسائر القطار ، خسائر VAL ، P ، R ، mAP) ، منحنى العلاقات العامة ، مصفوفة الارتباك ، فسيفساء التدريب ، نتائج الاختبار وصور إحصائيات مجموعة البيانات مثل labels.png. كل هذه تقع في project/name الدليل ، عادة yolov5/runs/train/exp.

لقد قمنا بتجميع دليل كامل للمستخدمين الذين يتطلعون إلى الحصول على أفضل النتائج على YOLOv5 التدريبات أدناه.

مجموعة البيانات

  • الصور لكل فئة. ≥ يوصى ب 1500 صورة لكل فصل
  • مثيلات لكل فئة. ≥ يوصى ب 10000 مثيل (كائنات مصنفة) لكل فئة
  • مجموعة متنوعة من الصور. يجب أن يكون ممثلا للبيئة المنشورة. بالنسبة لحالات الاستخدام في العالم الحقيقي ، نوصي بصور من أوقات مختلفة من اليوم ، ومواسم مختلفة ، وطقس مختلف ، وإضاءة مختلفة ، وزوايا مختلفة ، ومصادر مختلفة (كشط عبر الإنترنت ، تم جمعها محليا ، وكاميرات مختلفة) وما إلى ذلك.
  • تناسق التسمية. يجب تسمية جميع مثيلات جميع الفئات في جميع الصور. لن يعمل وضع العلامات الجزئية.
  • دقة التسمية. يجب أن تحيط التسميات عن كثب بكل كائن. يجب ألا توجد مسافة بين الكائن والمربع المحيط به. يجب ألا تفتقد أي كائنات إلى تسمية.
  • التحقق من الملصق. منظر train_batch*.jpg في القطار ، ابدأ في التحقق من صحة ملصقاتك ، أي انظر مثل فسيفساء.
  • صور الخلفية. صور الخلفية هي صور لا تحتوي على كائنات تتم إضافتها إلى مجموعة بيانات لتقليل الإيجابيات الخاطئة (FP). نوصي بحوالي 0-10٪ من صور الخلفية للمساعدة في تقليل FPs (يحتوي COCO على 1000 صورة خلفية كمرجع ، 1٪ من الإجمالي). لا توجد تسميات مطلوبة لصور الخلفية.

تحليل كوكو

اختيار النموذج

ستنتج الطرز الأكبر مثل YOLOv5x و YOLOv5x6 نتائج أفضل في جميع الحالات تقريبا ، ولكنها تحتوي على المزيد من المعلمات ، وتتطلب المزيد من ذاكرة CUDA للتدريب ، وتكون أبطأ في التشغيل. بالنسبة لعمليات النشر المتنقلة ، نوصي باستخدام YOLOv5s / m ، وبالنسبة لعمليات النشر السحابية ، نوصي باستخدام YOLOv5l / x. انظر جدول README الخاص بنا للحصول على مقارنة كاملة لجميع الموديلات.

YOLOv5 نماذج

python train.py --data custom.yaml --weights yolov5s.pt
                                             yolov5m.pt
                                             yolov5l.pt
                                             yolov5x.pt
                                             custom_pretrained.pt
  • ابدأ من الصفر. موصى به لمجموعات البيانات الكبيرة (أي كوكو, الكائنات365, أويفي 6). قم بتمرير بنية النموذج YAML التي تهتم بها ، جنبا إلى جنب مع فارغة --weights '' جدال:
python train.py --data custom.yaml --weights '' --cfg yolov5s.yaml
                                                      yolov5m.yaml
                                                      yolov5l.yaml
                                                      yolov5x.yaml

إعدادات التدريب

قبل تعديل أي شيء ، قم أولا بالتدريب باستخدام الإعدادات الافتراضية لإنشاء خط أساس للأداء. يمكن العثور على قائمة كاملة بإعدادات train.py في train.py argparser.

  • العهود. ابدأ ب 300 حقبة. إذا كان هذا يفرط في وقت مبكر ، فيمكنك تقليل العصور. إذا لم يحدث التجهيز الزائد بعد 300 حقبة ، فتدرب لفترة أطول ، أي 600 و 1200 حقبة وما إلى ذلك.
  • حجم الصورة. قطارات COCO بدقة أصلية --img 640، على الرغم من أنه نظرا للكمية الكبيرة من الكائنات الصغيرة في مجموعة البيانات ، يمكن أن تستفيد من التدريب بدقة أعلى مثل --img 1280. إذا كان هناك العديد من الكائنات الصغيرة ، فستستفيد مجموعات البيانات المخصصة من التدريب بدقة أصلية أو أعلى. يتم الحصول على أفضل نتائج الاستدلال في نفس الوقت --img كما تم تشغيل التدريب ، أي إذا كنت تتدرب في --img 1280 يجب عليك أيضا اختبار واكتشاف في --img 1280.
  • حجم الدفعة. استخدم أكبر --batch-size التي يسمح بها جهازك. تنتج أحجام الدفعات الصغيرة إحصائيات دفعية رديئة ويجب تجنبها.
  • المعلمات الفائقة. المعلمات الفائقة الافتراضية موجودة في hyp.scratch-low.yaml. نوصيك بالتدريب باستخدام المعلمات الفائقة الافتراضية أولا قبل التفكير في تعديل أي منها. بشكل عام ، ستؤدي زيادة المعلمات الفائقة إلى تقليل وتأخير التجهيز الزائد ، مما يسمح بتدريبات أطول و mAP نهائي أعلى. الحد من مكون الخسارة كسب المعلمات الفائقة مثل hyp['obj'] سيساعد في تقليل التجهيز الزائد في مكونات الخسارة المحددة هذه. للحصول على طريقة تلقائية لتحسين هذه المعلمات الفائقة، راجع البرنامج التعليمي لتطور المعلمات الفائقة.

قراءة متعمقة

إذا كنت ترغب في معرفة المزيد ، فإن المكان الجيد للبدء هو "وصفة تدريب الشبكات العصبية" من Karpathy ، والتي تحتوي على أفكار رائعة للتدريب تنطبق على نطاق واسع عبر جميع مجالات ML: https://karpathy.github.io/2019/04/25/recipe/

حظا 🍀 سعيدا وأخبرنا إذا كان لديك أي أسئلة أخرى!



Created 2023-11-12, Updated 2024-06-02
Authors: glenn-jocher (4), Burhan-Q (1)

التعليقات