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

أفضل ممارسات التعلم الآلي ونصائح لتدريب النموذج

مقدمة

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

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

كيفية تدريب نموذج التعلم الآلي

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

أثناء التدريب ، يقوم النموذج بشكل متكرر بعمل تنبؤات ، ويحسب الأخطاء ، ويقوم بتحديث معلماته من خلال عملية تسمى الانتشار العكسي. في هذه العملية ، يقوم النموذج بضبط معلماته الداخلية (weights and biases) لتقليل الأخطاء. من خلال تكرار هذه الدورة عدة مرات ، يعمل النموذج على تحسين دقته تدريجيا. بمرور الوقت ، يتعلم التعرف على الأنماط المعقدة مثل الأشكال والألوان والقوام.

ما هو الانتشار العكسي؟

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

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

التدريب على مجموعات البيانات الكبيرة

هناك بعض الجوانب المختلفة التي يجب التفكير فيها عندما تخطط لاستخدام مجموعة بيانات كبيرة لتدريب نموذج. على سبيل المثال، يمكنك ضبط حجم الدفعة، والتحكم في استخدام GPU ، واختيار استخدام التدريب متعدد النطاقات، وما إلى ذلك. لنستعرض كل خيار من هذه الخيارات بالتفصيل.

حجم الدفعة والاستخدام GPU

When training models on large datasets, efficiently utilizing your GPU is key. Batch size is an important factor. It is the number of data samples that a machine learning model processes in a single training iteration. Using the maximum batch size supported by your GPU, you can fully take advantage of its capabilities and reduce the time model training takes. However, you want to avoid running out of GPU memory. If you encounter memory errors, reduce the batch size incrementally until the model trains smoothly.

فيما يتعلق ب YOLOv8، يمكنك ضبط batch_size في متغير تكوين التدريب to match your GPU capacity. Also, setting batch=-1 في البرنامج النصي للتدريب الخاص بك سيحدد تلقائيًا حجم الدفعة التي يمكن معالجتها بكفاءة بناءً على إمكانيات جهازك. من خلال ضبط حجم الدُفعات بشكل دقيق، يمكنك تحقيق أقصى استفادة من مواردك GPU وتحسين عملية التدريب بشكل عام.

تدريب المجموعة الفرعية

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

عندما يتعلق الأمر ب YOLOv8، يمكنك بسهولة تنفيذ تدريب مجموعة فرعية باستخدام fraction البارامتر. تتيح لك هذه المعلمة تحديد جزء مجموعة البيانات الذي تريد استخدامه للتدريب. على سبيل المثال، الإعداد fraction=0.1 سيتم تدريب نموذجك على 10٪ من البيانات. يمكنك استخدام هذه التقنية للتكرارات السريعة وضبط النموذج الخاص بك قبل الالتزام بتدريب نموذج باستخدام مجموعة بيانات كاملة. يساعدك تدريب المجموعة الفرعية على إحراز تقدم سريع وتحديد المشكلات المحتملة في وقت مبكر.

تدريب متعدد النطاقات

التدريب متعدد المقاييس هو تقنية تعمل على تحسين قدرة نموذجك على التعميم من خلال تدريبه على صور بأحجام مختلفة. يمكن أن يتعلم نموذجك اكتشاف الأجسام بمقاييس ومسافات مختلفة ويصبح أكثر قوة.

على سبيل المثال، عندما تقوم بتدريب YOLOv8 ، يمكنك تمكين التدريب متعدد النطاقات عن طريق تعيين scale البارامتر. تقوم هذه المعلمة بضبط حجم صور التدريب بواسطة عامل محدد ، ومحاكاة الكائنات على مسافات مختلفة. على سبيل المثال، الإعداد scale=0.5 سيقلل حجم الصورة بمقدار النصف ، بينما scale=2.0 سوف يضاعفها. يسمح تكوين هذه المعلمة للنموذج الخاص بك بتجربة مجموعة متنوعة من مقاييس الصور وتحسين إمكانات الكشف الخاصة به عبر أحجام وسيناريوهات الكائنات المختلفة.

التخزين المؤقت

يعد التخزين المؤقت تقنية مهمة لتحسين كفاءة تدريب نماذج التعلم الآلي. من خلال تخزين الصور التي تمت معالجتها مسبقًا في الذاكرة، يقلل التخزين المؤقت من الوقت الذي يقضيه GPU في انتظار تحميل البيانات من القرص. يمكن للنموذج أن يتلقى البيانات باستمرار دون تأخير ناجم عن عمليات الإدخال/الإخراج من القرص.

