تخطي إلى المحتوى

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

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

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

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

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

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

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

تحليل COCO

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

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

YOLOv5 النماذج

python train.py --data custom.yaml --weights yolov5s.pt
                                             yolov5m.pt
                                             yolov5l.pt
                                             yolov5x.pt
                                             custom_pretrained.pt
  • ابدأ من الصفر يوصى به لمجموعات البيانات الكبيرة (أي كوكو, كائنات365, OIv6). مرر بنية النموذج YAML التي تهتم بها مع نموذج 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.yaml. نوصيك بالتدريب باستخدام المعلمات الفائقة الافتراضية أولاً قبل التفكير في تعديل أي منها. بشكل عام، ستؤدي زيادة المعلمات التشعبية للتكبير إلى تقليل وتأخير الإفراط في التركيب، مما يسمح بإجراء تدريبات أطول و mAP نهائي أعلى. يؤدي تقليل المعلمات الزائدة لمكونات الخسارة مثل hyp['obj'] سيساعد في تقليل الإفراط في تركيب مكونات الخسارة المحددة هذه. للحصول على طريقة آلية لتحسين هذه البارامترات الفائقة، راجع برنامج تعليمي لتطور البارامتر الفائق.

مزيد من القراءة

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

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

📅 تم إنشاؤها منذ 1 سنة مضت ✏️ تم التحديث منذ 2 شهر

التعليقات