Computer Vision

 

Introduction à la Computer Vision

3 choses à savoir

La Computer Vision désigne un ensemble de techniques permettant d'extraire des informations à partir d'images, de vidéos ou de nuages de points. La Computer Vision inclut la reconnaissance d'images, la détection d'objets, la reconnaissance d'activité, l'estimation de la pose 3D, le pistage vidéo et l'estimation du mouvement. Les applications réelles incluent la reconnaissance faciale pour le déverrouillage des smartphones, les systèmes d'évitement des piétons et des véhicules pour les véhicules autonomes, ainsi que la détection des tumeurs dans les IRM médicales. Les outils logiciels tels que MATLAB® et Simulink® sont utilisés pour développer des techniques de Computer Vision.

Fonctionnement

La plupart des techniques de Computer Vision sont développées à l'aide d'un ensemble volumineux de données réelles et d'un workflow comprenant l'exploration des données, l'entraînement de modèles et le développement d'algorithmes. Bien souvent, les ingénieurs en Computer Vision modifient un ensemble de techniques existantes afin de les adapter au problème spécifique qui les intéresse. Les principaux types d'approches utilisées dans les systèmes de Computer Vision sont décrits ci-dessous.

Techniques basées sur le Deep Learning

Les approches de Deep Learning pour la Computer Vision sont utiles pour la détection d'objets, la reconnaissance d'objets, le défloutage d'images et la segmentation de scènes. Les approches basées sur le Deep Learning impliquent un apprentissage des réseaux de neurones convolutifs (CNN) directement à partir des données en utilisant des patterns à différentes échelles. L'apprentissage d'un CNN nécessite un large ensemble d'images ou de nuages de points labellisés. L'apprentissage par transfert utilise des réseaux pré-entraînés et permet d'accélérer le processus d'apprentissage avec moins de données.

Segmentation sémantique d'une rue avec Computer Vision Toolbox dans MATLAB.

Segmentation sémantique d'une rue avec Computer Vision Toolbox dans MATLAB.

Techniques basées sur les caractéristiques

Les techniques de détection et d'extraction des caractéristiques sont des algorithmes de Computer Vision qui identifient des patterns ou des structures dans des images et des nuages de points pour réaliser l'alignement d'images, la stabilisation de vidéo, la détection d'objet, et bien plus encore. Dans les images, les types de caractéristiques utiles sont notamment les bords, les coins ou les régions présentant une densité uniforme. Il est possible d'identifier ces caractéristiques à l'aide de détecteurs tels que BRISK, SURF ou ORB. Dans les nuages de points, vous pouvez utiliser des extracteurs de caractéristiques basés sur les valeurs propres ou des extracteurs FPFH (Fast Point Feature Histogram).

Utilisation de la correspondance de caractéristiques pour comparer une image provenant d'un véhicule spatial en mouvement à une image de référence.

Utilisation de la correspondance de caractéristiques pour comparer une image provenant d'un véhicule spatial en mouvement (image de droite) à une image de référence (image de gauche). (Image reproduite avec l'autorisation de la NASA)

Traitement d'images

Les techniques de traitement d'images sont souvent appliquées dans le cadre d'une étape de prétraitement dans le workflow de Computer Vision. Le type de prétraitement dépend de la tâche effectuée. Voici quelques techniques de traitement d'images utiles :

Détection de cônes rouges avec la conversion de couleurs rgb2hsv dans MATLAB.

Détection de cônes rouges avec la conversion de couleurs rgb2hsv dans MATLAB.

Traitement de nuages de points

Les nuages de points sont un ensemble de points de données dans un espace 3D qui, ensemble, représentent une forme ou un objet 3D. Le traitement de nuages de points est généralement utilisé pour prétraiter les données afin de les préparer pour les algorithmes de Computer Vision qui les analysent. Le traitement de nuages de points inclut généralement ce qui suit :

Recalage et assemblage de nuages de points 3D avec la méthode ICP (Iterative Closest Point) dans MATLAB.

Recalage et assemblage de nuages de points 3D avec la méthode ICP (Iterative Closest Point) dans MATLAB.

Traitement de la vision 3D

Les techniques de traitement de la vision 3D permettent d'estimer la structure 3D d'une scène à l'aide de plusieurs images prises avec une caméra calibrée. Ces images sont généralement générées à partir de deux caméras monoculaires ou stéréoscopiques. Voici quelques techniques de traitement de la vision 3D :

Reconstruction d'objets 3D utilisant la structure acquise à partir du mouvement dans MATLAB.

Reconstruction d'objets 3D utilisant la structure acquise à partir du mouvement dans MATLAB.

Importance