يمكن التحكم في التخزين المؤقت عند التدريب YOLOv8 باستخدام الزر cache البارامتر:

  • cache=Trueيخزن صور مجموعة البيانات في ذاكرة الوصول العشوائي ، مما يوفر أسرع سرعة وصول ولكن على حساب زيادة استخدام الذاكرة.:
  • cache='disk'يخزن الصور على القرص ، أبطأ من ذاكرة الوصول العشوائي ولكن أسرع من تحميل بيانات جديدة في كل مرة.:
  • cache=Falseتعطيل التخزين المؤقت ، والاعتماد كليا على إدخال / إخراج القرص ، وهو الخيار الأبطأ.:

تدريب مختلط الدقة

يستخدم التدريب المختلط الدقة كلا من أنواع الفاصلة العائمة 16 بت (FP16) و 32 بت (FP32). يتم الاستفادة من نقاط القوة في كل من FP16 و FP32 باستخدام FP16 لحساب أسرع و FP32 للحفاظ على الدقة عند الحاجة. تتم معظم عمليات الشبكة العصبية في FP16 للاستفادة من الحوسبة الأسرع واستخدام الذاكرة المنخفض. ومع ذلك ، يتم الاحتفاظ بنسخة رئيسية من أوزان النموذج في FP32 لضمان الدقة أثناء خطوات تحديث الوزن. يمكنك التعامل مع طرز أكبر أو أحجام دفعات أكبر ضمن نفس قيود الأجهزة.

نظرة عامة على التدريب الدقيق المختلط

لتنفيذ تدريب مختلط الدقة، ستحتاج إلى تعديل البرامج النصية للتدريب والتأكد من أن أجهزتك (مثل وحدات معالجة الرسومات) تدعمه. العديد من أطر التعلم العميق الحديثة ، مثل Tensorflow، تقدم دعما مدمجا للدقة المختلطة.

التدريب الدقيق المختلط واضح ومباشر عند العمل مع YOLOv8. يمكنك استخدام amp في تكوين التدريب الخاص بك. اعداد amp=True تمكين التدريب التلقائي على الدقة المختلطة (AMP). يعد التدريب الدقيق المختلط طريقة بسيطة لكنها فعالة لتحسين عملية تدريب النموذج الخاص بك.

الأوزان المدربة مسبقا

يعد استخدام الأوزان المدربة مسبقًا طريقة ذكية لتسريع عملية تدريب نموذجك. تأتي الأوزان المدربة مسبقًا من نماذج تم تدريبها بالفعل على مجموعات بيانات كبيرة، مما يمنح نموذجك بدايةً قوية. يعمل التعلّم المنقول على تكييف النماذج المدربة مسبقًا مع المهام الجديدة ذات الصلة. يتضمن الضبط الدقيق للنموذج المدرب مسبقًا البدء بهذه الأوزان ثم مواصلة التدريب على مجموعة البيانات الخاصة بك. تؤدي هذه الطريقة في التدريب إلى أوقات تدريب أسرع وأداء أفضل في كثير من الأحيان لأن النموذج يبدأ بفهم قوي للميزات الأساسية.

ال pretrained المعلمة تجعل نقل التعلم سهلا مع YOLOv8. اعداد pretrained=True سيستخدم الأوزان الافتراضية المدربة مسبقا، أو يمكنك تحديد مسار إلى نموذج مخصص تم تدريبه مسبقا. إن استخدام الأوزان المدربة مسبقا ونقل التعلم يعزز بشكل فعال قدرات نموذجك ويقلل من تكاليف التدريب.

تقنيات أخرى يجب مراعاتها عند التعامل مع مجموعة بيانات كبيرة

هناك طريقتان أخريان يجب مراعاتهما عند التعامل مع مجموعة بيانات كبيرة:

  • جداول معدل التعلم: يؤدي تنفيذ برامج جدولة معدل التعلم إلى ضبط معدل التعلم ديناميكيًا أثناء التدريب. يمكن لمعدل التعلم المضبوط جيدًا أن يمنع النموذج من تجاوز الحدود الدنيا ويحسن الاستقرار. عند التدريب YOLOv8 ، فإن lrf تساعد المعلمة في إدارة جدولة معدل التعلم عن طريق تعيين معدل التعلم النهائي ككسر من المعدل الأولي.
  • التدريب الموزع: للتعامل مع مجموعات البيانات الكبيرة، يمكن أن يغير التدريب الموزع قواعد اللعبة. يمكنك تقليل وقت التدريب عن طريق توزيع عبء عمل التدريب على عدة وحدات معالجة رسومات أو أجهزة متعددة.

