Qu’est-ce qu’un réseau de neurones à convolution ?

Le réseau de neurones à convolution (CNN ou ConvNet) est l’un des algorithmes les plus répandus pour le Deep Learning, un type de Machine Learning où le modèle apprend à réaliser des tâches de classification directement à partir d’images, de vidéos, de textes ou de sons.

Les CNN sont particulièrement utiles pour identifier des modèles dans les images afin de reconnaître des objets, des visages et des scènes. Ils apprennent directement à partir de données d’images et utilisent des modèles pour classer les images, éliminant ainsi la nécessité d’effectuer une extraction manuelle des caractéristiques.

Les CNN sont tout particulièrement utiles pour les applications basées sur la reconnaissance d’objets et la computer vision, comme les véhicules autonomes ou la reconnaissance faciale. Selon votre application, vous pouvez créer un CNN à partir de zéro ou utiliser un modèle préentraîné sur votre jeu de données.

En quoi les CNN sont-ils utiles ?

L’utilisation des CNN pour le Deep Learning s’est répandue pour trois raisons importantes:

  • Ils éliminent la nécessité d’effectuer une extraction manuelle des caractéristiques, car ils les apprennent directement.
  • Ils produisent d’excellents résultats de reconnaissance.
  • Ils peuvent être réentraînés pour effectuer de nouvelles tâches de reconnaissance, ce qui vous permet de vous appuyer sur des réseaux préexistants.

Un processus de Deep Learning : les images sont transmises au CNN, qui apprend automatiquement les caractéristiques et classe les objets.

Les CNN permettent de nouvelles avancées dans les domaines de la détection et de la reconnaissance d’objets

Les CNN offrent une architecture optimale pour la reconnaissance d’images et la détection de modèles. Associés aux progrès dans le domaine des GPU et du calcul parallèle, ils constituent une technologie essentielle qui va rendre possible de nouveaux développements en matière de conduite automatisée et de reconnaissance faciale.

Par exemple, les applications de Deep Learning utilisent des CNN pour examiner des milliers de rapports pathologiques afin de détecter visuellement les cellules cancéreuses. Les réseaux de neurones à convolution permettent également aux véhicules autonomes de détecter des objets et d’apprendre à faire la différence entre un panneau de signalisation et un piéton.

En savoir plus

Fonctionnement des CNN

Un réseau de neurones à convolution peut avoir plusieurs dizaines, voire plusieurs centaines de couches, qui apprennent chacune à identifier différentes caractéristiques d’une image. Des filtres sont appliqués à chaque image utilisée pour l’apprentissage à différentes résolutions, et la sortie de chaque image convoluée est utilisée comme entrée de la couche suivante. Les premiers filtres peuvent être des caractéristiques très simples, comme par exemple la luminosité ou les bords, puis passer à des caractéristiques plus complexes qui définissent l’objet de façon unique.

Les CNN effectuent des tâches d’identification et de classification d’images, de textes, de sons et de vidéos.

Apprentissage des caractéristiques, couches et classification

À l’instar des autres réseaux de neurones, les CNN se composent d’une couche d’entrée, d’une couche de sortie et de nombreuses couches cachées entre ces deux couches.

Toutes ces couches effectuent des opérations qui modifient les données dans l’objectif d’apprendre les caractéristiques spécifiques à ces données. Les trois types de couches les plus répandus sont les suivants : convolution, activation ou ReLU et pooling.

  • La couche de convolution fait passer les images d’entrée par un ensemble de filtres convolutifs, chacun de ces filtres activant certaines caractéristiques des images.
  • La couche ReLU (Rectified linear unit) permet d’accélérer et d’optimiser l’apprentissage en mappant les valeurs négatives à zéro et en conservant les valeurs positives. Elle est parfois appelée couche d’activation, car seules les caractéristiques activées sont transférées dans la couche suivante.
  • La couche de pooling simplifie la sortie en effectuant un sous-échantillonnage non linéaire, réduisant ainsi 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, et chacune de ces couches apprend à identifier des caractéristiques différentes.

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

Couches de classification

Après l’apprentissage des caractéristiques dans plusieurs couches, l’architecture d’un CNN se poursuit par la classification.

L’avant-dernière couche est une couche entièrement connectée qui sort un vecteur de K dimensions, où K représente le nombre de classes que le réseau sera capable de prédire. Ce vecteur contient les probabilités de classement pour chaque classe d’une image.

La dernière couche d’une architecture de CNN utilise une couche de classification (softmax par exemple) pour fournir le résultat de classification. 

Accélération hardware à l’aide de GPU

Un réseau de neurones à convolution 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éseau complexes, les GPU peuvent réduire considérablement le temps de traitement nécessaire pour entraîner un modèle. Une fois qu’un CNN est entraîné, il peut être utilisé dans des applications temps réel, comme par exemple la détection de piétons dans les systèmes ADAS (Advanced Driver Assistance System).

Utiliser MATLAB avec un CNN