La Computer Vision est essentielle dans un large éventail d'applications réelles, dont les plus courantes sont présentées ci-dessous.

Systèmes autonomes

Les systèmes autonomes aériens ou terrestres utilisent différents capteurs qui collectent des données visuelles ou de nuages de points dans leur environnement. Les systèmes utilisent ces données avec des fonctionnalités de Computer Vision, telles que la localisation et cartographie simultanées (Simultaneous Localization And Mapping, SLAM) et le pistage, pour cartographier l'environnement. Les systèmes autonomes peuvent utiliser ces cartes pour la segmentation de routes, de chemins piétonniers ou de bâtiments, ainsi que pour la détection et le pistage des humains et des véhicules. Par exemple, BMW (14:01) utilise des fonctionnalités de Computer Vision dans l'Assisted Driving View (ADV) pour représenter les véhicules environnants et identifier leurs types.

MATLAB supporte les tests bout en bout utilisant des données réelles de l'Assisted Driving View de BMW.

MATLAB supporte les tests bout en bout utilisant des données réelles de l'Assisted Driving View de BMW.

Applications industrielles

La Computer Vision est utilisée dans les applications de fabrication telles que le contrôle de la qualité des pièces et la maintenance des infrastructures. Par exemple, Shell (19:44) a utilisé des réseaux de neurones convolutifs régionaux (R-CNN) entraînés pour identifier les étiquettes sur les machines. TimkenSteel a également utilisé ces mêmes fonctionnalités pour le contrôle de la qualité, permettant l'identification de pièces défectueuses ou de qualité inférieure pendant la fabrication.

Reconnaissance d'étiquette avec la reconnaissance optique de caractères (OCR) et le Deep Learning dans MATLAB.

Reconnaissance d'étiquette avec la reconnaissance optique de caractères (OCR) et le Deep Learning dans MATLAB.

Construction et agriculture

La Computer Vision est utilisée dans les secteurs de la construction et de l'agriculture pour extraire des informations des données de terrain ou d'infrastructure capturées par voie aérienne. Les fonctionnalités de Computer Vision telles que la comparaison de signatures spectrales, la détection d'objets et la segmentation sont appliquées pour analyser des images, des nuages de points ou des images hyperspectrales provenant de plateformes aériennes. Au Japon, Yachiyo Engineering utilise ces fonctionnalités pour détecter des dommages sur des barrages et des ponts avec la segmentation sémantique. Les agriculteurs peuvent également analyser l'état de leurs cultures à l'aide de drones qui capturent des images hyperspectrales de leurs exploitations.

Détection de dommages sur la surface d'un barrage à l'aide de SegNet dans MATLAB.

Détection de dommages sur la surface d'un barrage à l'aide de SegNet dans MATLAB.

Photographie

L'utilisation de la Computer Vision dans les caméras et smartphones s'est considérablement développée au cours de la dernière décennie. Ces appareils utilisent la détection et le suivi de visages pour faire la mise au point sur les visages et les algorithmes d'assemblage pour créer des panoramas. Ils intègrent également la reconnaissance optique de caractères (OCR) ou des lecteurs de code-barres ou de QR codes pour accéder à des informations stockées.

Création d'une image panoramique avec des techniques de recalage d'images basées sur les caractéristiques dans MATLAB.

Création d'une image panoramique avec des techniques de recalage d'images basées sur les caractéristiques dans MATLAB.

Computer Vision avec MATLAB

Image Processing Toolbox™, Computer Vision Toolbox™ et Lidar Toolbox™offrent dans MATLAB des applications, des algorithmes et des réseaux entraînés que vous pouvez utiliser pour développer vos fonctionnalités de Computer Vision. Vous pouvez importer des images ou des nuages de points, les prétraiter et utiliser des algorithmes prédéfinis et des réseaux de Deep Learning pour les analyser. Les toolboxes proposent des exemples pour vous aider à démarrer.

Détection de défauts avec MATLAB

Vous pouvez utiliser Computer Vision Toolbox pour détecter des anomalies et des défauts dans des objets tels que des pièces de machines ou des circuits électroniques. Vous pouvez augmenter vos chances de détecter les bonnes caractéristiques en commençant avec des algorithmes de prétraitement d'image dans Image Processing Toolbox, et en utilisant des fonctionnalités comme l'alignement de correction, la segmentation par couleur et l'ajustement de l'intensité de l'image.