عدد الحقب التي يجب التدريب عليها

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

السؤال الشائع الذي يطرح نفسه هو كيفية تحديد عدد العصور لتدريب النموذج عليها. نقطة انطلاق جيدة هي 300 حقبة. إذا كان النموذج يفرط في وقت مبكر ، يمكنك تقليل عدد العصور. إذا لم يحدث التجهيز الزائد بعد 300 حقبة ، فيمكنك تمديد التدريب إلى 600 أو 1200 حقبة أو أكثر.

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

التوقف المبكر

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

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

نظرة عامة على التوقف المبكر

من أجل YOLOv8، يمكنك تمكين التوقف المبكر عن طريق تعيين معلمة الصبر في تكوين التدريب الخاص بك. على سبيل المثال patience=5 يعني أن التدريب سيتوقف إذا لم يكن هناك تحسن في مقاييس التحقق من الصحة لمدة 5 فترات متتالية. يضمن استخدام هذه الطريقة بقاء عملية التدريب فعالة وتحقيق الأداء الأمثل دون حساب مفرط.

الاختيار بين التدريب السحابي والمحلي

هناك خياران لتدريب نموذجك: التدريب السحابي والتدريب المحلي.

يوفر التدريب السحابي قابلية التوسع والأجهزة القوية وهو مثالي للتعامل مع مجموعات البيانات الكبيرة والنماذج المعقدة. توفر منصات مثل Google Cloud و AWS و Azure إمكانية الوصول عند الطلب إلى وحدات معالجة الرسومات ووحدات معالجة الرسوميات ووحدات معالجة الرسوميات TPU عالية الأداء، مما يسرع من أوقات التدريب ويتيح إجراء تجارب على نماذج أكبر. ومع ذلك، يمكن أن يكون التدريب السحابي مكلفًا، خاصةً لفترات طويلة، ويمكن أن يؤدي نقل البيانات إلى زيادة التكاليف ووقت الاستجابة.

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

اختيار محسن

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

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

أدوات التحسين الشائعة

المحسنات المختلفة لها نقاط قوة وضعف مختلفة. دعونا نلقي نظرة على عدد قليل من المحسنات الشائعة.

  • SGD (نزول التدرج العشوائي):

    • يقوم بتحديث معلمات النموذج باستخدام تدرج دالة الخسارة فيما يتعلق بالمعلمات.
    • بسيطة وفعالة ولكن يمكن أن تكون بطيئة في التقارب وقد تتعثر في الحدود الدنيا المحلية.
  • آدم (تقدير اللحظة التكيفية):

    • يجمع بين فوائد كل من SGD والزخم و RMSProp.
    • يضبط معدل التعلم لكل معلمة بناء على تقديرات اللحظات الأولى والثانية من التدرجات.
    • مناسب تماما للبيانات الصاخبة والتدرجات المتناثرة.
    • فعال ويتطلب بشكل عام ضبطا أقل ، مما يجعله محسنا موصى به ل YOLOv8.
  • RMSProp (الانتشار الجذري للمربع الجذري):

    • يضبط معدل التعلم لكل معلمة بقسمة التدرج على متوسط تشغيل لمقادير التدرجات الحديثة.
    • يساعد في التعامل مع مشكلة التدرج المتلاشي وهو فعال للشبكات العصبية المتكررة.

من أجل YOLOv8ال optimizer تتيح لك المعلمة الاختيار من بين العديد من أدوات التحسين ، بما في ذلك SGD و Adam و AdamW و NAdam و RAdam و RMSProp ، أو يمكنك ضبطها على auto للاختيار التلقائي بناء على تكوين النموذج.

التواصل مع المجتمع

يمكن أن يساعدك كونك جزءا من مجتمع من عشاق رؤية الكمبيوتر في حل المشكلات والتعلم بشكل أسرع. فيما يلي بعض الطرق للتواصل والحصول على المساعدة ومشاركة الأفكار.

