Reconnaissance d'images

 

Introduction à la reconnaissance d'images

3 choses à savoir

La reconnaissance d'images est un processus qui consiste à identifier un objet ou une caractéristique dans une image ou une vidéo. Elle est utilisée dans de nombreuses applications telles que la détection de défauts, l'imagerie médicale et la vidéosurveillance.

Importance de la reconnaissance d'images

La reconnaissance d'images peut accélérer les tâches fastidieuses, et traiter les images avec plus de rapidité ou de précision qu'une inspection manuelle. Cette technique est incontournable pour de nombreuses applications. Elle est la principale composante d'applications de Deep Learning telles que :

  • Inspection visuelle : pour l'identification des pièces défectueuses et non défectueuses dans le processus de fabrication, plusieurs milliers de pièces peuvent être inspectées dans la ligne de montage.
  • Classification d'images : catégorisation d'images basée sur leur contenu. Cette fonctionnalité est particulièrement utile dans les applications telles que la recherche d'images et les systèmes de recommandation dans le commerce électronique.
  • Conduite autonome : la capacité à reconnaître un panneau stop ou un piéton dans une image est primordiale dans les applications de conduite autonome.
  • Robotique : la reconnaissance d'images peut être utilisée par les robots pour identifier des objets et améliorer leur navigation autonome en repérant des lieux ou des objets sur leur trajectoire.
Reconnaissance d'images dans une application d'inspection visuelle pour la recherche de pièces défectueuses.

Reconnaissance d'images dans une application d'inspection visuelle pour la recherche de pièces défectueuses.

La reconnaissance d'images est la technologie au cœur de ces applications. Elle identifie des objets ou des scènes dans des images et utilise ces informations pour prendre des décisions au sein de systèmes plus importants. La reconnaissance d'images apporte à ces systèmes des renseignements exploitables qui leur permettent essentiellement de prendre de meilleures décisions.

Comparaison entre la reconnaissance d'images et la détection d'objets

La reconnaissance d'images et la détection d'objets sont deux techniques similaires souvent utilisées conjointement. La reconnaissance d'images identifie les objets ou les scènes dans des images, tandis que la détection d'objets trouve les instances de ces objets et leurs emplacements dans des images.

Faster R-CNN et YOLOv3 sont des techniques de détection d'objets fréquemment employées.

Reconnaissance d'images (à gauche) et détection d'objets (à droite).

Reconnaissance d'images (à gauche) et détection d'objets (à droite).

Fonctionnement

Techniques de reconnaissance d'images

Il existe de nombreuses méthodes permettant d'implémenter la reconnaissance d'images, dont les techniques de Machine Learning et de Deep Learning. Le choix de la technique à utiliser dépend de l'application, mais généralement, plus le problème est complexe, plus il est intéressant d'explorer les techniques de Deep Learning.

Reconnaissance d'images avec le Deep Learning

La reconnaissance d'images avec le Deep Learning peut nécessiter de passer par un réseau de neurones à convolution pour apprendre automatiquement les caractéristiques pertinentes à partir d'un échantillon d'images et identifier ces caractéristiques dans de nouvelles images.

Voici un workflow de Deep Learning typique pour la reconnaissance d'images :

Un icon décrivant la préparation des données d'apprentissage

Préparer les données d'apprentissage : commencez par un ensemble d'images que vous classez par catégories. Cette phase peut inclure des étapes de prétraitement consistant à améliorer la cohérence des images pour que le modèle soit plus précis.

Un modèle de Deep Learning

Créer un modèle de Deep Learning : même si vous pouvez créer un modèle de Deep Learning de toutes pièces, il peut être plus intéressant d'utiliser un modèle pré-entraîné comme point de départ pour votre application. (En savoir plus sur les modèles pré-entraînés)

Un screenshot décrivant l'apprentissage d'un modèle

Entraîner le modèle : réaliser l'apprentissage du modèle consiste à lui présenter des données de test. Celui-ci peut ensuite itérer sur ces données plusieurs fois pour apprendre automatiquement les caractéristiques les plus importantes dans les images. Au fil de l'apprentissage, le modèle assimilera des caractéristiques de plus en plus sophistiquées jusqu'à distinguer avec précision les différentes classes d'images dans le jeu d'apprentissage.

Carte de chaleur d'un chien comme exemple de test des données

Tester : testez le modèle sur des données qu'il n'a pas encore analysées et regardez s'il a bien identifié le contenu des images. Si les résultats ne sont pas à la hauteur de vos attentes, recommencez ces quatre étapes jusqu'à atteindre un niveau de précision acceptable.

Les techniques de Deep Learning peuvent sembler compliquées, mais n'hésitez pas à commencer par des exemples simples pour bien démarrer et vous familiariser avec la technologie.

Conseil : les techniques de Deep Learning sont souvent utilisées pour la reconnaissance d'images, car elles offrent des résultats très précis et robustes. Elles fonctionnent souvent mieux avec un jeu de données d'apprentissage volumineux, et des techniques comme l'apprentissage par transfert peuvent simplifier le workflow de reconnaissance d'images. Deep Learning Toolbox™ propose un environnement pour le design et l'implémentation de réseaux de neurones profonds avec des algorithmes, des modèles pré-entraînés et des applications.

Reconnaissance d'images avec le Machine Learning

