Un réseau neuronal convolutif (CNN ou ConvNet) est une architecture réseau pour le Deep Learning qui apprend directement à partir des données.
Ce type de réseau est particulièrement efficace lorsqu’il s’agit de trouver des patterns dans des images afin de reconnaître des objets, des classes et des catégories. Les CNN peuvent aussi être efficaces pour la classification de données audio, de séries temporelles et de signaux.
Comment fonctionnent les CNN ?
Un réseau neuronal convolutif peut disposer de dizaines, voire de centaines de couches qui apprennent chacune à détecter différentes caractéristiques d’une image. Des filtres sont appliqués à chaque image du jeu d’apprentissage avec différentes résolutions, puis la sortie de chaque image convoluée est utilisée comme entrée de la couche suivante. Au début, ces filtres peuvent concerner des caractéristiques très simples, comme la luminosité et les contours, puis se complexifier jusqu’à représenter des caractéristiques uniques propres à l’objet.
Des exemples pour en savoir plus
Apprentissage des caractéristiques, couches et classification
Un CNN comporte une couche d’entrée, une couche de sortie et de nombreuses couches intermédiaires cachées.
Ces couches effectuent des opérations pour modifier les données, afin d’en apprendre les caractéristiques spécifiques. Les trois couches les plus courantes sont : la convolution, l'activation (ou ReLU) et le pooling.
- La couche de convolution applique un ensemble de filtres convolutifs aux images en entrée, chacun d'entre eux activant certaines caractéristiques des images.
- La couche ReLU (Rectified linear unit) favorise 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 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.
Poids et biais partagés
Contrairement aux réseaux de neurones classiques, un réseau neuronal convolutif possède des valeurs de poids et de biais partagées, qui sont identiques pour tous les neurones cachés d’une couche donnée.
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
Après la phase d'apprentissage des caractéristiques au travers de ses nombreuses couches, l'architecture d'un réseau neuronal convolutif change et 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 CNN utilise une couche de classification pour générer la sortie finale de la classification.
Imagerie médicale : les CNN peuvent examiner des milliers de rapports pathologiques pour détecter la présence ou l’absence de cellules cancéreuses sur des images.
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 CNN peuvent apprendre et détecter des mots clés avec précision et ignorer le reste, quel que soit l’environnement.
Détection d’objets : la conduite autonome s’appuie sur les CNN pour détecter les panneaux ou autres objets, et prendre des décisions en fonction de la sortie.
Génération de données synthétiques : grâce aux réseaux antagonistes génératifs (GAN) de nouvelles images peuvent être produites et utilisées dans des applications de Deep Learning comme la reconnaissance faciale ou la conduite autonome.
Quand utiliser les CNN ?
Vous pouvez envisager d’utiliser les CNN si vous disposez d’une grande quantité de données complexes (par exemple, des images). Si vous les prétraitez de manière à fonctionner avec la structure du réseau, vous pouvez aussi utiliser les CNN avec des signaux ou des séries temporelles.
Consultez les exemples suivants pour travailler avec des signaux et des CNN :
Utilisation de modèles pré-entraînés
Les ingénieurs et les scientifiques qui souhaitent utiliser un CNN optent généralement pour un modèle pré-entraîné, qui peut ensuite être utiliser pour apprendre et identifier les caractéristiques d’un nouveau jeu de données.
Des modèles comme GoogLeNet, AlexNet et Inception constituent un point de départ intéressant pour explorer le Deep Learning et profiter d’architectures éprouvées conçues par des experts.
Nouveaux modèles et exemples de Deep Learning
Consultez par catégorie une liste de modèles disponibles et explorez pour en découvrir de nouveaux.
Les CNN avec MATLAB
Grâce à MATLAB® et Deep Learning Toolbox™, vous pouvez concevoir, entraîner et déployer des CNN.
Concevoir et entraîner des réseaux
Deep Network Designer vous permet d’importer des modèles pré-entraînés ou d’en concevoir à partir de zéro.
Vous pouvez également entraîner des réseaux directement dans l’application et surveiller la progression de leur apprentissage avec des graphiques représentant les métriques de précision, de perte et de validation.
Utiliser des modèles pré-entraînés pour l’apprentissage par transfert
En règle générale, il est bien plus facile et rapide de configurer un réseau pré-entraîné à l’aide de l’apprentissage par transfert que d’en entraîner un à partir de zéro. Cela requiert également moins de données et de ressources de calcul. L’apprentissage par transfert permet d’exploiter les connaissances acquises pour un type de problème afin de résoudre des problèmes similaires. Il s’agit de commencer avec un réseau pré-entraîné, et de l’utiliser pour apprendre une nouvelle tâche. Un avantage de l’apprentissage par transfert réside dans le fait que le réseau pré-entraîné a déjà appris un grand nombre de caractéristiques. Par exemple, vous pouvez utiliser un réseau entraîné à l’aide de millions d’images, et le réentraîner pour effectuer une nouvelle classification d’objets à l’aide de quelques centaines d’images seulement.
Accélération hardware avec des GPU
Les réseaux neuronaux convolutifs sont entraînés à l’aide de centaines, de milliers, voire de millions d’images. Lorsque vous travaillez avec de grandes quantités de données et des architectures réseau complexes, les GPU peuvent réduire considérablement le temps de traitement nécessaire pour entrainer des modèles.
MATLAB pour le Deep Learning
En savoir plus sur le support du Deep Learning dans MATLAB.
Tutoriels et exemples
En savoir plus sur MATLAB pour le Machine Learning.
Sélectionner un site web
Choisissez un site web pour accéder au contenu traduit dans votre langue (lorsqu'il est disponible) et voir les événements et les offres locales. D’après votre position, nous vous recommandons de sélectionner la région suivante : .
Vous pouvez également sélectionner un site web dans la liste suivante :
Comment optimiser les performances du site
Pour optimiser les performances du site, sélectionnez la région Chine (en chinois ou en anglais). Les sites de MathWorks pour les autres pays ne sont pas optimisés pour les visites provenant de votre région.
Amériques
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)