Réseau neuronal convolutif

3 choses à savoir

Un réseau neuronal convolutif (CNN ou « ConvNets ») est une architecture réseau pour le Deep Learning qui apprend directement à partir des données, ce qui évite d'extraire manuellement les caractéristiques.

Les réseaux neuronaux convolutifs sont particulièrement utiles pour trouver des patterns dans des images afin de reconnaître des objets, des visages et des scènes. Ils peuvent également être très efficaces pour classer des données autres que des images, telles que des contenus audio, des séries temporelles et des signaux.

Les applications qui font appel à la reconnaissance d'objets et à la Computer Vision, telles que les véhicules autonomes et les applications de reconnaissance faciale, reposent fortement sur les réseaux neuronaux convolutifs.

Qu'est-ce qui rend les réseaux neuronaux convolutifs si utiles ?

L'utilisation de réseaux neuronaux convolutifs pour le Deep Learning est devenue populaire grâce à trois facteurs importants :

  • Les réseaux neuronaux convolutifs rendent obsolète l'extraction manuelle de caractéristiques ; elles sont désormais apprises directement par le réseau neuronal convolutif.
  • Ils offrent des résultats de reconnaissance extrêmement précis.
  • Ils peuvent être entraînés à de nouvelles tâches de reconnaissance, ce qui vous permet de vous appuyer sur des réseaux préexistants.

Les réseaux neuronaux convolutifs offrent une architecture optimale pour découvrir et apprendre les principales caractéristiques des images et des séries temporelles. Les réseaux neuronaux convolutifs sont une technologie majeure, notamment dans les applications suivantes :

  • En imagerie médicale : les réseaux neuronaux convolutifs peuvent examiner des milliers de rapports de pathologie afin de détecter la présence ou non de cellules cancéreuses dans les images.
  • En traitement audio : la détection de mots-clés peut être utilisée sur n'importe quel dispositif doté d'un microphone, de manière à détecter la prononciation d'un mot ou d'une phrase spécifique (« Dis Siri »). Les réseaux neuronaux convolutifs peuvent apprendre et détecter avec précision un mot-clé tout en ignorant toutes les autres phrases, indépendamment de l'environnement.
  • Détection des panneaux stop : la conduite autonome s'appuie sur les réseaux neuronaux convolutifs pour détecter avec précision la présence d'un panneau ou de tout autre objet et ainsi prendre des décisions en fonction du résultat.
  • Génération de données synthétiques : grâce aux réseaux antagonistes génératifs (GAN), il est possible de produire de nouvelles images qui seront utilisées dans des applications de Deep Learning, notamment pour la reconnaissance faciale et la conduite autonome.

En savoir plus

Fonctionnement des réseaux neuronaux convolutifs

Un réseau neuronal convolutif peut comporter des dizaines ou des centaines de couches, chacune apprenant à détecter différentes caractéristiques d'une image. Des filtres sont appliqués à chaque image d'apprentissage à différentes résolutions, et la sortie de chaque image convoluée est utilisée comme entrée de la couche suivante. Les filtres peuvent porter sur des caractéristiques très simples, telles que la luminosité et les contours, et croitre en complexité sur des caractéristiques qui définissent l'objet de manière unique.

Apprentissage de caractéristiques, couches et classification

À l'instar des autres réseaux neuronaux, un réseau neuronal convolutif est composé d'une couche d'entrée, d'une couche de sortie et de nombreuses couches intermédiaires cachées.

Ces couches effectuent des opérations qui modifient les données dans le but d'apprendre des caractéristiques spécifiques aux données. Les trois couches les plus courantes sont : la couche de convolution, la couche d'activation ou ReLu et la couche de pooling.

  • La couche de convolution applique un ensemble de filtres convolutifs aux images d'entrée, chacun d'entre eux activant certaines caractéristique des images.
  • La couche Unité Linéaire Rectifiée (ReLu) permet un apprentissage plus rapide et plus efficace en remplaçant les valeurs négatives par des zéros et en conservant les valeurs positives. Ce procédé est parfois appelé activation, car seules les caractéristiques activées sont transmises à la couche suivante.
  • La couche de pooling simplifie la sortie en réalisant un sous-échantillonnage non linéaire, ce qui permet ainsi de réduire le nombre de paramètres que le réseau doit apprendre.

Ces opérations sont répétées sur des dizaines ou des centaines de couches, chaque couche apprenant à identifier différentes caractéristiques.

Exemple d'un réseau composé de nombreuses couches convolutives. Des filtres sont appliqués à chaque image d'apprentissage à différentes résolutions, et la sortie de chaque image convoluée est utilisée comme entrée de la couche suivante.

Pondérations et biais partagés

Comme tout réseau neuronal classique, un réseau neuronal convolutif possède des neurones avec des pondérations et des biais. Le modèle apprend ces valeurs au cours du processus d'apprentissage, et les met continuellement à jour à chaque nouvel exemple d'apprentissage. Toutefois, dans le cas des réseaux neuronaux convolutifs, les pondérations et les valeurs de biais sont identiques pour tous les neurones cachés d'une couche donnée.

Concrètement, cela signifie que l'ensemble des neurones cachés détectent la même caractéristique (par exemple, un contour ou un blob) dans différentes régions de l'image. Ainsi, le réseau devient tolérant à la translation d'objets dans une image. Par exemple, un réseau entraîné à reconnaître des voitures sera en mesure d'identifier un véhicule, quel que soit son emplacement dans l'image.

Couches de classification

Suite à l'apprentissage des caractéristiques dans de nombreuses couches, l'architecture d'un réseau neuronal convolutif passe à la classification.