Une approche de Machine Learning pour la reconnaissance d'images consiste à identifier et extraire les caractéristiques clés des images, puis à les utiliser comme entrées dans un modèle de Machine Learning.

  • Préparer les données d'apprentissage : vous commencez par un ensemble d'images que vous classez par catégories.
  • Extraire les caractéristiques : vous sélectionnez les caractéristiques pertinentes dans chaque image. Vous pouvez utiliser un algorithme d'extraction de caractéristiques capable d'extraire les caractéristiques de contour ou de points intérêt (coins) pour distinguer les différentes classes dans vos données.
  • Créer un modèle de Machine Learning : ces caractéristiques sont ajoutées à un modèle de Machine Learning qui les sépare pour représenter des catégories distinctives, puis utilise ces informations pour analyser et classifier de nouveaux objets.
Workflow de Machine Learning

Workflow de Machine Learning pour la reconnaissance d'images.

Il existe toute une variété d'algorithmes de Machine Learning et de méthodes d'extraction de caractéristiques, ce qui vous laisse le choix entre de nombreuses combinaisons pour créer un modèle précis de reconnaissance d'objets.

Exemple de Machine Learning

Exemple de Machine Learning avec reconnaissance d'images qui classifie des chiffres à l'aide de caractéristiques HOG et d'un classificateur SVM.

Conseil : utiliser le Machine Learning pour la reconnaissance d'objets permet de choisir la meilleure combinaison de caractéristiques et de classificateurs pour l'apprentissage. Cette méthode peut donner des résultats précis avec peu de données. Statistics and Machine Learning Toolbox™ offre des fonctions et des applications pour décrire, analyser et modéliser des données.

Reconnaissance d'images : comparaison entre le Deep Learning et le Machine Learning

Comment choisir entre le Deep Learning et le Machine Learning pour la reconnaissance d'images ? En résumé, la différence est qu'avec le Machine Learning, vous choisissez manuellement les caractéristiques, tandis que le Deep Learning les apprend automatiquement.

Reconnaissance d'images avec les techniques traditionnelles de traitement d'images

Outre le Deep Learning et le Machine Learning, de nombreuses techniques traditionnelles de traitement d'images sont très efficaces pour la reconnaissance d'images dans certaines applications. Ces techniques conviennent généralement mieux à des applications de reconnaissance basée sur les pixels, telles que :

  • La reconnaissance d'images basée sur les couleurs : les couleurs constituent souvent une excellente caractéristique pour la reconnaissance d'images. Par exemple, les caractéristiques Hue Saturation Value (HSV) ou Red Green Blue (RGB) peuvent donner des indications sur l'image.
  • La correspondance de modèle : cette technique utilise une petite image, ou un modèle, pour trouver des régions correspondantes dans une image plus grande.
  • La segmentation d'image et l'analyse de blob : cette technique utilise des propriétés simples d'un objet telles que la taille, la couleur ou la forme.
Conseil : De façon générale, si un objet peut être reconnu avec une approche simple telle que la segmentation d'images, mieux vaut utiliser cette technique pour commencer. Vous envisagez une solution fiable qui n'a pas besoin de centaines de milliers d'images d'apprentissage ni d'une technique compliquée. Image Processing Toolbox™ a probablement tous les outils dont vous avez besoin.

Reconnaissance d'images avec MATLAB

MATLAB® simplifie les étapes complexes de la reconnaissance d'images.

  1. Applications de labellisation d'images : les données nettoyées et prétraitées maximisent les chances de réussite pour la reconnaissance d'images. Avec l'application Image Labeler, vous pouvez automatiser les phases de recadrage et de labellisation des images.
Labellisation interactive d'images et de vidéos.

Labellisation interactive d'images et de vidéos.

  1. Explorer les algorithmes de Deep Learning et de Machine Learning : les premières fois, il n'est pas toujours évident de choisir entre les techniques de Deep Learning et de Machine Learning. Avec MATLAB, vous avez la possibilité d'essayer toutes les combinaisons d'approches. Explorez les modèles pré-entraînés pour le Deep Learning ou les algorithmes de classification pour le Machine Learning.

Vous pouvez interopérer avec des réseaux et des architectures de réseaux provenant d'environnements tels que TensorFlow™, Keras, PyTorch et Caffe2 en utilisant les fonctionnalités d'importation et d'exportation ONNX™ (Open Neural Network Exchange).

Intégration à des environnements basés sur Python.

  1. Génération automatique de code pour le déploiement : à terme, votre algorithme devra peut-être être déployé en dehors de l'environnement sur ordinateur. MATLAB propose des outils de génération de code pour déployer votre algorithme de reconnaissance d'images n'importe où : sur le web, sur du hardware embarqué ou sur des serveurs de production.
Après avoir créé vos algorithmes, vous pouvez utiliser les workflows automatisés pour générer du code TensorRT ou CUDA® avec GPU Coder™ pour les tests en mode Hardware-in-the-Loop. Le code généré peut être intégré à des projets existants et utilisé pour vérifier les algorithmes de détection d'objets sur des GPU d'ordinateurs ou de systèmes embarqués, comme la plateforme NVIDIA® Jetson ou NVIDIA Drive.

Voir aussi :  reconnaissance de formes


En savoir plus sur la reconnaissance d'images

Découvrez des exemples de Deep Learning dans notre documentation.
Regardez cette vidéo pour découvrir pas à pas comment créer interactivement un classificateur précis.
Cet exemple montre comment créer un système de recherche d'image par le contenu (Content-Based Image Retrieval, CBIR) avec un workflow de sac de caractéristiques personnalisé.
Découvrez comment utiliser les fonctions de Computer Vision Toolbox™ pour la classification d'images en créant un modèle de sac de mots visuels.
Découvrez en quoi consiste la Computer Vision, comment elle fonctionne, quelle est son importance et comment l'exploiter avec MATLAB