Comprendre les étapes clés d'un projet de vision par ordinateur
Introduction
La vision par ordinateur est un sous-domaine de l'intelligence artificielle (IA) qui aide les ordinateurs à voir et à comprendre le monde comme le font les humains. Elle traite et analyse des images ou des vidéos pour en extraire des informations, reconnaître des modèles et prendre des décisions en fonction de ces données.
Les techniques de vision par ordinateur telles que la détection d'objets, la classification d'images et la segmentation d'instances peuvent être appliquées dans divers secteurs, de la conduite autonome à l'imagerie médicale, afin d'obtenir des informations précieuses.
Working on your own computer vision projects is a great way to understand and learn more about computer vision. However, a computer vision project can consist of many steps, and it might seem confusing at first. By the end of this guide, you'll be familiar with the steps involved in a computer vision project. We'll walk through everything from the beginning to the end of a project, explaining why each part is important. Let's get started and make your computer vision project a success!
Aperçu d'un projet de vision par ordinateur
Before discussing the details of each step involved in a computer vision project, let's look at the overall process. If you started a computer vision project today, you'd take the following steps:
- Your first priority would be to understand your project's requirements.
- Then, you'd collect and accurately label the images that will help train your model.
- Next, you'd clean your data and apply augmentation techniques to prepare it for model training.
- After model training, you'd thoroughly test and evaluate your model to make sure it performs consistently under different conditions.
- Finally, you'd deploy your model into the real world and update it based on new insights and feedback.
Maintenant que nous savons Ă quoi nous attendre, plongeons dans les Ă©tapes et faisons avancer ton projet.
Step 1: Defining Your Project's Goals
The first step in any computer vision project is clearly defining the problem you're trying to solve. Knowing the end goal helps you start to build a solution. This is especially true when it comes to computer vision because your project's objective will directly affect which computer vision task you need to focus on.
Voici quelques exemples d'objectifs de projets et de tâches de vision par ordinateur qui peuvent être utilisées pour atteindre ces objectifs :
-
Objectif : Développer un système capable de surveiller et de gérer le flux de différents types de véhicules sur les autoroutes, afin d'améliorer la gestion du trafic et la sécurité.
- Tâche de vision par ordinateur : La détection d'objets est idéale pour la surveillance du trafic car elle permet de localiser et d'identifier efficacement plusieurs véhicules. Elle est moins exigeante en termes de calcul que la segmentation d'image, qui fournit des détails inutiles pour cette tâche, ce qui garantit une analyse plus rapide et en temps réel.
-
Objectif : Développer un outil qui aide les radiologues en fournissant des contours précis, au niveau des pixels, des tumeurs dans les scans d'imagerie médicale.
- Tâche de vision par ordinateur : La segmentation d'image est adaptée à l'imagerie médicale car elle fournit des limites précises et détaillées des tumeurs qui sont cruciales pour évaluer la taille, la forme et la planification du traitement.
-
Objectif : Créer un système numérique qui catégorise divers documents (par exemple, factures, reçus, documents juridiques) afin d'améliorer l'efficacité de l'organisation et la recherche de documents.
- Tâche de vision par ordinateur : La classification d'images est idéale ici car elle traite un document à la fois, sans qu'il soit nécessaire de prendre en compte la position du document dans l'image. Cette approche simplifie et accélère le processus de tri.
Étape 1.5 : Choisir le bon modèle et la bonne méthode de formation
Après avoir compris l'objectif du projet et les tâches de vision par ordinateur appropriées, une partie essentielle de la définition de l'objectif du projet consiste à sélectionner le bon modèle et la bonne approche de formation.
En fonction de l'objectif, tu peux choisir de sélectionner le modèle en premier ou après avoir vu les données que tu es en mesure de collecter à l'étape 2. Par exemple, supposons que ton projet dépende fortement de la disponibilité de certains types de données. Dans ce cas, il peut être plus pratique de recueillir et d'analyser d'abord les données avant de sélectionner un modèle. D'un autre côté, si tu comprends bien les exigences du modèle, tu peux choisir le modèle d'abord, puis collecter les données qui correspondent à ces spécifications.
Choosing between training from scratch or using transfer learning affects how you prepare your data. Training from scratch requires a diverse dataset to build the model's understanding from the ground up. Transfer learning, on the other hand, allows you to use a pre-trained model and adapt it with a smaller, more specific dataset. Also, choosing a specific model to train will determine how you need to prepare your data, such as resizing images or adding annotations, according to the model's specific requirements.
Note: When choosing a model, consider its deployment to ensure compatibility and performance. For example, lightweight models are ideal for edge computing due to their efficiency on resource-constrained devices. To learn more about the key points related to defining your project, read our guide on defining your project's goals and selecting the right model.
Avant de se lancer dans les travaux pratiques d'un projet de vision par ordinateur, il est important de bien comprendre ces détails. Vérifie que tu as bien pris en compte les points suivants avant de passer à l'étape 2 :
- Clearly define the problem you're trying to solve.
- DĂ©termine l'objectif final de ton projet.
- Identifie la tâche spécifique de vision par ordinateur nécessaire (par exemple, la détection d'objets, la classification d'images, la segmentation d'images).
- Décide de former un modèle à partir de zéro ou d'utiliser l'apprentissage par transfert.
- Choisis le modèle approprié à ta tâche et à tes besoins de déploiement.
Étape 2 : Collecte et annotation des données
La qualité de tes modèles de vision par ordinateur dépend de la qualité de ton ensemble de données. Tu peux soit collecter des images sur Internet, soit prendre tes propres photos, soit utiliser des ensembles de données préexistants. Voici quelques ressources intéressantes pour télécharger des ensembles de données de haute qualité : Google Dataset Search Engine, UC Irvine Machine Learning Repository, et Kaggle Datasets.
Certaines bibliothèques, comme Ultralytics, offrent une prise en charge intégrée de divers ensembles de données, ce qui facilite le démarrage avec des données de haute qualité. Ces bibliothèques comprennent souvent des utilitaires permettant d'utiliser des ensembles de données populaires de façon transparente, ce qui peut te faire gagner beaucoup de temps et d'efforts dans les premières étapes de ton projet.
However, if you choose to collect images or take your own pictures, you'll need to annotate your data. Data annotation is the process of labeling your data to impart knowledge to your model. The type of data annotation you'll work with depends on your specific computer vision technique. Here are some examples:
- Image Classification: You'll label the entire image as a single class.
- Object Detection: You'll draw bounding boxes around each object in the image and label each box.
- Image Segmentation: You'll label each pixel in the image according to the object it belongs to, creating detailed object boundaries.
Data collection and annotation can be a time-consuming manual effort. Annotation tools can help make this process easier. Here are some useful open annotation tools: LabeI Studio, CVAT, and Labelme.
Étape 3 : Augmentation des données et division de ton ensemble de données
Après avoir collecté et annoté tes données d'images, il est important de diviser ton ensemble de données en ensembles de formation, de validation et de test avant de procéder à l'augmentation des données. Il est essentiel de diviser ton ensemble de données avant de procéder à l'augmentation pour tester et valider ton modèle sur des données originales et non modifiées. Cela permet d'évaluer avec précision la capacité de généralisation du modèle à de nouvelles données inédites.
Voici comment diviser tes données :
- Ensemble de formation : Il s'agit de la plus grande partie de tes données, généralement 70 à 80 % du total, utilisée pour former ton modèle.
- Ensemble de validation : Généralement, environ 10 à 15 % de tes données ; cet ensemble est utilisé pour régler les hyperparamètres et valider le modèle pendant l'entraînement, ce qui permet d'éviter le surajustement.
- Ensemble de test : Les 10 à 15 % restants de tes données sont mis de côté en tant qu'ensemble de test. Il sert à évaluer les performances du modèle sur des données inédites une fois la formation terminée.
Après avoir divisé tes données, tu peux procéder à l'augmentation des données en appliquant des transformations telles que la rotation, la mise à l'échelle et le retournement des images pour augmenter artificiellement la taille de ton ensemble de données. L'augmentation des données rend ton modèle plus robuste aux variations et améliore ses performances sur des images inédites.
Des bibliothèques comme OpenCV, Albumentations et TensorFlow offrent des fonctions d'augmentation flexibles que tu peux utiliser. En outre, certaines bibliothèques, telles que Ultralytics, intègrent des paramètres d'augmentation directement dans la fonction d'apprentissage du modèle, ce qui simplifie le processus.
Pour mieux comprendre tes données, tu peux utiliser des outils comme Matplotlib ou Seaborn pour visualiser les images et analyser leur distribution et leurs caractéristiques. La visualisation de tes données permet d'identifier les schémas, les anomalies et l'efficacité de tes techniques d'augmentation. Tu peux aussi utiliser Ultralytics Explorer, un outil qui permet d'explorer les ensembles de données de vision par ordinateur à l'aide de la recherche sémantique, des requêtes SQL et de la recherche de similarités vectorielles.
By properly understanding, splitting, and augmenting your data, you can develop a well-trained, validated, and tested model that performs well in real-world applications.
Étape 4 : Formation au modèle
Une fois que ton jeu de données est prêt pour la formation, tu peux te concentrer sur la mise en place de l'environnement nécessaire, la gestion de tes jeux de données et la formation de ton modèle.
First, you'll need to make sure your environment is configured correctly. Typically, this includes the following:
- Installer les bibliothèques et les cadres essentiels comme TensorFlow, PyTorch, ou Ultralytics.
- Si tu utilises un GPU, l'installation de bibliothèques telles que CUDA et cuDNN permettra d'activer l'accélération du GPU et d'accélérer le processus de formation.
Ensuite, tu peux charger tes ensembles de données d'entraînement et de validation dans ton environnement. Normalise et prétraite les données en les redimensionnant, en convertissant leur format ou en les augmentant. Une fois le modèle sélectionné, configure les couches et spécifie les hyperparamètres. Compile le modèle en définissant la fonction de perte, l'optimiseur et les mesures de performance.
Les bibliothèques comme Ultralytics simplifient le processus de formation. Tu peux commencer la formation en introduisant des données dans le modèle avec un minimum de code. Ces bibliothèques gèrent automatiquement les ajustements de poids, la rétropropagation et la validation. Elles proposent également des outils permettant de suivre les progrès et d'ajuster facilement les hyperparamètres. Après l'entraînement, enregistre le modèle et ses poids en quelques commandes.
Il est important de garder à l'esprit qu'une bonne gestion des ensembles de données est vitale pour une formation efficace. Utilise le contrôle de version pour les ensembles de données afin de suivre les modifications et d'assurer la reproductibilité. Des outils tels que DVC (Data Version Control) peuvent aider à gérer de grands ensembles de données.
Étape 5 : Évaluation et perfectionnement du modèle
It's important to assess your model's performance using various metrics and refine it to improve accuracy. Evaluating helps identify areas where the model excels and where it may need improvement. Fine-tuning ensures the model is optimized for the best possible performance.
- Performance Metrics: Use metrics like accuracy, precision, recall, and F1-score to evaluate your model's performance. These metrics provide insights into how well your model is making predictions.
-
Réglage des hyperparamètres : Ajuste les hyperparamètres pour optimiser les performances du modèle. Des techniques telles que la recherche en grille ou la recherche aléatoire peuvent aider à trouver les meilleures valeurs d'hyperparamètres.
-
Mise au point : Effectue de petits ajustements à l'architecture du modèle ou au processus de formation pour améliorer les performances. Il peut s'agir de modifier les taux d'apprentissage, la taille des lots ou d'autres paramètres du modèle.
Étape 6 : Test du modèle
Au cours de cette étape, tu peux t'assurer que ton modèle fonctionne bien sur des données totalement inédites, confirmant ainsi qu'il est prêt à être déployé. La différence entre le test de modèle et l'évaluation de modèle est qu'il se concentre sur la vérification des performances du modèle final plutôt que sur son amélioration itérative.
Il est important de faire des tests approfondis et de déboguer tous les problèmes courants qui peuvent survenir. Teste ton modèle sur un ensemble de données de test distinct qui n'a pas été utilisé pendant la formation ou la validation. Cet ensemble de données doit représenter des scénarios du monde réel pour s'assurer que les performances du modèle sont cohérentes et fiables.
Aborde également les problèmes courants tels que l'ajustement excessif, l'ajustement insuffisant et les fuites de données. Utilise des techniques comme la validation croisée et la détection des anomalies pour identifier et résoudre ces problèmes.
Étape 7 : Déploiement du modèle
Une fois que ton modèle a été soigneusement testé, il est temps de le déployer. Le déploiement consiste à rendre ton modèle disponible pour une utilisation dans un environnement de production. Voici les étapes du déploiement d'un modèle de vision par ordinateur :
-
Mise en place de l'environnement : Configure l'infrastructure nécessaire à l'option de déploiement que tu as choisie, qu'elle soit basée sur le cloud (AWS, Google Cloud, Azure) ou sur la périphérie (appareils locaux, IoT).
-
Exporter le modèle: Exporte ton modèle au format approprié (par exemple, ONNX, TensorRT, CoreML pour YOLOv8) pour assurer la compatibilité avec ta plateforme de déploiement.
- Déployer le modèle : Déploie le modèle en mettant en place des API ou des points d'extrémité et en l'intégrant à ton application.
- Assurer l'évolutivité: Mets en place des équilibreurs de charge, des groupes de mise à l'échelle automatique et des outils de surveillance pour gérer les ressources et faire face à l'augmentation des données et des demandes des utilisateurs.
Étape 8 : Surveillance, entretien et documentation
Once your model is deployed, it's important to continuously monitor its performance, maintain it to handle any issues, and document the entire process for future reference and improvements.
Les outils de surveillance peuvent t'aider à suivre les indicateurs clés de performance (ICP) et à détecter les anomalies ou les baisses de précision. En surveillant le modèle, tu peux être conscient de la dérive du modèle, où les performances du modèle diminuent au fil du temps en raison des changements dans les données d'entrée. Entraîne périodiquement le modèle avec des données mises à jour pour maintenir sa précision et sa pertinence.
En plus de la surveillance et de la maintenance, la documentation est également essentielle. Documente minutieusement l'ensemble du processus, y compris l'architecture du modèle, les procédures d'entraînement, les hyperparamètres, les étapes de prétraitement des données et toutes les modifications apportées au cours du déploiement et de la maintenance. Une bonne documentation garantit la reproductibilité et facilite les mises à jour futures ou le dépannage. En surveillant, en entretenant et en documentant efficacement ton modèle, tu peux t'assurer qu'il reste précis, fiable et facile à gérer tout au long de son cycle de vie.
FAQs
Voici quelques questions courantes qui peuvent se poser lors d'un projet de vision par ordinateur :
-
Q1 : Comment les étapes changent-elles si j'ai déjà un jeu de données ou des données lorsque je démarre un projet de vision par ordinateur ?
- A1: Starting with a pre-existing dataset or data affects the initial steps of your project. In Step 1, along with deciding the computer vision task and model, you'll also need to explore your dataset thoroughly. Understanding its quality, variety, and limitations will guide your choice of model and training approach. Your approach should align closely with the data's characteristics for more effective outcomes. Depending on your data or dataset, you may be able to skip Step 2 as well.
-
Q2: I'm not sure what computer vision project to start my AI learning journey with.
- A2: Check out our guides on Real-World Projects for inspiration and guidance.
-
Q3: I don't want to train a model. I just want to try running a model on an image. How can I do that?
- A3 : Tu peux utiliser un modèle pré-entraîné pour faire des prédictions sur une image sans avoir à entraîner un nouveau modèle. Consulte la pageYOLOv8 predict docs pour savoir comment utiliser un modèle YOLOv8 pré-entraîné pour faire des prédictions sur tes images.
-
Q4 : Où puis-je trouver des articles plus détaillés et des mises à jour sur les applications de vision par ordinateur et YOLOv8?
- A4 : Pour des articles plus détaillés, des mises à jour et des idées sur les applications de vision par ordinateur et YOLOv8, visite la page du blogUltralytics . Le blog couvre un large éventail de sujets et fournit des informations précieuses pour t'aider à rester à jour et à améliorer tes projets.
S'engager auprès de la communauté
Se connecter à une communauté de passionnés de vision par ordinateur peut t'aider à aborder en toute confiance les problèmes auxquels tu es confronté lorsque tu travailles sur ton projet de vision par ordinateur. Voici quelques moyens d'apprendre, de dépanner et de travailler en réseau de manière efficace.
Ressources communautaires
- GitHub Issues : Consulte le dépôt GitHub YOLOv8 et utilise l'onglet Issues pour poser des questions, signaler des bogues et suggérer de nouvelles fonctionnalités. La communauté active et les mainteneurs sont là pour t'aider à résoudre des problèmes spécifiques.
- Ultralytics Serveur Discord : Rejoins le serveur DiscordUltralytics pour interagir avec d'autres utilisateurs et développeurs, obtenir de l'aide et partager des idées.
Documentation officielle
- Ultralytics YOLOv8 Documentation : Explore la documentation officielle de YOLOv8 pour trouver des guides détaillés avec des conseils utiles sur différentes tâches et projets de vision par ordinateur.
L'utilisation de ces ressources t'aidera à surmonter les défis et à rester au courant des dernières tendances et des meilleures pratiques dans la communauté de la vision par ordinateur.
Lance ton projet de vision par ordinateur dès aujourd'hui !
Se lancer dans un projet de vision par ordinateur peut être passionnant et gratifiant. En suivant les étapes de ce guide, tu peux construire une base solide pour réussir. Chaque étape est cruciale pour développer une solution qui répond à tes objectifs et fonctionne bien dans les scénarios du monde réel. Au fur et à mesure que tu gagneras en expérience, tu découvriras des techniques et des outils avancés pour améliorer tes projets. Reste curieux, continue d'apprendre et explore de nouvelles méthodes et innovations !