L'étape de détection des défauts est souvent réalisée avec du Deep Learning. Pour procurer des données d'apprentissage au Deep Learning, vous pouvez utiliser les applications Image, Video ou Lidar Labeler de MATLAB, qui vous permettent de labelliser des données en créant des masques de segmentation sémantique ou de segmentation d'instances. Vous pouvez ensuite entraîner un réseau de Deep Learning, soit en partant de zéro, soit en utilisant l'apprentissage par transfert. Vous avez alors la possibilité d'utiliser ce réseau ainsi entraîné ou choisir l'un des réseaux pré-entraînés pour classer des objets en fonction des anomalies ou des défauts.

Détection d'écrous défectueux avec des réseaux de Deep Learning entraînés dans MATLAB.

Détection d'écrous défectueux avec des réseaux de Deep Learning entraînés dans MATLAB.

Détection et pistage d'objets avec MATLAB

La détection et le pistage d'objets est l'une des utilisations les plus connues de la Computer Vision pour des applications telles que la détection de véhicules ou de personnes, la lecture de codes-barres et la détection d'objets dans des scènes. Vous pouvez utiliser l'application Deep Network Designer afin de créer des réseaux de Deep Learning dans MATLAB pour des applications telles que la détection de voitures avec un réseau YOLO v3. Vous pouvez charger des données d'apprentissage labellisées, prétraiter ces données, définir et entraîner le réseau YOLO v3, puis évaluer sa précision et son taux d'échec par rapport aux données de la vérité-terrain. Vous êtes ensuite capable d'utiliser le réseau pour détecter des voitures et afficher des boîtes englobantes autour d'elles.

Détection de voitures en utilisant un réseau YOLO v3 généré avec l'application Deep Network Designer dans MATLAB.

Détection de voitures en utilisant un réseau YOLO v3 généré avec l'application Deep Network Designer dans MATLAB.

Utilisation de la Computer Vision et de Simulink pour la simulation de systèmes autonomes

Vous pouvez vous appuyer sur les résultats de la détection et du pistage d'objets issus de la Computer Vision pour la prise de décision dans un système robotique ou autonome. L'exemple du freinage d'urgence autonome avec fusion de capteurs démontre combien il est simple de créer des modèles Simulink intégrant des fonctionnalités de Computer Vision. Le modèle pour cet exemple utilise deux éléments : un modèle de Computer Vision et de fusion de capteurs pour détecter les obstacles se trouvant devant un véhicule, et un système d'avertissement de collision frontale permettant d'avertir le conducteur et d'appliquer automatiquement le freinage. L'exemple ci-dessous montre comment utiliser Simulink pour intégrer des algorithmes de Computer Vision dans une simulation de système plus large.

Détection d'objets se trouvant devant un véhicule avec Simulink.

Détection d'objets se trouvant devant un véhicule avec Simulink.

Localisation et cartographie avec Computer Vision Toolbox

Vous pouvez utiliser la Computer Vision dans MATLAB pour estimer les positions des caméras et cartographier l'environnement avec le SLAM visuel (vSLAM), pour créer des modèles 3D des objets avec la structure acquise à partir du mouvement, et pour estimer la profondeur.

Vous pouvez estimer la position de deux caméras stéréoscopiques tout en cartographiant l'environnement à l'aide des fonctionnalités prédéfinies dans MATLAB telles que imageDatastore et bagOfFeatures. Vous initialisez la carte en identifiant les caractéristiques correspondantes entre les deux images, puis vous estimez la position de la caméra et les positions des caractéristiques sur la carte, en utilisant l'ajustement de faisceau pour affiner la position et l'orientation de la caméra au fur et à mesure qu'elle se déplace dans la scène.

Mise en correspondance de caractéristiques entre deux caméras stéréoscopiques avec ORB-SLAM2 dans Computer Vision Toolbox.

Mise en correspondance de caractéristiques entre deux caméras stéréoscopiques avec ORB-SLAM2 dans Computer Vision Toolbox.

Comptage d'objets

Vous pouvez également utiliser la Computer Vision pour compter le nombre d'objets dans une image ou une vidéo. Dans l'exemple de comptage de cellules ci-dessous, vous appliquez des opérateurs morphologiques pour segmenter les cellules, vous localisez les centres de cellules avec l'analyse de blob, et vous comptez le nombres de centres identifiés. Vous répétez ensuite ce processus pour chacun des trames de la vidéo.

Comptage de cellules dans MATLAB avec des opérateurs morphologiques et l'analyse de blob.

Comptage de cellules dans MATLAB avec des opérateurs morphologiques et l'analyse de blob.

Certaines applications dans MATLAB, telles que Image Segmenter et Color Thresholder, proposent une interface utilisateur interactive pour segmenter les objets dans une image. L'application Image Region Analyzer permet de compter les objets dans une image et de calculer leurs propriétés, telles que la surface, le centre de gravité, etc.