أفضل ممارسات التعلم الآلي ونصائح لتدريب النموذج
مقدمة
إحدى أهم الخطوات عند العمل على مشروع رؤية حاسوبية هي تدريب النموذج. قبل الوصول إلى هذه الخطوة، تحتاج إلى تحديد أهدافك وجمع بياناتك وتعليقها. بعد المعالجة المسبقة للبي انات للتأكد من نظافتها واتساقها، يمكنك الانتقال إلى تدريب نموذجك.
شاهد: Model Training Tips | How to Handle Large Datasets | Batch Size, GPU Utilization and [Mixed Precision](https://www.ultralytics.com/glossary/mixed-precision)
إذن، ما هو تدريب النموذج؟ التدريب على النموذج هو عملية تعليم النموذج الخاص بك للتعرف على الأنماط المرئية وإجراء تنبؤات بناءً على بياناتك. وهو يؤثر بشكل مباشر على أداء ودقة تطبيقك. في هذا الدليل، سنغطي أفضل الممارسات وتقنيات التحسين ونصائح استكشاف الأخطاء وإصلاحها لمساعدتك في تدريب نماذج الرؤية الحاسوبية الخاصة بك بشكل فعال.
How to Train a Machine Learning Model
يتم تدريب نموذج رؤية الكمبيوتر عن طريق ضبط معلماته الداخلية لتقليل الأخطاء. في البداية ، يتم تغذية النموذج بمجموعة كبيرة من الصور المصنفة. يقوم بعمل تنبؤات حول ما هو موجود في هذه الصور ، ويتم مقارنة التنبؤات بالتسميات أو المحتويات الفعلية لحساب الأخطاء. توضح هذه الأخطاء مدى بعد تنبؤات النموذج عن القيم الحقيقية.
During training, the model iteratively makes predictions, calculates errors, and updates its parameters through a process called backpropagation. In this process, the model adjusts its internal parameters (weights and biases) to reduce the errors. By repeating this cycle many times, the model gradually improves its accuracy. Over time, it learns to recognize complex patterns such as shapes, colors, and textures.
This learning process makes it possible for the computer vision model to perform various tasks, including object detection, instance segmentation, and image classification. The ultimate goal is to create a model that can generalize its learning to new, unseen images so that it can accurately understand visual data in real-world applications.
الآن بعد أن عرفنا ما يحدث وراء الكواليس عندما ندرب نموذجا ، دعونا نلقي نظرة على النقاط التي يجب مراعاتها عند تدريب نموذج.
التدريب على مجموعات البيانات الكبيرة
هناك بعض الجوانب المختلفة التي يجب التفكير فيها عندما تخطط لاستخدام مجموعة بيانات كبيرة لتدريب نموذج. على سبيل المثال، يمكنك ضبط حجم الدفعة، والتحكم في استخدام GPU ، واختيار استخدام التدريب متعدد النطاقات، وما إلى ذلك. لنستعرض كل خيار من هذه الخيارات بالتفصيل.
حجم الدفعة والاستخدام GPU
عند تدريب النماذج على مجموعات بيانات كبيرة، فإن استخدام GPU بكفاءة هو المفتاح. يعد حجم الدفعة عاملاً مهمًا. إنه عدد عينات البيانات التي يعالجها نموذج التعلم الآلي في تكرار تدريب واحد. باستخدام الحد الأقصى لحجم الدفعة الذي يدعمه GPU الخاص بك، يمكنك الاستفادة الكاملة من قدراته وتقليل الوقت الذي يستغرقه تدريب النموذج. ومع ذلك، فأنت تريد تجنب نفاد ذاكرة GPU . إذا واجهت أخطاء في الذاكرة، قلل حجم الدفعة تدريجيًا حتى يتدرب النموذج بسلاسة.
With respect to YOLO11, you can set the batch_size
في متغير تكوين التدريب لتتناسب مع سعتك GPU . كما أن إعداد batch=-1
in your training script will automatically determine the batch size that can be efficiently processed based on your device's capabilities. By fine-tuning the batch size, you can make the most of your GPU resources and improve the overall training process.
تدريب المجموعة الفرعية
تدريب المجموعة الفرعية هو استراتيجية ذكية تتضمن تدريب نموذجك على مجموعة أصغر من البيانات التي تمثل مجموعة البيانات الأكبر. يمكن أن يوفر الوقت والموارد ، خاصة أثناء تطوير النموذج الأولي واختباره. إذا كان الوقت ينفد أو تجرب تكوينات نموذج مختلفة ، فإن تدريب المجموعة الفرعية يعد خيارا جيدا.
When it comes to YOLO11, you can easily implement subset training by using the fraction
البارامتر. تتيح لك هذه المعلمة تحديد جزء مجموعة البيانات الذي تريد استخدامه للتدريب. على سبيل المثال، الإعداد fraction=0.1
سيتم تدريب نموذجك على 10٪ من البيانات. يمكنك استخدام هذه التقنية للتكرارات السريعة وضبط النموذج الخاص بك قبل الالتزام بتدريب نموذج باستخدام مجموعة بيانات كاملة. يساعدك تدريب المجموعة الفرعية على إحراز تقدم سريع وتحديد المشكلات المحتملة في وقت مبكر.
تدريب متعدد النطاقات
التدريب متعدد المقاييس هو تقنية تعمل على تحسين قدرة نموذجك على التعميم من خلال تدريبه على صور بأحجام مختلفة. يمكن أن يتعلم نموذجك اكتشاف الأجسام بمقاييس ومسافات مختلفة ويصبح أكثر قوة.
For example, when you train YOLO11, you can enable multiscale training by setting the scale
البارامتر. تقوم هذه المعلمة بضبط حجم صور التدريب بواسطة عامل محدد ، ومحاكاة الكائنات على مسافات مختلفة. على سبيل المثال، الإعداد scale=0.5
سيقلل حجم الصورة بمقدار النصف ، بينما scale=2.0
سوف يضاعفها. يسمح تكوين هذه المعلمة للنموذج الخاص بك بتجربة مجموعة متنوعة من مقاييس الصور وتحسين إمكانات الكشف الخاصة به عبر أحجام وسيناريوهات الكائنات المختلفة.
التخزين المؤقت
يعد التخزين المؤقت تقنية مهمة لتحسين كفاءة تدريب نماذج التعلم الآلي. من خلال تخزين الصور التي تمت معالجتها مسبقًا في الذاكرة، يقلل التخزين المؤقت من الوقت الذي يقضيه GPU في انتظار تحميل البيانات من القرص. يمكن للنموذج أن يتلقى البيانات باستمرار دون تأخير ناجم عن عمليات الإدخال/الإخراج من القرص.
Caching can be controlled when training YOLO11 using the cache
البارامتر:
cache=True
يخزن صور مجموعة البيانات في ذاكرة الوصول العشوائي ، مما يوفر أسرع سرعة وصول ولكن على حساب زيادة استخدام الذاكرة.:cache='disk'
يخزن الصور على القرص ، أبطأ من ذاكرة الوصول العشوائي ولكن أسرع من تحميل بيانات جديدة في كل مرة.:cache=False
تعطيل التخزين المؤقت ، والاعتماد كليا على إدخال / إخراج القرص ، وهو الخيار الأبطأ.:
تدريب مختلط الدقة
Mixed precision training uses both 16-bit (FP16) and 32-bit (FP32) floating-point types. The strengths of both FP16 and FP32 are leveraged by using FP16 for faster computation and FP32 to maintain precision where needed. Most of the neural network's operations are done in FP16 to benefit from faster computation and lower memory usage. However, a master copy of the model's weights is kept in FP32 to ensure accuracy during the weight update steps. You can handle larger models or larger batch sizes within the same hardware constraints.
To implement mixed precision training, you'll need to modify your training scripts and ensure your hardware (like GPUs) supports it. Many modern deep learning frameworks, such as Tensorflow, offer built-in support for mixed precision.
Mixed precision training is straightforward when working with YOLO11. You can use the amp
في تكوين التدريب الخاص بك. اعداد amp=True
تمكين التدريب التلقائي على الدقة المختلطة (AMP). يعد التدريب الدقيق المختلط طريقة بسيطة لكنها فعالة لتحسين عملية تدريب النموذج الخاص بك.
الأوزان المدربة مسبقا
Using pretrained weights is a smart way to speed up your model's training process. Pretrained weights come from models already trained on large datasets, giving your model a head start. Transfer learning adapts pretrained models to new, related tasks. Fine-tuning a pre-trained model involves starting with these weights and then continuing training on your specific dataset. This method of training results in faster training times and often better performance because the model starts with a solid understanding of basic features.
ال pretrained
parameter makes transfer learning easy with YOLO11. Setting pretrained=True
سيستخدم الأوزان الافتراضية المدربة مسبقا، أو يمكنك تحديد مسار إلى نموذج مخصص تم تدريبه مسبقا. إن استخدام الأوزان المدربة مسبقا ونقل التعلم يعزز بشكل فعال قدرات نموذجك ويقلل من تكاليف التدريب.
تقنيات أخرى يجب مراعاتها عند التعامل مع مجموعة بيانات كبيرة
هناك طريقتان أخريان يجب مراعاتهما عند التعامل مع مجموعة بيانات كبيرة:
- Learning Rate Schedulers: Implementing learning rate schedulers dynamically adjusts the learning rate during training. A well-tuned learning rate can prevent the model from overshooting minima and improve stability. When training YOLO11, the
lrf
تساعد المعلمة في إدارة جدولة معدل التعلم عن طريق تعيين معدل التعلم النهائي ككسر من المعدل الأولي. - التدريب الموزع: للتعامل مع مجموعات البيانات الكبيرة، يمكن أن يغير التدريب الموزع قواعد اللعبة. يمكنك تقليل وقت التدريب عن طريق توزيع عبء عمل التدريب على عدة وحدات معالجة رسومات أو أجهزة متعددة.
عدد الحقب التي يجب التدريب عليها
عند تدريب نموذج ، تشير الحقبة إلى مرور واحد كامل عبر مجموعة بيانات التدريب بأكملها. خلال حقبة ما ، يعالج النموذج كل مثال في مجموعة التدريب مرة واحدة ويقوم بتحديث معلماته بناء على خوارزمية التعلم. عادة ما تكون هناك حاجة إلى عصور متعددة للسماح للنموذج بالتعلم وتحسين معلماته بمرور الوقت.
A common question that comes up is how to determine the number of epochs to train the model for. A good starting point is 300 epochs. If the model overfits early, you can reduce the number of epochs. If overfitting does not occur after 300 epochs, you can extend the training to 600, 1200, or more epochs.
However, the ideal number of epochs can vary based on your dataset's size and project goals. Larger datasets might require more epochs for the model to learn effectively, while smaller datasets might need fewer epochs to avoid overfitting. With respect to YOLO11, you can set the epochs
المعلمة في البرنامج النصي للتدريب الخاص بك.
التوقف المبكر
التوقف المبكر هو أسلوب قيم لتحسين تدريب النموذج. من خلال مراقبة أداء التحقق من الصحة، يمكنك إيقاف التدريب بمجرد توقف النموذج عن التحسن. يمكنك حفظ الموارد الحسابية ومنع الإفراط في التجهيز.
The process involves setting a patience parameter that determines how many epochs to wait for an improvement in validation metrics before stopping training. If the model's performance does not improve within these epochs, training is stopped to avoid wasting time and resources.
For YOLO11, you can enable early stopping by setting the patience parameter in your training configuration. For example, patience=5
يعني أن التدريب سيتوقف إذا لم يكن هناك تحسن في مقاييس التحقق من الصحة لمدة 5 فترات متتالية. يضمن استخدام هذه الطريقة بقاء عملية التدريب فعالة وتحقيق الأداء الأمثل دون حساب مفرط.
الاختيار بين التدريب السحابي والمحلي
هناك خياران لتدريب نموذجك: التدريب السحابي والتدريب المحلي.
يوفر التدريب السحابي قابلية التوسع والأجهزة القوية وهو مثالي للتعامل مع مجموعات البيانات الكبيرة والنماذج المعقدة. توفر منصات مثل Google Cloud و AWS و Azure إمكانية الوصول عند الطلب إلى وحدات معالجة الرسومات ووحدات معالجة الرسوميات ووحدات معالجة الرسوميات TPU عالية الأداء، مما يسرع من أوقات التدريب ويتيح إجراء تجارب على نماذج أكبر. ومع ذلك، يمكن أن يكون التدريب السحابي مكلفًا، خاصةً لفترات طويلة، ويمكن أن يؤدي نقل البيانات إلى زيادة التكاليف ووقت الاستجابة.
يوفر التدريب المحلي قدرا أكبر من التحكم والتخصيص، مما يتيح لك تخصيص بيئتك وفقا لاحتياجات محددة وتجنب تكاليف السحابة المستمرة. يمكن أن يكون أكثر اقتصادا للمشاريع طويلة الأجل ، وبما أن بياناتك تظل محلية ، فهي أكثر أمانا. ومع ذلك ، قد يكون للأجهزة المحلية قيود على الموارد وتتطلب الصيانة ، مما قد يؤدي إلى أوقات تدريب أطول للطرز الكبيرة.
اختيار محسن
An optimizer is an algorithm that adjusts the weights of your neural network to minimize the loss function, which measures how well the model is performing. In simpler terms, the optimizer helps the model learn by tweaking its parameters to reduce errors. Choosing the right optimizer directly affects how quickly and accurately the model learns.
يمكنك أيضا ضبط معلمات محسن لتحسين أداء النموذج. يؤدي ضبط معدل التعلم إلى تعيين حجم الخطوات عند تحديث المعلمات. من أجل الاستقرار ، قد تبدأ بمعدل تعلم معتدل وتخفضه تدريجيا بمرور الوقت لتحسين التعلم على المدى الطويل. بالإضافة إلى ذلك، يحدد تعيين الزخم مدى تأثير التحديثات السابقة على التحديثات الحالية. القيمة الشائعة للزخم هي حوالي 0.9. يوفر بشكل عام توازنا جيدا.
أدوات التحسين الشائعة
المحسنات المختلفة لها نقاط قوة وضعف مختلفة. دعونا نلقي نظرة على عدد قليل من المحسنات الشائعة.
-
SGD (نزول التدرج العشوائي):
- يقوم بتحديث معلمات النموذج باستخدام تدرج دالة الخسارة فيما يتعلق بالمعلمات.
- بسيطة وفعالة ولكن يمكن أن تكون بطيئة في التقارب وقد تتعثر في الحدود الدنيا المحلية.
-
آدم (تقدير اللحظة التكيفية):
- يجمع بين فوائد كل من SGD والزخم و RMSProp.
- يضبط معدل التعلم لكل معلمة بناء على تقديرات اللحظات الأولى والثانية من التدرجات.
- مناسب تماما للبيانات الصاخبة والتدرجات المتناثرة.
- Efficient and generally requires less tuning, making it a recommended optimizer for YOLO11.
-
RMSProp (الانتشار الجذري للمربع الجذري):
- يضبط معدل التعلم لكل معلمة بقسمة التدرج على متوسط تشغيل لمقادير التدرجات الحديثة.
- Helps in handling the vanishing gradient problem and is effective for recurrent neural networks.
For YOLO11, the optimizer
تتيح لك المعلمة الاختيار من بين العديد من أدوات التحسين ، بما في ذلك SGD و Adam و AdamW و NAdam و RAdam و RMSProp ، أو يمكنك ضبطها على auto
للاختيار التلقائي بناء على تكوين النموذج.
التواصل مع المجتمع
يمكن أن يساعدك كونك جزءا من مجتمع من عشاق رؤية الكمبيوتر في حل المشكلات والتعلم بشكل أسرع. فيما يلي بعض الطرق للتواصل والحصول على المساعدة ومشاركة الأفكار.
موارد المجتمع
- GitHub Issues: Visit the YOLO11 GitHub repository and use the Issues tab to ask questions, report bugs, and suggest new features. The community and maintainers are very active and ready to help.
- Ultralytics خادم ديسكورد: انضم إلى خادمUltralytics Discord للدردشة مع المستخدمين والمطورين الآخرين والحصول على الدعم ومشاركة تجاربك.
الوثائق الرسمية
- Ultralytics YOLO11 Documentation: Check out the official YOLO11 documentation for detailed guides and helpful tips on various computer vision projects.
سيساعدك استخدام هذه الموارد على حل التحديات والبقاء على اطلاع دائم بأحدث الاتجاهات والممارسات في مجتمع رؤية الكمبيوتر.
الماخذ الرئيسية
Training computer vision models involves following good practices, optimizing your strategies, and solving problems as they arise. Techniques like adjusting batch sizes, mixed precision training, and starting with pre-trained weights can make your models work better and train faster. Methods like subset training and early stopping help you save time and resources. Staying connected with the community and keeping up with new trends will help you keep improving your model training skills.
الأسئلة المتداولة
كيف يمكنني تحسين استخدام GPU عند تدريب مجموعة بيانات كبيرة باستخدام Ultralytics YOLO ؟
لتحسين استخدام GPU ، قم بتعيين batch_size
parameter in your training configuration to the maximum size supported by your GPU. This ensures that you make full use of the GPU's capabilities, reducing training time. If you encounter memory errors, incrementally reduce the batch size until training runs smoothly. For YOLO11, setting batch=-1
في البرنامج النصي للتدريب الخاص بك سيحدد تلقائيًا حجم الدفعة الأمثل للمعالجة الفعالة. لمزيد من المعلومات، ارجع إلى تكوين التدريب.
What is mixed precision training, and how do I enable it in YOLO11?
Mixed precision training utilizes both 16-bit (FP16) and 32-bit (FP32) floating-point types to balance computational speed and precision. This approach speeds up training and reduces memory usage without sacrificing model accuracy. To enable mixed precision training in YOLO11, set the amp
إلى True
في تكوين التدريب الخاص بك. يؤدي ذلك إلى تنشيط التدريب التلقائي المختلط الدقة (AMP). للمزيد من التفاصيل حول تقنية التحسين هذه، راجع تكوين التدريب.
How does multiscale training enhance YOLO11 model performance?
Multiscale training enhances model performance by training on images of varying sizes, allowing the model to better generalize across different scales and distances. In YOLO11, you can enable multiscale training by setting the scale
في تكوين التدريب. على سبيل المثال, scale=0.5
يقلل من حجم الصورة بمقدار النصف، بينما scale=2.0
يضاعفها. تحاكي هذه التقنية الأجسام على مسافات مختلفة، مما يجعل النموذج أكثر قوة عبر سيناريوهات مختلفة. للاطلاع على الإعدادات والمزيد من التفاصيل، راجع تكوين التدريب.
How can I use pre-trained weights to speed up training in YOLO11?
Using pre-trained weights can significantly reduce training times and improve model performance by starting from a model that already understands basic features. In YOLO11, you can set the pretrained
إلى True
أو تحديد مسار إلى أوزان مخصصة مُدرَّبة مسبقًا في تكوين التدريب الخاص بك. يستفيد هذا النهج، المعروف باسم التعلُّم المنقول، من المعرفة من مجموعات البيانات الكبيرة للتكيف مع مهمتك المحددة. تعرف على المزيد حول الأوزان المدربة مسبقًا ومزاياها هنا.
What is the recommended number of epochs for training a model, and how do I set this in YOLO11?
The number of epochs refers to the complete passes through the training dataset during model training. A typical starting point is 300 epochs. If your model overfits early, you can reduce the number. Alternatively, if overfitting isn't observed, you might extend training to 600, 1200, or more epochs. To set this in YOLO11, use the epochs
في النص البرمجي التدريبي الخاص بك. للحصول على نصائح إضافية حول تحديد العدد المثالي من الحلقات الزمنية، راجع هذا القسم على عدد الحقب الزمنية.