Utiliser MATLAB® avec Neural Network Toolbox™ vous permet d’entraîner votre propre CNN à partir de zéro ou d’utiliser un modèle préentraîné pour effectuer un apprentissage par transfert.

La méthode sélectionnée dépend de vos ressources disponibles et du type d’application que vous construisez.

Pour entraîner un réseau à partir de zéro, l’architecte doit définir le nombre de couches et de filtres, ainsi que d’autres paramètres réglables. Entraîner un modèle précis à partir de zéro nécessite également de grandes quantités de données, parfois des millions d’échantillons, ce qui peut s’avérer extrêmement chronophage.

Plutôt que d’entraîner un CNN à partir de zéro, il est courant d’utiliser un modèle préentraîné pour extraire automatiquement des caractéristiques à partir d’un nouveau jeu de données. Cette méthode, appelée apprentissage par transfert, est une solution pratique pour appliquer le Deep Learning sans avoir à recourir à un très grand jeu de données ni à procéder à des calculs et un apprentissage très longs. 

L’apprentissage à partir de zéro

Pour créer un réseau à partir de zéro, vous devez déterminer la configuration du réseau. Cette approche est celle qui vous donne le plus grand contrôle sur le réseau et peut donner des résultats impressionnants, mais elle implique de comprendre la structure d’un réseau de neurones et les nombreuses options disponibles en matière de types et de configurations des couches.

Si les résultats peuvent parfois dépasser ceux de l’apprentissage par transfert (voir ci-dessous), cette méthode nécessite généralement davantage d’images pour l’apprentissage, car le nouveau réseau a besoin de nombreux exemples de l’objet pour comprendre la variation des caractéristiques. La durée de l’apprentissage est souvent plus longue, et les combinaisons possibles des couches du réseau sont si nombreuses qu’il peut s’avérer fastidieux de configurer un réseau à partir de zéro. Lorsque vous créez un réseau et organisez les différentes couches, il peut généralement être utile de référencer d’autres configurations de réseau afin de profiter de ce que les chercheurs ont déjà expérimenté avec succès. 

En savoir plus

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

Ajuster un réseau préentraîné à l’aide de l’apprentissage par transfert est généralement beaucoup plus rapide et plus simple que d’entraîner un réseau à partir de zéro. Cette méthode est celle qui nécessite le moins de données et de ressources de calcul. L’apprentissage par transfert exploite les connaissances acquises en résolvant un problème pour résoudre des problèmes similaires. Vous démarrez avec un réseau préentraîné que vous utilisez pour l’apprentissage d’une nouvelle tâche. L’un des avantages de l’apprentissage par transfert, c’est que le réseau préentraîné a déjà appris un riche ensemble de caractéristiques. Ces caractéristiques peuvent ensuite être appliquées à de nombreuses autres tâches similaires. Par exemple, vous pouvez prendre un réseau entraîné sur des millions d’images et le réentraîner pour une nouvelle classification d’images en utilisant seulement une centaine d’images.

Neural Network Toolbox vous permet d’utiliser l’apprentissage par transfert avec des modèles de CNN préentrainés (par exemple GoogLeNet, AlexNet, vgg16, vgg19) et des modèles issus de Caffe et TensorFlow-Keras.

En savoir plus

Applications utilisant des CNN

Détection d’objets

La détection d’objets est le processus qui consiste à localiser et classer des objets dans des images et vidéos. Computer Vision System Toolbox™ contient des infrastructures d’apprentissage qui permettent de créer des détecteurs d’objets basés sur le Deep Learning à l’aide de R-CNN (régions avec CNN), de Fast R-CNN et de Faster R-CNN.

Vous pouvez utiliser les techniques de Machine Learning disponibles dans Statistics and Machine Learning Toolbox™ avec Computer Vision System Toolbox pour créer des systèmes de reconnaissance d’objets.

Neural Network Toolbox contient des fonctions qui permettent de développer et d’entraîner des CNN, ainsi que de réaliser des prédictions à l’aide d’un modèle de CNN entraîné.

Cet exemple montre comment entraîner un détecteur d'objets à l'aide du deep learning et de R-CNN (régions avec réseaux de neurones à convolution).
Cet exemple montre comment entraîner un détecteur d'objets à l'aide d'une technique de deep learning appelée Faster R-CNN (régions avec réseaux de neurones à convolution).

En savoir plus sur les CNN

Les produits qui supportent l’utilisation des CNN pour l’analyse d’images incluent notamment MATLAB®, Computer Vision System Toolbox™, Statistics and Machine Learning Toolbox™ et Neural Network Toolbox™.

Les réseaux de neurones à convolution nécessitent Neural Network 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 recommandée et nécessite Parallel Computing Toolbox™.

Références logicielles

Obtenez gratuitement la version d'essai

Bénéficiez d'une version d'évaluation de 30 jours.

Vous avez des questions ?

Contactez un de nos experts en Deep Learning.