Meilleures pratiques d'apprentissage automatique et conseils pour la formation de modèles
Introduction
L'une des étapes les plus importantes d'un projet de vision par ordinateur est l'apprentissage du modèle. Avant de passer à cette étape, vous devez définir vos objectifs et collecter et annoter vos données. Après avoir prétraité les données pour vous assurer qu'elles sont propres et cohérentes, vous pouvez passer à l'entraînement de votre modèle.
Regarder : Conseils pour l'entraînement des modèles | Comment traiter les grands ensembles de données | Taille des lots, GPU Utilisation et Précision mixte
Qu'est-ce que la formation au modèle? L'entraînement du modèle est le processus qui consiste à apprendre à votre modèle à reconnaître des modèles visuels et à faire des prédictions sur la base de vos données. Il a un impact direct sur les performances et la précision de votre application. Dans ce guide, nous aborderons les meilleures pratiques, les techniques d'optimisation et les conseils de dépannage pour vous aider à former efficacement vos modèles de vision par ordinateur.
Comment former un modèle d'apprentissage automatique
Un modèle de vision par ordinateur est formé en ajustant ses paramètres internes afin de minimiser les erreurs. Au départ, le modèle est alimenté par un grand ensemble d'images étiquetées. Il fait des prédictions sur le contenu de ces images et les prédictions sont comparées aux étiquettes ou au contenu réels pour calculer les erreurs. Ces erreurs montrent à quel point les prédictions du modèle sont éloignées des valeurs réelles.
Pendant l'apprentissage, le modèle fait des prédictions de manière itérative, calcule les erreurs et met à jour ses paramètres par le biais d'un processus appelé rétropropagation. Au cours de ce processus, le modèle ajuste ses paramètres internes (weights and biases) afin de réduire les erreurs. En répétant ce cycle de nombreuses fois, le modèle améliore progressivement sa précision. Au fil du temps, il apprend à reconnaître des motifs complexes tels que les formes, les couleurs et les textures.
Ce processus d'apprentissage permet au modèle de vision par ordinateur d'effectuer diverses tâches, notamment la détection d'objets, la segmentation d'instances et la classification d'images. L'objectif ultime est de créer un modèle capable de généraliser son apprentissage à de nouvelles images inédites afin de comprendre avec précision les données visuelles dans les applications du monde réel.
Maintenant que nous savons ce qui se passe en coulisses lorsque nous formons un modèle, examinons les points à prendre en compte lors de la formation d'un modèle.
Formation sur de grands ensembles de données
Il y a plusieurs aspects différents à prendre en compte lorsque vous prévoyez d'utiliser un grand ensemble de données pour entraîner un modèle. Par exemple, vous pouvez ajuster la taille du lot, contrôler l'utilisation de GPU , choisir d'utiliser la formation multi-échelle, etc. Examinons chacune de ces options en détail.
Taille des lots et GPU Utilisation
Lors de la formation de modèles sur de grands ensembles de données, il est essentiel d'utiliser efficacement votre site GPU . La taille des lots est un facteur important. Il s'agit du nombre d'échantillons de données qu'un modèle d'apprentissage automatique traite en une seule itération de formation. En utilisant la taille de lot maximale prise en charge par votre GPU, vous pouvez tirer pleinement parti de ses capacités et réduire le temps nécessaire à l'apprentissage du modèle. Cependant, vous devez éviter de manquer de mémoire sur GPU . Si vous rencontrez des erreurs de mémoire, réduisez progressivement la taille du lot jusqu'à ce que le modèle s'entraîne sans problème.
En ce qui concerne le site YOLO11, vous pouvez définir les paramètres suivants batch_size
dans le fichier configuration de la formation en fonction de votre capacité GPU . En outre, le réglage de batch=-1
dans votre script de formation déterminera automatiquement le taille du lot qui peuvent être traitées efficacement en fonction des capacités de votre appareil. En affinant la taille des lots, vous pouvez tirer le meilleur parti de vos ressources GPU et améliorer le processus de formation dans son ensemble.
Formation de sous-ensembles
L'apprentissage par sous-ensemble est une stratégie intelligente qui consiste à entraîner votre modèle sur un plus petit ensemble de données représentant l'ensemble de données plus large. Elle permet de gagner du temps et d'économiser des ressources, en particulier lors du développement et des tests initiaux du modèle. Si vous manquez de temps ou si vous expérimentez différentes configurations de modèles, la formation par sous-ensembles est une bonne option.
Lorsqu'il s'agit de YOLO11, vous pouvez facilement mettre en Ĺ“uvre l'apprentissage par sous-ensembles en utilisant la fonction fraction
paramètre. Ce paramètre vous permet de spécifier la fraction de votre ensemble de données à utiliser pour la formation. Par exemple, le paramètre fraction=0.1
entraînera votre modèle sur 10 % des données. Vous pouvez utiliser cette technique pour des itérations rapides et la mise au point de votre modèle avant de vous engager dans la formation d'un modèle utilisant un ensemble complet de données. L'entraînement sur des sous-ensembles vous permet de progresser rapidement et d'identifier très tôt les problèmes potentiels.
Formation multi-Ă©chelle
L'entraînement multi-échelle est une technique qui améliore la capacité de généralisation de votre modèle en l'entraînant sur des images de différentes tailles. Votre modèle peut ainsi apprendre à détecter des objets à différentes échelles et distances et devenir plus robuste.
Par exemple, lorsque vous entraînez YOLO11, vous pouvez activer l'entraînement multi-échelle en définissant le paramètre scale
paramètre. Ce paramètre ajuste la taille des images d'entraînement en fonction d'un facteur spécifié, simulant ainsi des objets à différentes distances. Par exemple, le réglage de scale=0.5
réduira la taille de l'image de moitié, tandis que scale=2.0
la doublera. La configuration de ce paramètre permet à votre modèle d'expérimenter différentes échelles d'image et d'améliorer ses capacités de détection en fonction de la taille des objets et des scénarios.
Mise en cache
La mise en cache est une technique importante pour améliorer l'efficacité de la formation des modèles d'apprentissage automatique. En stockant les images prétraitées en mémoire, la mise en cache réduit le temps que GPU passe à attendre que les données soient chargées à partir du disque. Le modèle peut recevoir des données en continu sans les retards causés par les opérations d'entrée/sortie du disque.
La mise en cache peut être contrôlée lors de la formation à l'adresse YOLO11 à l'aide de la fonction cache
paramètre :
cache=True
: Stocke les images de l'ensemble de données dans la mémoire vive, ce qui permet d'obtenir la vitesse d'accès la plus rapide, mais au prix d'une utilisation accrue de la mémoire.cache='disk'
: Stocke les images sur le disque, ce qui est plus lent que la mémoire vive mais plus rapide que le chargement de nouvelles données à chaque fois.cache=False
: Désactive la mise en cache et s'appuie entièrement sur les entrées/sorties sur disque, ce qui est l'option la plus lente.
Entraînement mixte de précision
La formation à la précision mixte utilise à la fois les types de virgule flottante 16 bits (FP16) et 32 bits (FP32). Les points forts des deux types FP16 et FP32 sont exploités en utilisant le FP16 pour un calcul plus rapide et le FP32 pour maintenir la précision lorsque cela est nécessaire. La plupart des opérations du réseau neuronal sont effectuées en FP16 pour bénéficier d'un calcul plus rapide et d'une utilisation moindre de la mémoire. Toutefois, une copie maîtresse des poids du modèle est conservée en FP32 pour garantir la précision lors des étapes de mise à jour des poids. Vous pouvez traiter des modèles plus importants ou des lots plus volumineux en respectant les mêmes contraintes matérielles.
Pour mettre en œuvre l'apprentissage à précision mixte, vous devrez modifier vos scripts d'apprentissage et vous assurer que votre matériel (comme les GPU) le prend en charge. De nombreux frameworks d'apprentissage profond modernes, tels que Tensorflowoffrent une prise en charge intégrée de la précision mixte.
L'apprentissage de la précision mixte est très simple lorsqu'on travaille avec YOLO11. Vous pouvez utiliser la fonction amp
dans votre configuration de formation. Paramètres amp=True
permet l'apprentissage automatique de la précision mixte (AMP). La formation à la précision mixte est un moyen simple mais efficace d'optimiser le processus de formation de votre modèle.
Poids pré-entraînés
L'utilisation de poids pré-entraînés est un moyen intelligent d'accélérer le processus de formation de votre modèle. Les poids pré-entraînés proviennent de modèles déjà entraînés sur de grands ensembles de données, ce qui donne une longueur d'avance à votre modèle. L'apprentissage par transfert permet d'adapter les modèles pré-entraînés à de nouvelles tâches connexes. Pour affiner un modèle pré-entraîné, il faut commencer par ces poids, puis poursuivre la formation sur votre ensemble de données spécifique. Cette méthode de formation permet d'obtenir des temps de formation plus courts et souvent de meilleures performances, car le modèle commence par avoir une bonne compréhension des caractéristiques de base.
Le pretrained
parameter facilite l'apprentissage par transfert avec YOLO11. Paramètre pretrained=True
utilisera les poids pré-entraînés par défaut, ou vous pouvez spécifier un chemin vers un modèle pré-entraîné personnalisé. L'utilisation de poids pré-entraînés et de l'apprentissage par transfert renforce efficacement les capacités de votre modèle et réduit les coûts de formation.
Autres techniques à prendre en compte lors du traitement d'un grand ensemble de données
Il existe d'autres techniques à prendre en compte lors du traitement d'un grand ensemble de données :
- Ordonnanceurs à taux d'apprentissage: La mise en œuvre de programmateurs de taux d'apprentissage permet d'ajuster dynamiquement le taux d'apprentissage pendant la formation. Un taux d'apprentissage bien réglé peut empêcher le modèle de dépasser les minima et améliorer la stabilité. Lors de la formation YOLO11, le
lrf
permet de gérer la programmation du taux d'apprentissage en fixant le taux d'apprentissage final comme une fraction du taux initial. - Formation distribuée: Pour le traitement de grands ensembles de données, la formation distribuée peut changer la donne. Vous pouvez réduire le temps de formation en répartissant la charge de travail de formation sur plusieurs GPU ou machines.
Le nombre d'époques pour lesquelles il faut s'entraîner
Lors de la formation d'un modèle, une époque correspond à un passage complet dans l'ensemble des données de formation. Au cours d'une période, le modèle traite une fois chaque exemple de l'ensemble de données de formation et met à jour ses paramètres sur la base de l'algorithme d'apprentissage. Plusieurs époques sont généralement nécessaires pour permettre au modèle d'apprendre et d'affiner ses paramètres au fil du temps.
Une question fréquente est de savoir comment déterminer le nombre d'époques pour lesquelles le modèle doit être entraîné. Un bon point de départ est 300 époques. Si le modèle s'adapte trop rapidement, vous pouvez réduire le nombre d'époques. Si l'overfitting ne se produit pas après 300 epochs, vous pouvez étendre la formation à 600, 1200, ou plus.
Cependant, le nombre idéal d'époques peut varier en fonction de la taille de l'ensemble de données et des objectifs du projet. Les grands ensembles de données peuvent nécessiter plus d'époques pour que le modèle apprenne efficacement, tandis que les petits ensembles de données peuvent nécessiter moins d'époques pour éviter un surajustement. En ce qui concerne YOLO11, vous pouvez définir le paramètre epochs
dans votre script de formation.
Arrêt précoce
L'arrêt anticipé est une technique précieuse pour optimiser la formation des modèles. En surveillant les performances de validation, vous pouvez interrompre la formation dès que le modèle ne s'améliore plus. Vous pouvez ainsi économiser des ressources informatiques et éviter le surajustement.
Le processus consiste à définir un paramètre de patience qui détermine le nombre d'époques à attendre pour une amélioration des mesures de validation avant d'arrêter la formation. Si les performances du modèle ne s'améliorent pas au cours de ces périodes, la formation est interrompue afin d'éviter une perte de temps et de ressources.
Pour YOLO11, vous pouvez activer l'arrêt anticipé en définissant le paramètre de patience dans votre configuration de formation. Par exemple, vous pouvez activer l'arrêt anticipé en définissant le paramètre de patience dans votre configuration de formation, patience=5
signifie que la formation s'arrêtera s'il n'y a pas d'amélioration des mesures de validation pendant 5 époques consécutives. L'utilisation de cette méthode garantit que le processus de formation reste efficace et permet d'obtenir des performances optimales sans calcul excessif.
Choisir entre la formation en nuage et la formation locale
Il existe deux options pour former votre modèle : la formation en nuage et la formation locale.
La formation en nuage offre une évolutivité et un matériel puissant et est idéale pour traiter de grands ensembles de données et des modèles complexes. Des plateformes telles que Google Cloud, AWS et Azure offrent un accès à la demande à des GPU et TPU très performants, ce qui accélère les temps de formation et permet de réaliser des expériences avec des modèles plus importants. Cependant, l'entraînement dans le nuage peut être coûteux, en particulier sur de longues périodes, et le transfert de données peut augmenter les coûts et la latence.
La formation locale offre un meilleur contrôle et une plus grande personnalisation, ce qui vous permet d'adapter votre environnement à vos besoins spécifiques et d'éviter les coûts permanents liés à l'informatique dématérialisée. Elle peut être plus économique pour les projets à long terme et, comme vos données restent sur place, elle est plus sûre. Cependant, le matériel local peut avoir des ressources limitées et nécessiter une maintenance, ce qui peut allonger les délais de formation pour les grands modèles.
SĂ©lection d'un optimiseur
Un optimiseur est un algorithme qui ajuste les poids de votre réseau neuronal afin de minimiser la fonction de perte, qui mesure la performance du modèle. En termes plus simples, l'optimiseur aide le modèle à apprendre en ajustant ses paramètres pour réduire les erreurs. Le choix de l'optimiseur approprié a une incidence directe sur la rapidité et la précision de l'apprentissage du modèle.
Vous pouvez également affiner les paramètres de l'optimiseur afin d'améliorer les performances du modèle. Le réglage du taux d'apprentissage définit la taille des étapes lors de la mise à jour des paramètres. Pour la stabilité, vous pouvez commencer avec un taux d'apprentissage modéré et le réduire progressivement au fil du temps pour améliorer l'apprentissage à long terme. En outre, le réglage de l'élan détermine l'influence des mises à jour passées sur les mises à jour actuelles. Une valeur courante pour le momentum est d'environ 0,9. Elle offre généralement un bon équilibre.
Optimiseurs courants
Les différents optimiseurs ont des forces et des faiblesses différentes. Jetons un coup d'œil à quelques optimiseurs courants.
-
SGD (descente stochastique de gradient):
- Met à jour les paramètres du modèle en utilisant le gradient de la fonction de perte par rapport aux paramètres.
- Simple et efficace, mais peut être lent à converger et peut rester bloqué dans des minima locaux.
-
Adam (Adaptive Moment Estimation):
- Combine les avantages de SGD with momentum et de RMSProp.
- Ajuste le taux d'apprentissage pour chaque paramètre sur la base des estimations des premiers et seconds moments des gradients.
- Bien adapté aux données bruitées et aux gradients épars.
- Il est efficace et nécessite généralement moins de réglages, ce qui en fait un optimiseur recommandé pour YOLO11.
-
RMSProp (Root Mean Square Propagation) :
- Ajuste le taux d'apprentissage pour chaque paramètre en divisant le gradient par une moyenne des amplitudes des gradients récents.
- Permet de traiter le problème du gradient de fuite et est efficace pour les réseaux neuronaux récurrents.
Pour YOLO11, le optimizer
Le paramètre vous permet de choisir parmi différents optimiseurs, notamment SGD, Adam, AdamW, NAdam, RAdam et RMSProp, ou vous pouvez le définir comme suit auto
pour une sélection automatique basée sur la configuration du modèle.
Se connecter à la communauté
Faire partie d'une communauté de passionnés de vision par ordinateur peut vous aider à résoudre des problèmes et à apprendre plus rapidement. Voici quelques moyens de vous connecter, d'obtenir de l'aide et de partager des idées.
Ressources communautaires
- GitHub Issues : Visitez le dépôt GitHub YOLO11 et utilisez l'onglet Issues pour poser des questions, signaler des bogues et suggérer de nouvelles fonctionnalités. La communauté et les mainteneurs sont très actifs et prêts à vous aider.
- Ultralytics Serveur Discord : Rejoignez le serveur DiscordUltralytics pour discuter avec d'autres utilisateurs et développeurs, obtenir de l'aide et partager vos expériences.
Documentation officielle
- Ultralytics YOLO11 Documentation : Consultez la documentation officielle de YOLO11 pour obtenir des guides détaillés et des conseils utiles sur divers projets de vision par ordinateur.
L'utilisation de ces ressources vous aidera à relever des défis et à rester au fait des dernières tendances et pratiques dans le domaine de la vision par ordinateur.
Principaux enseignements
La formation de modèles de vision par ordinateur implique le respect de bonnes pratiques, l'optimisation de vos stratégies et la résolution des problèmes au fur et à mesure qu'ils se présentent. Des techniques telles que l'ajustement de la taille des lots, l'entraînement de précision mixte et le démarrage avec des poids pré-entraînés peuvent permettre à vos modèles de mieux fonctionner et de s'entraîner plus rapidement. Des méthodes telles que l'apprentissage par sous-ensembles et l'arrêt précoce vous permettent de gagner du temps et d'économiser des ressources. En restant en contact avec la communauté et en vous tenant au courant des nouvelles tendances, vous pourrez continuer à améliorer vos compétences en matière de formation de modèles.
FAQ
Comment améliorer l'utilisation de GPU lors de l'entraînement d'un grand ensemble de données avec Ultralytics YOLO ?
Pour améliorer l'utilisation de GPU , définissez batch_size
dans votre configuration de formation à la taille maximale prise en charge par votre GPU. Cela vous permet d'utiliser pleinement les capacités du site GPU et de réduire la durée de la formation. Si vous rencontrez des erreurs de mémoire, réduisez progressivement la taille du lot jusqu'à ce que la formation se déroule sans problème. Pour YOLO11, le réglage de batch=-1
dans votre script de formation déterminera automatiquement la taille optimale du lot pour un traitement efficace. Pour plus d'informations, consultez la page configuration de la formation.
Qu'est-ce que l'entraînement de précision mixte et comment l'activer dans YOLO11?
La formation en précision mixte utilise les types de virgule flottante 16 bits (FP16) et 32 bits (FP32) pour équilibrer la vitesse de calcul et la précision. Cette approche permet d'accélérer la formation et de réduire l'utilisation de la mémoire sans sacrifier la précision du modèle. précision. Pour activer l'apprentissage en précision mixte dans YOLO11, définissez amp
au paramètre True
dans votre configuration de formation. Cela active la formation de précision mixte automatique (AMP). Pour plus de détails sur cette technique d'optimisation, voir la section configuration de la formation.
Comment la formation multi-échelle améliore-t-elle la performance du modèle YOLO11 ?
L'apprentissage multi-échelle améliore les performances du modèle en l'entraînant sur des images de différentes tailles, ce qui permet au modèle de mieux se généraliser à différentes échelles et distances. Dans YOLO11, vous pouvez activer l'apprentissage multi-échelle en définissant le paramètre scale
dans la configuration de la formation. Par exemple, scale=0.5
réduit la taille de l'image de moitié, tandis que scale=2.0
le double. Cette technique permet de simuler des objets à différentes distances, ce qui rend le modèle plus robuste dans différents scénarios. Pour connaître les paramètres et obtenir plus de détails, consultez la page configuration de la formation.
Comment puis-je utiliser des poids pré-entraînés pour accélérer l'entraînement dans YOLO11?
L'utilisation de poids pré-entraînés permet de réduire considérablement les temps de formation et d'améliorer les performances du modèle en partant d'un modèle qui comprend déjà les caractéristiques de base. Sur le site YOLO11, vous pouvez définir les pretrained
au paramètre True
ou spécifiez un chemin vers des poids pré-entraînés personnalisés dans votre configuration de formation. Cette approche, connue sous le nom d'apprentissage par transfert, exploite les connaissances issues de vastes ensembles de données pour s'adapter à votre tâche spécifique. En savoir plus sur les poids pré-entraînés et leurs avantages ici.
Quel est le nombre d'époques recommandé pour l'entraînement d'un modèle, et comment puis-je le définir dans YOLO11?
Le nombre d'époques correspond au nombre de passages complets dans l'ensemble de données d'apprentissage au cours de l'apprentissage du modèle. Un point de départ typique est 300 époques. Si votre modèle s'adapte trop rapidement, vous pouvez réduire ce nombre. En revanche, si vous n'observez pas de surajustement, vous pouvez étendre la formation à 600, 1200 ou plus d'époques. Pour définir ce paramètre dans YOLO11, utilisez l'option epochs
dans votre script de formation. Pour obtenir des conseils supplémentaires sur la détermination du nombre idéal d'époques, reportez-vous à cette section sur les nombre d'époques.