موارد المجتمع

  • مشكلات GitHub: قم بزيارة مستودعYOLOv8 GitHub واستخدم علامة تبويب المشكلات لطرح الأسئلة والإبلاغ عن الأخطاء واقتراح ميزات جديدة. المجتمع والمشرفون نشيطون للغاية ومستعدون للمساعدة.
  • Ultralytics خادم ديسكورد: انضم إلى خادمUltralytics Discord للدردشة مع المستخدمين والمطورين الآخرين والحصول على الدعم ومشاركة تجاربك.

الوثائق الرسمية

  • Ultralytics YOLOv8 التوثيق: اطلع على الوثائق الرسمية YOLOv8 للحصول على أدلة مفصلة ونصائح مفيدة حول مشاريع الرؤية الحاسوبية المختلفة.

سيساعدك استخدام هذه الموارد على حل التحديات والبقاء على اطلاع دائم بأحدث الاتجاهات والممارسات في مجتمع رؤية الكمبيوتر.

الماخذ الرئيسية

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

الأسئلة المتداولة

كيف يمكنني تحسين استخدام GPU عند تدريب مجموعة بيانات كبيرة باستخدام Ultralytics YOLO ؟

لتحسين استخدام GPU ، قم بتعيين batch_size في تكوين التدريب الخاص بك إلى الحد الأقصى للحجم الذي يدعمه GPU. وهذا يضمن لك الاستفادة الكاملة من إمكانيات GPU ، مما يقلل من وقت التدريب. إذا واجهت أخطاء في الذاكرة، قلل حجم الدفعة تدريجيًا حتى يتم التدريب بسلاسة. بالنسبة إلى YOLOv8 ، فإن ضبط batch=-1 in your training script will automatically determine the optimal batch size for efficient processing. For further information, refer to the تكوين التدريب.

ما هو التدريب الدقيق المختلط، وكيف يمكنني تمكينه في YOLOv8 ؟

يستخدم التدريب ذو الدقة المختلطة كلاً من أنواع الفاصلة العائمة 16 بت (FP16) و32 بت (FP32) لتحقيق التوازن بين السرعة الحسابية والدقة. يعمل هذا النهج على تسريع التدريب وتقليل استخدام الذاكرة دون التضحية بدقة النموذج. لتمكين التدريب مختلط الدقة في YOLOv8 ، قم بتعيين amp إلى True in your training configuration. This activates Automatic Mixed Precision (AMP) training. For more details on this optimization technique, see the تكوين التدريب.

كيف يعزز التدريب متعدد النطاقات أداء النموذج YOLOv8 ؟

يعمل التدريب متعدد النطاقات على تحسين أداء النموذج من خلال التدريب على صور ذات أحجام مختلفة، مما يسمح للنموذج بالتعميم بشكل أفضل عبر مقاييس ومسافات مختلفة. في YOLOv8 ، يمكنك تمكين التدريب متعدد النطاقات عن طريق تعيين scale في تكوين التدريب. على سبيل المثال, scale=0.5 يقلل من حجم الصورة بمقدار النصف، بينما scale=2.0 doubles it. This technique simulates objects at different distances, making the model more robust across various scenarios. For settings and more details, check out the تكوين التدريب.

كيف يمكنني استخدام الأوزان المدربة مسبقًا لتسريع التدريب في YOLOv8 ؟

يمكن أن يؤدي استخدام الأوزان المدربة مسبقًا إلى تقليل أوقات التدريب بشكل كبير وتحسين أداء النموذج من خلال البدء من نموذج يفهم بالفعل الميزات الأساسية. في YOLOv8 ، يمكنك تعيين pretrained إلى True or specify a path to custom pre-trained weights in your training configuration. This approach, known as transfer learning, leverages knowledge from large datasets to adapt to your specific task. Learn more about pre-trained weights and their advantages هنا.

يشير عدد الحقب الزمنية إلى التمريرات الكاملة من خلال مجموعة بيانات التدريب أثناء تدريب النموذج. نقطة البداية النموذجية هي 300 حلقة تدريبية. إذا كان النموذج الخاص بك يلائم النموذج في وقت مبكر، يمكنك تقليل العدد. وبدلاً من ذلك، إذا لم يتم ملاحظة الإفراط في التركيب، يمكنك تمديد التدريب إلى 600 أو 1200 أو أكثر من الحلقات. لتعيين هذا في YOLOv8 ، استخدم epochs parameter in your training script. For additional advice on determining the ideal number of epochs, refer to this section on number of epochs.



Created 2024-06-26, Updated 2024-07-05
Authors: glenn-jocher (3), Laughing-q (1), abirami-vina (1)

التعليقات