Data Preprocessing Techniques for Annotated Computer Vision Data
Introduction
Après avoir défini les objectifs de ton projet de vision par ordinateur et recueilli et annoté des 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.
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 de l'ensemble 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 tes données !
Importance du prétraitement des données
Nous recueillons et annotons déjà nos données avec soin en tenant compte de plusieurs considérations. Alors, qu’est-ce qui rend le prétraitement des données si important pour un projet de vision par ordinateur ? Eh bien, le prétraitement des données consiste à placer vos données dans un format approprié pour l’entraînement 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 résout :
- Bruit: variations non pertinentes ou aléatoires dans les données.
- Incohérence: Variations dans la taille, le format et la qualité des images.
- Déséquilibre: Répartition inégale des classes ou des catégories dans l'ensemble de données.
Techniques de prétraitement des données
L’une des premières étapes 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é de calcul.
Redimensionnement des images
Vous pouvez redimensionner vos images à l’aide des 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.
- Voisin le plus proche: Attribue la valeur du pixel le plus proche sans faire de moyenne, ce qui conduit Ă une image en bloc mais Ă un calcul plus rapide.
Pour simplifier le redimensionnement, vous pouvez utiliser les outils suivants :
- OpenCV: A popular computer vision library with extensive functions for image processing.
- PIL (oreiller): Une bibliothèque d'imagerie Python pour ouvrir, manipuler et enregistrer des fichiers d'images.
With respect to YOLO11, the 'imgsz' parameter during model training allows for flexible input sizes. When set to a specific size, such as 640, the model will resize input images so their largest dimension is 640 pixels while maintaining the original aspect ratio.
En évaluant les besoins spécifiques de votre modèle et de votre jeu 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 différentes tailles.
Normalisation des valeurs de pixels
Une autre technique de prétraitement est la normalisation. La normalisation met à l’échelle les valeurs de pixel à 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 :
- Échelle Min-Max: Met à l'échelle les valeurs des pixels sur une plage de 0 à 1.
- Normalisation du score Z: Met Ă l'Ă©chelle les valeurs des pixels en fonction de leur moyenne et de leur Ă©cart-type.
With respect to YOLO11, normalization is seamlessly handled as part of its preprocessing pipeline during model training. YOLO11 automatically performs several preprocessing steps, including conversion to RGB, scaling pixel values to the range [0, 1], and normalization using predefined mean and standard deviation values.
Fractionnement du jeu de données
Une fois que vous avez nettoyé les données, vous êtes prêt à diviser le jeu de données. La division des données en ensembles d’entraînement, de validation et de test est effectuée pour s’assurer que le modèle peut être évalué sur des données invisibles afin d’évaluer ses performances de généralisation. Une répartition commune est de 70 % pour la formation, 20 % pour la validation et 10 % pour les tests. Il existe différents outils et bibliothèques que vous pouvez utiliser pour diviser vos données comme scikit-learn ou TensorFlow.
Tenez compte des points suivants lors du fractionnement de votre jeu de données :
- Maintien de la distribution des données: Veille à ce que la répartition des données des classes soit maintenue dans les ensembles de formation, de validation et de test.
- Éviter les fuites de données: Généralement, l'augmentation des données est effectuée après que l'ensemble de données a été divisé. L'augmentation des données et tout autre prétraitement ne doivent être appliqués qu'à l'ensemble de formation afin d'éviter que les informations provenant des ensembles de validation ou de test n'influencent la formation du modèle. -Équilibrer les classes: Pour les ensembles de données déséquilibrés, il faut envisager des techniques telles que le suréchantillonnage de la classe minoritaire ou le sous-échantillonnage de la classe majoritaire dans l'ensemble de formation.
Qu’est-ce que l’augmentation des données ?
L’étape de prétraitement des données la plus couramment discutée est l’augmentation des données. L’augmentation des données augmente artificiellement la taille du jeu de données en créant des versions modifiées des images. En augmentant vos données, vous pouvez réduire le surajustement et améliorer la généralisation du modèle.
Voici quelques autres avantages de l’augmentation des données :
- Création d'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 inclut les changements d'éclairage, d'orientation et d'échelle.
- Cost-Effective: Data augmentation is a cost-effective way to increase the amount of training data without collecting and labeling new data.
- Meilleure utilisation des données: Chaque point de données disponible est utilisé au maximum de son potentiel 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 TensorFlow, peut générer ces augmentations.
With respect to YOLO11, you can augment your custom dataset by modifying the dataset configuration file, a .yaml file. In this file, you can add an augmentation section with parameters that specify how you want to augment your data.
The Ultralytics YOLO11 repository supports a wide range of data augmentations. You can apply various transformations such as:
- Cultures 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
Vous pouvez également ajuster l’intensité de ces techniques d’augmentation par le biais de paramètres spécifiques pour générer plus de variété de données.
Une étude de cas sur le prétraitement
Consider a project aimed at developing a model to detect and classify different types of vehicles in traffic images using YOLO11. We've collected traffic images and annotated them with bounding boxes and labels.
Voici à quoi ressemblerait chaque étape du prétraitement pour ce projet :
- Resizing Images: Since YOLO11 handles flexible input sizes and performs resizing automatically, manual resizing is not required. The model will adjust the image size according to the specified 'imgsz' parameter during training.
- Normalizing Pixel Values: YOLO11 automatically normalizes pixel values to a range of 0 to 1 during preprocessing, so it's not required.
- Fractionnement du jeu de données : divisez le jeu de données en ensembles d’entraînement (70 %), de validation (20 %) et de test (10 %) à l’aide d’outils tels que scikit-learn.
- Data Augmentation: Modify the dataset configuration file (.yaml) to include data augmentation techniques such as random crops, horizontal flips, and brightness adjustments.
Ces étapes permettent de s’assurer que l’ensemble de données est préparé sans aucun problème potentiel 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 de 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 le prétraitement ultérieur des données ou les ajustements d’entraînement du modèle.
Techniques d’EDA statistiques
Les techniques statistiques commencent souvent par le calcul de mesures de base telles que la moyenne, la médiane, l’écart-type et la plage. Ces mesures fournissent un aperçu rapide des propriétés de votre jeu de données d’image, telles que les distributions d’intensité des pixels. Comprendre ces statistiques de base vous aide à saisir la qualité et les caractéristiques globales de vos données, ce qui vous permet de repérer rapidement toute irrégularité.
Techniques d’EDA visuelle
Les visualisations sont essentielles dans l’EDA pour les jeux de données d’images. Par exemple, l’analyse du déséquilibre de classe est un autre aspect essentiel de l’EDA. Il permet de déterminer si certaines classes sont sous-représentées dans votre jeu de données, La visualisation de la distribution de différentes classes ou catégories d’images à l’aide de graphiques à barres peut rapidement révéler d’éventuels déséquilibres. De même, les valeurs aberrantes peuvent être identifiées à l’aide d’outils de visualisation tels que les boîtes à moustaches, qui mettent en évidence les anomalies dans l’intensité des pixels ou la distribution des 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 sont les suivants :
- Histogrammes et boîtes à moustaches : 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 de l’image ou les annotations.
- Cartes thermiques : Efficaces pour visualiser la distribution des intensités de pixels ou la distribution spatiale des caractéristiques annotées dans les images.
Utilisant Ultralytics Explorer pour EDA
Community Note ⚠️
As of ultralytics>=8.3.10
, Ultralytics explorer support has been deprecated. But don't worry! You can now access similar and even enhanced functionality through Ultralytics HUB, our intuitive no-code platform designed to streamline your workflow. With Ultralytics HUB, you can continue exploring, visualizing, and managing your data effortlessly, all without writing a single line of code. Make sure to check it out and take advantage of its powerful features!🚀
For a more advanced approach to EDA, you can use the Ultralytics Explorer tool. It offers robust capabilities for exploring computer vision datasets. By supporting semantic search, SQL queries, and vector similarity search, the tool makes it easy to analyze and understand your data. With Ultralytics Explorer, you can create embeddings for your dataset to find similar images, run SQL queries for detailed analysis, and perform semantic searches, all through a user-friendly graphical interface.
Tendre la main et se connecter
Avoir des discussions sur votre projet avec d’autres passionnés de vision par ordinateur peut vous donner de nouvelles idées sous différents angles. Voici quelques excellentes façons d’apprendre, de résoudre les problèmes et de réseauter :
Canaux pour se connecter avec la communauté
- GitHub Issues: Visit the YOLO11 GitHub repository and use the Issues tab to raise questions, report bugs, and suggest features. The community and maintainers are there to help with any issues you face.
- Ultralytics Serveur Discord : Rejoins le serveur DiscordUltralytics pour te connecter avec d'autres utilisateurs et développeurs, obtenir de l'aide, partager des connaissances et trouver des idées.
Documentation officielle
- Ultralytics YOLO11 Documentation: Refer to the official YOLO11 documentation for thorough guides and valuable insights on numerous computer vision tasks and projects.
Votre ensemble 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 jeu de données solide. Une fois votre jeu 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 permet de s'assurer que les données sont propres, cohérentes et dans un format optimal pour l'entraînement des modèles. En s'attaquant à des problèmes tels que le bruit, l'incohérence et le déséquilibre des données brutes, les étapes de prétraitement telles que le redimensionnement, la normalisation, l'augmentation et le fractionnement des ensembles de données permettent de réduire la charge de calcul et d'améliorer les performances du modèle. Pour plus de détails, visite les étapes d'un projet de vision par ordinateur.
Comment puis-je utiliser Ultralytics YOLO pour augmenter les données ?
For data augmentation with Ultralytics YOLO11, you need to modify the dataset configuration file (.yaml). In this file, you can specify various augmentation techniques such as random crops, horizontal flips, and brightness adjustments. This can be effectively done using the training configurations explained here. Data augmentation helps create a more robust dataset, reduce overfitting, and improve model generalization.
Quelles sont les meilleures techniques de normalisation des données pour les données de vision par ordinateur ?
La normalisation met les valeurs des pixels à l'échelle d'une plage standard pour une convergence plus rapide et de meilleures performances pendant l'entraînement. Les techniques courantes comprennent :
- Échelle Min-Max: Met à l'échelle les valeurs des pixels sur une plage de 0 à 1.
- Normalisation du score Z: Met Ă l'Ă©chelle les valeurs des pixels en fonction de leur moyenne et de leur Ă©cart-type.
For YOLO11, normalization is handled automatically, including conversion to RGB and pixel value scaling. Learn more about it in the model training section.
Comment dois-je diviser mon ensemble de données annotées pour la formation ?
To split your dataset, a common practice is to divide it into 70% for training, 20% for validation, and 10% for testing. It is important to maintain the data distribution of classes across these splits and avoid data leakage by performing augmentation only on the training set. Use tools like scikit-learn or TensorFlow for efficient dataset splitting. See the detailed guide on dataset preparation.
Can I handle varying image sizes in YOLO11 without manual resizing?
Yes, Ultralytics YOLO11 can handle varying image sizes through the 'imgsz' parameter during model training. This parameter ensures that images are resized so their largest dimension matches the specified size (e.g., 640 pixels), while maintaining the aspect ratio. For more flexible input handling and automatic adjustments, check the model training section.