Techniques de prétraitement des données pour les données de vision par ordinateur annotées
Introduction
Après avoir défini les objectifs de votre projet de vision par ordinateur et collecté et annoté les données, l'étape suivante consiste à prétraiter les données annotées et à les préparer pour l'entraînement du modèle. Des données propres et cohérentes sont essentielles pour créer un modèle performant.
Regarder : Comment utiliser le prétraitement et l'augmentation des données pour améliorer la précision du modèle dans des scénarios réels 🚀
Le prétraitement est une étape du flux de travail d'un projet de vision par ordinateur qui comprend le redimensionnement des images, la normalisation des valeurs des pixels, l'augmentation du jeu de données et la division des données en ensembles d'entraînement, de validation et de test. Explorons les techniques essentielles et les meilleures pratiques pour nettoyer vos données !
Importance du prétraitement des données
Nous collectons et annotons déjà nos données avec soin en tenant compte de plusieurs considérations. Alors, pourquoi le prétraitement des données est-il si important pour un projet de vision par ordinateur ? Eh bien, le prétraitement des données consiste à mettre vos données dans un format approprié pour l'entraînement, ce qui réduit la charge de calcul et contribue à améliorer les performances du modèle. Voici quelques problèmes courants dans les données brutes que le prétraitement permet de résoudre :
- Bruit : Variations non pertinentes ou aléatoires dans les données.
- Incohérence : Variations dans les tailles, les formats et la qualité des images.
- Déséquilibre : Répartition inégale des classes ou des catégories dans le jeu de données.
Techniques de prétraitement des données
L'une des premières étapes essentielles du prétraitement des données est le redimensionnement. Certains modèles sont conçus pour gérer des tailles d'entrée variables, mais de nombreux modèles nécessitent une taille d'entrée cohérente. Le redimensionnement des images les rend uniformes et réduit la complexité computationnelle.
Redimensionnement des images
Vous pouvez redimensionner vos images en utilisant les méthodes suivantes :
- Interpolation bilinéaire : Lisse les valeurs des pixels en prenant une moyenne pondérée des quatre valeurs de pixels les plus proches.
- Plus proche voisin : Attribue la valeur du pixel le plus proche sans moyenne, ce qui donne une image en blocs mais un calcul plus rapide.
Pour simplifier le redimensionnement, vous pouvez utiliser les outils suivants :
- OpenCV : Une bibliothèque de vision artificielle populaire avec de nombreuses fonctions pour le traitement d'image.
- PIL (Pillow) : Une bibliothèque d'imagerie python pour ouvrir, manipuler et enregistrer des fichiers image.
Concernant YOLO11, le paramètre 'imgsz' pendant l'entraînement du modèle permet des tailles d'entrée flexibles. Lorsqu'il est défini sur une taille spécifique, telle que 640, le modèle redimensionnera les images d'entrée de sorte que leur plus grande dimension soit de 640 pixels tout en conservant le rapport hauteur/largeur d'origine.
En évaluant les besoins spécifiques de votre modèle et de votre ensemble de données, vous pouvez déterminer si le redimensionnement est une étape de prétraitement nécessaire ou si votre modèle peut gérer efficacement des images de tailles variables.
Normalisation des valeurs des pixels
Une autre technique de prétraitement est la normalisation. La normalisation met à l'échelle les valeurs des pixels dans une plage standard, ce qui permet une convergence plus rapide pendant l'entraînement et améliore les performances du modèle. Voici quelques techniques de normalisation courantes :
- Mise à l'échelle Min-Max : Met à l'échelle les valeurs des pixels dans une plage de 0 à 1.
- Normalisation Z-Score : Met à l'échelle les valeurs des pixels en fonction de leur moyenne et de leur écart type.
Concernant YOLO11, la normalisation est gérée de manière transparente dans le cadre de son pipeline de prétraitement pendant l'entraînement du modèle. YOLO11 effectue automatiquement plusieurs étapes de prétraitement, notamment la conversion en RGB, la mise à l'échelle des valeurs des pixels dans la plage [0, 1] et la normalisation à l'aide de valeurs moyennes et d'écart type prédéfinies.
Division de l'ensemble de données
Une fois les données nettoyées, vous êtes prêt à diviser l'ensemble de données. La division des données en ensembles d'entraînement, de validation et de test est effectuée pour garantir que le modèle peut être évalué sur des données non vues afin d'évaluer ses performances de généralisation. Une division courante est de 70 % pour l'entraînement, 20 % pour la validation et 10 % pour les tests. Il existe divers outils et bibliothèques que vous pouvez utiliser pour diviser vos données comme scikit-learn ou TensorFlow.
Tenez compte des éléments suivants lors de la division de votre ensemble de données :
- Maintien de la distribution des données : Assurez-vous que la distribution des données des classes est maintenue dans les ensembles d'entraînement, de validation et de test.
- Éviter la fuite de données : En règle générale, l’augmentation des données est effectuée après la division de l’ensemble de données. L’augmentation des données et tout autre prétraitement ne doivent être appliqués qu’à l’ensemble d’apprentissage afin d’empêcher les informations des ensembles de validation ou de test d’influencer l’apprentissage du modèle.
- Équilibrage des classes : Pour les ensembles de données déséquilibrés, envisagez des techniques telles que le suréchantillonnage de la classe minoritaire ou le sous-échantillonnage de la classe majoritaire dans l’ensemble d’apprentissage.
Qu'est-ce que l'augmentation des données ?
L'étape de prétraitement des données la plus souvent abordée est l'augmentation des données. L'augmentation des données augmente artificiellement la taille du dataset en créant des versions modifiées des images. En augmentant vos données, vous pouvez réduire le surapprentissage et améliorer la généralisation du modèle.
Voici d'autres avantages de l'augmentation des données :
- Crée un ensemble de données plus robuste : L'augmentation des données peut rendre le modèle plus robuste aux variations et aux distorsions des données d'entrée. Cela comprend les changements d'éclairage, d'orientation et d'échelle.
- Rentable : L'augmentation des données est un moyen rentable d'augmenter la quantité de données d'entraînement sans collecter ni étiqueter de nouvelles données.
- Meilleure utilisation des données : Chaque point de données disponible est utilisé à son potentiel maximum en créant de nouvelles variations
Méthodes d'augmentation des données
Les techniques d'augmentation courantes incluent le retournement, la rotation, la mise à l'échelle et les ajustements de couleur. Plusieurs bibliothèques, telles que Albumentations, Imgaug et ImageDataGenerator de TensorFlow, peuvent générer ces augmentations.
Concernant YOLO11, vous pouvez augmenter votre ensemble de données personnalisé en modifiant le fichier de configuration de l'ensemble de données, un fichier .yaml. Dans ce fichier, vous pouvez ajouter une section d'augmentation avec des paramètres qui spécifient la manière dont vous souhaitez augmenter vos données.
Le référentiel Ultralytics YOLO11 prend en charge un large éventail d'augmentations de données. Vous pouvez appliquer diverses transformations telles que :
- Recadrages aléatoires
- Retournement : Les images peuvent être retournées horizontalement ou verticalement.
- Rotation : Les images peuvent être pivotées selon des angles spécifiques.
- Distorsion
De plus, vous pouvez ajuster l'intensité de ces techniques d'augmentation via des paramètres spécifiques pour générer une plus grande variété de données.
Étude de cas sur le prétraitement
Prenons l'exemple d'un projet visant à développer un modèle pour détecter et classifier différents types de véhicules dans des images de trafic en utilisant YOLO11. Nous avons collecté des images de trafic et les avons annotées avec des boîtes englobantes et des étiquettes.
Voici à quoi ressemblerait chaque étape du prétraitement pour ce projet :
- Redimensionnement des images : Étant donné que YOLO11 gère des tailles d'entrée flexibles et effectue un redimensionnement automatique, le redimensionnement manuel n'est pas nécessaire. Le modèle ajustera la taille de l'image en fonction du paramètre « imgsz » spécifié pendant l'entraînement.
- Normalisation des valeurs de pixel : YOLO11 normalise automatiquement les valeurs de pixel dans une plage de 0 à 1 pendant le prétraitement, ce n’est donc pas nécessaire.
- Fractionnement de l’ensemble de données : Divisez l’ensemble de données en ensembles d’entraînement (70 %), de validation (20 %) et de test (10 %) à l’aide d’outils comme scikit-learn.
- Augmentation des données : Modifiez le fichier de configuration du jeu de données (.yaml) pour inclure des techniques d'augmentation des données telles que les recadrages aléatoires, les retournements horizontaux et les ajustements de luminosité.
Ces étapes garantissent que l'ensemble de données est préparé sans problèmes potentiels et qu'il est prêt pour l'analyse exploratoire des données (EDA).
Techniques d'analyse exploratoire des données
Après avoir prétraité et augmenté votre ensemble de données, l'étape suivante consiste à obtenir des informations grâce à l'analyse exploratoire des données. L'EDA utilise des techniques statistiques et des outils de visualisation pour comprendre les modèles et les distributions dans vos données. Vous pouvez identifier des problèmes tels que les déséquilibres de classe ou les valeurs aberrantes et prendre des décisions éclairées concernant d'autres ajustements de prétraitement des données ou d'entraînement du modèle.
Techniques statistiques d'analyse exploratoire des données
Les techniques statistiques commencent souvent par le calcul de métriques de base telles que la moyenne, la médiane, l'écart type et la plage. Ces métriques fournissent un aperçu rapide des propriétés de votre ensemble de données d'images, telles que les distributions d'intensité des pixels. La compréhension de ces statistiques de base vous aide à saisir la qualité globale et les caractéristiques de vos données, ce qui vous permet de repérer rapidement toute irrégularité.
Techniques visuelles d'analyse exploratoire des données
Les visualisations sont essentielles dans l'analyse exploratoire des données (EDA) pour les ensembles de données d'images. Par exemple, l'analyse du déséquilibre des classes est un autre aspect essentiel de l'EDA. Elle permet de déterminer si certaines classes sont sous-représentées dans votre ensemble de données. La visualisation de la distribution des différentes classes ou catégories d'images à l'aide de diagrammes à barres peut rapidement révéler tout déséquilibre. De même, les valeurs aberrantes peuvent être identifiées à l'aide d'outils de visualisation tels que les diagrammes en boîte, qui mettent en évidence les anomalies dans l'intensité des pixels ou les distributions de caractéristiques. La détection des valeurs aberrantes empêche les points de données inhabituels de fausser vos résultats.
Les outils courants pour les visualisations comprennent :
- Histogrammes et diagrammes en boîte : Utiles pour comprendre la distribution des valeurs de pixel et identifier les valeurs aberrantes.
- Nuages de points : Utiles pour explorer les relations entre les caractéristiques ou les annotations des images.
- Cartes thermiques : Efficaces pour visualiser la distribution des intensités de pixels ou la distribution spatiale des caractéristiques annotées dans les images.
Utilisation d'Ultralytics Explorer pour l'analyse exploratoire des données
Note de la communauté ⚠️
À partir de ultralytics>=8.3.10
, la prise en charge de l'explorateur Ultralytics a été abandonnée. Mais ne vous inquiétez pas ! Vous pouvez désormais accéder à des fonctionnalités similaires, voire améliorées, via Ultralytics HUB, notre plateforme intuitive sans code conçue pour rationaliser votre flux de travail. Avec Ultralytics HUB, vous pouvez continuer à explorer, visualiser et gérer vos données sans effort, le tout sans écrire une seule ligne de code. N'oubliez pas d'y jeter un coup d'œil et de profiter de ses puissantes fonctionnalités !🚀
Pour une approche plus avancée de l'EDA, vous pouvez utiliser l'outil Ultralytics Explorer. Il offre des capacités robustes pour l'exploration des ensembles de données de vision par ordinateur. En prenant en charge la recherche sémantique, les requêtes SQL et la recherche de similarité vectorielle, l'outil facilite l'analyse et la compréhension de vos données. Avec Ultralytics Explorer, vous pouvez créer des incorporations pour votre ensemble de données afin de trouver des images similaires, exécuter des requêtes SQL pour une analyse détaillée et effectuer des recherches sémantiques, le tout via une interface graphique conviviale.
Contactez-nous et connectez-vous
Avoir des discussions sur votre projet avec d'autres passionnés de vision par ordinateur peut vous donner de nouvelles idées à partir de différentes perspectives. Voici quelques excellentes façons d'apprendre, de dépanner et de réseauter :
Canaux pour se connecter avec la communauté
- Problèmes GitHub : Visitez le référentiel GitHub de YOLO11 et utilisez l'onglet Problèmes pour poser des questions, signaler des bogues et suggérer des fonctionnalités. La communauté et les mainteneurs sont là pour vous aider avec tous les problèmes que vous rencontrez.
- Serveur Discord Ultralytics : Rejoignez le serveur Discord Ultralytics pour vous connecter avec d'autres utilisateurs et développeurs, obtenir de l'aide, partager des connaissances et échanger des idées.
Documentation officielle
- Documentation Ultralytics YOLO11 : Consultez la documentation officielle de YOLO11 pour des guides complets et des informations précieuses sur de nombreuses tâches et projets de vision par ordinateur.
Votre jeu de données est prêt !
Des données correctement redimensionnées, normalisées et augmentées améliorent les performances du modèle en réduisant le bruit et en améliorant la généralisation. En suivant les techniques de prétraitement et les meilleures pratiques décrites dans ce guide, vous pouvez créer un ensemble de données solide. Avec votre ensemble de données prétraité prêt, vous pouvez passer en toute confiance aux étapes suivantes de votre projet.
FAQ
Quelle est l'importance du prétraitement des données dans les projets de vision par ordinateur ?
Le prétraitement des données est essentiel dans les projets de vision par ordinateur, car il garantit que les données sont propres, cohérentes et dans un format optimal pour l'entraînement du modèle. En traitant les problèmes tels que le bruit, l'incohérence et le déséquilibre dans les données brutes, les étapes de prétraitement telles que le redimensionnement, la normalisation, l'augmentation et le fractionnement de l'ensemble de données aident à réduire la charge de calcul et à améliorer les performances du modèle. Pour plus de détails, consultez les étapes d'un projet de vision par ordinateur.
Comment puis-je utiliser Ultralytics YOLO pour l'augmentation des données ?
Pour l'augmentation des données avec Ultralytics YOLO11, vous devez modifier le fichier de configuration de l'ensemble de données (.yaml). Dans ce fichier, vous pouvez spécifier diverses techniques d'augmentation telles que des recadrages aléatoires, des retournements horizontaux et des ajustements de luminosité. Cela peut être fait efficacement en utilisant les configurations d'entraînement expliquées ici. L'augmentation des données aide à créer un ensemble de données plus robuste, à réduire le surapprentissage et à améliorer la généralisation du modèle.
Quelles sont les meilleures techniques de normalisation des données pour les données de vision par ordinateur ?
La normalisation met à l'échelle les valeurs de pixel dans une plage standard pour une convergence plus rapide et des performances améliorées pendant l'entraînement. Les techniques courantes comprennent :
- Mise à l'échelle Min-Max : Met à l'échelle les valeurs des pixels dans une plage de 0 à 1.
- Normalisation Z-Score : Met à l'échelle les valeurs des pixels en fonction de leur moyenne et de leur écart type.
Pour YOLO11, la normalisation est gérée automatiquement, y compris la conversion en RGB et la mise à l'échelle des valeurs de pixel. Apprenez-en davantage à ce sujet dans la section sur l'entraînement du modèle.
Comment dois-je diviser mon jeu de données annoté pour l'entraînement ?
Pour diviser votre ensemble de données, une pratique courante consiste à le répartir en 70 % pour l'entraînement, 20 % pour la validation et 10 % pour les tests. Il est important de maintenir la distribution des classes entre ces divisions et d'éviter la fuite de données en effectuant l'augmentation uniquement sur l'ensemble d'entraînement. Utilisez des outils tels que scikit-learn ou TensorFlow pour un fractionnement efficace de l'ensemble de données. Consultez le guide détaillé sur la préparation de l'ensemble de données.
Puis-je gérer des tailles d'image variables dans YOLO11 sans redimensionnement manuel ?
Oui, Ultralytics YOLO11 peut gérer différentes tailles d'image grâce au paramètre 'imgsz' pendant l'entraînement du modèle. Ce paramètre garantit que les images sont redimensionnées de sorte que leur plus grande dimension corresponde à la taille spécifiée (par exemple, 640 pixels), tout en conservant le rapport hauteur/largeur. Pour une gestion plus flexible des entrées et des ajustements automatiques, consultez la section sur l'entraînement du modèle.