L'avant-dernière couche, entièrement connectée, génère un vecteur de K dimensions, où K est le nombre de classes que le réseau sera capable de prédire. Ce vecteur contient les probabilités d'appartenance d'une image à chacune des classes.

La dernière couche de l'architecture du réseau neuronal convolutif utilise une couche de classification telle que softmax pour générer la sortie de la classification.

Concevoir et entraîner des réseaux neuronaux convolutifs avec MATLAB

 MATLAB® avec Deep Learning Toolbox™ vous permet de concevoir, d'entraîner et de déployer des réseaux neuronaux convolutifs.

MATLAB propose un large choix de modèles préentraînés issus de la communauté du Deep Learning, que vous pouvez utiliser pour apprendre et identifier les caractéristiques d'un nouveau jeu de données. Cette méthode, nommée apprentissage par transfert, est un moyen utile d'exploiter le Deep Learning sans avoir à partir de zéro. Des modèles comme GoogLeNet, AlexNet et Inception offrent un point de départ pour découvrir le Deep Learning, en tirant parti d'architectures éprouvées conçues par des experts.

Concevoir et entraîner des réseaux

Avec Deep Network Designer, vous pouvez importer des modèles préentraînés ou concevoir de nouveaux modèles à partir de zéro.

Application Deep Network Designer pour concevoir, visualiser et modifier des réseaux de Deep Learning interactivement.

Vous pouvez également entraîner des réseaux directement dans l'application et surveiller l'apprentissage avec les tracés des métriques de précision, de perte et de validation.

Utilisation de modèles préentraînés pour l'apprentissage par transfert

La mise au point d'un réseau préentraîné avec l'apprentissage par transfert est une méthode généralement beaucoup plus rapide et plus facile que l'apprentissage à partir de zéro. Il s'agit de la méthode qui nécessite la quantité de données et de ressources de calcul la plus faible. L'apprentissage par transfert utilise les connaissances d'un type de problème pour résoudre des problèmes similaires. Vous commencez avec un réseau préentraîné et vous l'utilisez pour apprendre une nouvelle tâche. L'un des avantages de l'apprentissage par transfert réside dans le fait que le réseau préentraîné a déjà appris un vaste ensemble de caractéristiques. Ces caractéristiques peuvent être appliquées à une large gamme d'autres tâches similaires. Par exemple, vous pouvez utiliser un réseau entraîné sur des millions d'images et l'entraîner à nouveau pour une nouvelle classification d'objets avec seulement quelques centaines d'images.

Accélération hardware avec des GPU

Un réseau neuronal convolutif est entraîné sur des centaines, des milliers, voire des millions d'images. Lorsque vous travaillez avec de grandes quantités de données et des architectures de réseaux complexes, les GPU peuvent accélérer considérablement le temps de traitement nécessaire pour entraîner un modèle.

Le GPU NVIDIA® accélère les tâches intensives en calcul telles que le Deep Learning.

En savoir plus


Applications utilisant des réseaux neuronaux convolutifs

Détection d'objets

La détection d'objets désigne le processus de localisation et de classification des objets dans les images et les vidéos. Computer Vision Toolbox™ offre des modèles d'apprentissage pour créer des détecteurs d'objets basés sur le Deep Learning à l'aide de YOLO et de Faster R-CNN.

Détection de mots-clés avec le Deep Learning

Cet exemple illustre comment entraîner un détecteur d'objets avec le Deep Learning et un algorithme de région utilisant des réseaux neuronaux convolutifs (R-CNN)

Détection de mots-clés

La reconnaissance vocale est utilisée dans la détection de mots-clés, qui consiste à reconnaître des mots ou phrases spécifiques et à les utiliser comme directives. Elle est, par exemple, utilisée pour activer des dispositifs et allumer des lumières.

Détection de mots-clés avec le Deep Learning

Cet exemple montre comment utiliser MATLAB pour identifier et détecter la présence de commandes vocales dans les contenus audio et comment ces commandes peuvent être exploitées dans le domaine des technologies d'assistance vocale.

Segmentation sémantique

Les réseaux neuronaux convolutifs sont utilisés dans la segmentation sémantique pour associer chaque pixel d'une image à une étiquette de classe correspondante. La segmentation sémantique intervient dans de nombreuses applications telles que la conduite autonome, les contrôles industriels, la classification de terrains et l'imagerie médicale. Les réseaux neuronaux convolutifs constituent la base de la construction d'un réseau de segmentation sémantique.

Segmentation sémantique avec le Deep Learning

Cet exemple montre comment utiliser MATLAB pour concevoir un réseau de segmentation sémantique, qui identifiera chaque pixel de l'image avec une étiquette correspondante.

MATLAB propose des outils et des fonctionnalités pour tout ce qui a trait au Deep Learning. Utilisez les réseaux neuronaux convolutifs pour enrichir vos workflows dans le domaine du traitement du signal, de la Computer Vision ou des communications et des radars.


En savoir plus sur les réseaux neuronaux convolutifs

Les produits qui supportent l'utilisation de réseaux neuronaux convolutifs pour l'analyse d'images incluent MATLABComputer Vision Toolbox™Statistics and Machine Learning Toolbox™ et Deep Learning Toolbox.

Les réseaux neuronaux convolutifs nécessitent Deep Learning Toolbox. L'apprentissage et la prédiction sont supportés sur les GPU compatibles CUDA® dotés d'une capacité de calcul 3.0 ou supérieure. L'utilisation d'un GPU est fortement conseillée et nécessite Parallel Computing Toolbox™.

Vidéos

Exemples et démonstrations

Références logicielles