cours
Introduction aux réseaux neuronaux convolutifs (CNN)
Qu'est-ce qu'un réseau neuronal convolutif (CNN) ?
Un réseau neuronal convolutif (CNN), également appelé ConvNet, est un type spécialisé d'algorithme d'apprentissage profond principalement conçu pour les tâches qui nécessitent la reconnaissance d'objets, notamment la classification, la détection et la segmentation d'images. Les CNN sont utilisés dans une variété de scénarios pratiques, tels que les véhicules autonomes, les systèmes de caméras de sécurité, etc.
Développer des applications d'IA
L'importance des CNN
Plusieurs raisons expliquent l'importance des CNN dans le monde moderne, comme indiqué ci-dessous :
- Les CNN se distinguent des algorithmes classiques d'apprentissage automatique tels que les SVM et les arbres de décision par leur capacité à extraire de manière autonome des caractéristiques à grande échelle, ce qui permet d'éviter le recours à l'ingénierie manuelle des caractéristiques et d'améliorer ainsi l'efficacité.
- Les couches convolutives confèrent aux CNN leurs caractéristiques invariantes par rapport à la traduction, ce qui leur permet d'identifier et d'extraire des modèles et des caractéristiques des données indépendamment des variations de position, d'orientation, d'échelle ou de traduction.
- Diverses architectures CNN pré-entraînées, dont VGG-16, ResNet50, Inceptionv3 et EfficientNet, ont démontré des performances de premier plan. Ces modèles peuvent être adaptés à de nouvelles tâches avec relativement peu de données grâce à un processus connu sous le nom de réglage fin.
- Au-delà des tâches de classification d'images, les CNN sont polyvalents et peuvent être appliqués à une série d'autres domaines, tels que le traitement du langage naturel, l'analyse des séries temporelles et la reconnaissance vocale.
L'inspiration derrière CNN et les parallèles avec le système visuel humain
Les réseaux neuronaux convolutifs ont été inspirés par l'architecture en couches du cortex visuel humain, et vous trouverez ci-dessous quelques similitudes et différences essentielles :
Illustration de la correspondance entre les zones associées au cortex visuel primaire et les couches d'un réseau neuronal convolutif(source)
- Architecture hiérarchique : Les CNN et le cortex visuel ont tous deux une structure hiérarchique, avec des caractéristiques simples extraites dans les premières couches et des caractéristiques plus complexes construites dans les couches plus profondes. Cela permet des représentations de plus en plus sophistiquées des données visuelles.
- Connectivité locale : Les neurones du cortex visuel ne se connectent qu'à une région locale de l'entrée, et non à l'ensemble du champ visuel. De même, les neurones d'une couche CNN ne sont connectés qu'à une région locale du volume d'entrée par le biais de l'opération de convolution. Cette connectivité locale est un gage d'efficacité.
- Invariance de la traduction : Les neurones du cortex visuel peuvent détecter des éléments indépendamment de leur emplacement dans le champ visuel. Les couches de mise en commun dans un CNN assurent un certain degré d'invariance de la traduction en résumant les caractéristiques locales.
- Plusieurs cartes de caractéristiques : À chaque étape du traitement visuel, de nombreuses cartes de caractéristiques différentes sont extraites. Les CNN imitent ce phénomène en utilisant plusieurs cartes de filtrage dans chaque couche de convolution.
- Non-linéarité : Les neurones du cortex visuel présentent des propriétés de réponse non linéaires. Les CNN réalisent la non-linéarité grâce à des fonctions d'activation telles que la ReLU appliquée après chaque convolution.
Les CNN imitent le système visuel humain mais sont plus simples, ne disposant pas de ses mécanismes de rétroaction complexes et s'appuyant sur l'apprentissage supervisé plutôt que sur l'apprentissage non supervisé, ce qui a permis de réaliser des progrès dans le domaine de la vision par ordinateur en dépit de ces différences.
Principaux éléments d'un CNN
Le réseau neuronal convolutif se compose de quatre parties principales.
Mais comment les CNN apprennent-ils avec ces pièces ?
Ils aident les CNN à imiter la façon dont le cerveau humain fonctionne pour reconnaître des modèles et des caractéristiques dans les images :
- Couches convolutives
- Unité linéaire rectifiée (ReLU)
- Mise en commun des couches
- Couches entièrement connectées
Cette section aborde la définition de chacun de ces éléments à travers l'exemple suivant de classification d'un chiffre manuscrit.
Architecture des CNN appliqués à la reconnaissance de chiffres(source)
Couches de convolution
C'est le premier élément constitutif d'un CNN. Comme son nom l'indique, la principale tâche mathématique effectuée s'appelle la convolution, qui consiste à appliquer une fonction de fenêtre coulissante à une matrice de pixels représentant une image. La fonction de glissement appliquée à la matrice est appelée noyau ou filtre, les deux pouvant être utilisés de manière interchangeable.
Dans la couche de convolution, plusieurs filtres de taille égale sont appliqués, et chaque filtre est utilisé pour reconnaître un motif spécifique de l'image, tel que la courbure des chiffres, les bords, la forme entière des chiffres, etc.
Plus simplement, dans la couche de convolution, nous utilisons de petites grilles (appelées filtres ou noyaux) qui se déplacent sur l'image. Chaque petite grille est comme une mini-loupe qui recherche des motifs spécifiques dans la photo, comme des lignes, des courbes ou des formes. En se déplaçant sur la photo, il crée une nouvelle grille qui met en évidence les endroits où il a trouvé ces motifs.
Par exemple, un filtre peut être efficace pour trouver des lignes droites, un autre peut trouver des courbes, et ainsi de suite. En utilisant plusieurs filtres différents, le CNN peut se faire une bonne idée des différents motifs qui composent l'image.
Considérons cette image 32x32 en niveaux de gris d'un chiffre écrit à la main. Les valeurs de la matrice sont données à titre d'illustration.
Illustration de l'image d'entrée et de sa représentation en pixels
Considérons également le noyau utilisé pour la convolution. Il s'agit d'une matrice de dimension 3x3. Les poids de chaque élément du noyau sont représentés dans la grille. Les poids nuls sont représentés dans les grilles noires et les poids un dans les grilles blanches.
Devons-nous trouver manuellement ces poids ?
Dans la réalité, les poids des noyaux sont déterminés au cours du processus d'apprentissage du réseau neuronal.
En utilisant ces deux matrices, nous pouvons effectuer l'opération de convolution en appliquant le produit de points, et travailler comme suit :
- Appliquez la matrice du noyau du coin supérieur gauche vers la droite.
- Effectuez une multiplication par éléments.
- Additionnez les valeurs des produits.
- La valeur obtenue correspond à la première valeur (coin supérieur gauche) de la matrice convoluée.
- Déplacez le noyau vers le bas par rapport à la taille de la fenêtre coulissante.
- Répétez les étapes 1 à 5 jusqu'à ce que la matrice d'image soit entièrement recouverte.
La dimension de la matrice convoluée dépend de la taille de la fenêtre coulissante. Plus la fenêtre coulissante est grande, plus la dimension est petite.
Application de la tâche de convolution en utilisant un pas de 1 avec un noyau 3x3
Un autre nom associé au noyau dans la littérature est celui de détecteur de caractéristiques, car les poids peuvent être ajustés avec précision pour détecter des caractéristiques spécifiques dans l'image d'entrée.
Par exemple :
- La moyenne du noyau des pixels voisins peut être utilisée pour rendre l'image d'entrée floue.
- La soustraction des noyaux voisins est utilisée pour la détection des contours.
Plus le réseau comporte de couches de convolution, meilleure est la capacité de la couche à détecter des caractéristiques plus abstraites.
Fonction d'activation
Une fonction d'activation ReLU est appliquée après chaque opération de convolution. Cette fonction aide le réseau à apprendre les relations non linéaires entre les caractéristiques de l'image, ce qui rend le réseau plus robuste pour l'identification de différents modèles. Elle permet également d'atténuer les problèmes de gradient de fuite.
Couche de mise en commun
L'objectif de la couche de mise en commun est d'extraire les caractéristiques les plus significatives de la matrice convoluée. Pour ce faire, on applique certaines opérations d'agrégation qui réduisent la dimension de la carte des caractéristiques (matrice convoluée), ce qui permet de réduire la mémoire utilisée lors de l'apprentissage du réseau. La mise en commun permet également d'atténuer l'ajustement excessif.
Les fonctions d'agrégation les plus courantes qui peuvent être appliquées sont les suivantes :
- Mise en commun maximale, c'est-à-dire la valeur maximale de la carte des caractéristiques.
- La mise en commun de la somme correspond à la somme de toutes les valeurs de la carte des caractéristiques.
- La mise en commun moyenne est la moyenne de toutes les valeurs.
Vous trouverez ci-dessous une illustration de chacun des exemples précédents :
Application du pooling max avec un pas de 2 en utilisant le filtre 2x2
En outre, la dimension de la carte des caractéristiques diminue au fur et à mesure que la fonction de regroupement est appliquée.
La dernière couche de mise en commun aplatit sa carte de caractéristiques afin qu'elle puisse être traitée par la couche entièrement connectée.
Couches entièrement connectées
Ces couches se trouvent dans la dernière couche du réseau neuronal convolutif et leurs entrées correspondent à la matrice unidimensionnelle aplatie générée par la dernière couche de mise en commun. Les fonctions d'activation ReLU leur sont appliquées pour assurer la non-linéarité.
Enfin, une couche de prédiction softmax est utilisée pour générer des valeurs de probabilité pour chacune des étiquettes de sortie possibles, et l'étiquette finale prédite est celle qui présente le score de probabilité le plus élevé.
Surajustement et régularisation dans les CNN
Le surajustement est un problème courant dans les modèles d'apprentissage automatique et les projets d'apprentissage profond du CNN. Cela se produit lorsque le modèle apprend trop bien les données d'apprentissage ("apprentissage par cœur"), y compris le bruit et les valeurs aberrantes. Ce type d'apprentissage conduit à un modèle qui donne de bons résultats sur les données d'apprentissage, mais de mauvais résultats sur de nouvelles données inédites.
Ce phénomène peut être observé lorsque la performance sur les données d'apprentissage est trop faible par rapport à la performance sur les données de validation ou de test ; une illustration graphique est donnée ci-dessous :
Sous-appareillage vs. Surajustement
Les modèles d'apprentissage profond, en particulier les réseaux neuronaux convolutifs (CNN), sont particulièrement sensibles à l'overfitting en raison de leur capacité de complexité élevée et de leur aptitude à apprendre des modèles détaillés dans des données à grande échelle.
Plusieurs techniques de régularisation peuvent être appliquées pour atténuer l'ajustement excessif dans les CNN, et certaines d'entre elles sont illustrées ci-dessous :
7 stratégies pour limiter l'overfitting dans les CNNs
- Abandon : Il s'agit d'abandonner aléatoirement certains neurones au cours du processus de formation, ce qui oblige les neurones restants à apprendre de nouvelles caractéristiques à partir des données d'entrée.
- Normalisation par lots : Le surajustement est réduit dans une certaine mesure en normalisant la couche d'entrée par l'ajustement et la mise à l'échelle des activations. Cette approche est également utilisée pour accélérer et stabiliser le processus de formation.
- Mise en commun des couches : Cela peut être utilisé pour réduire les dimensions spatiales de l'image d'entrée afin de fournir au modèle une forme abstraite de représentation, réduisant ainsi le risque de surajustement.
- Arrêt précoce : Il s'agit de surveiller en permanence les performances du modèle sur les données de validation pendant le processus de formation et d'interrompre la formation lorsque l'erreur de validation ne s'améliore plus.
- Injection de bruit : Ce processus consiste à ajouter du bruit aux entrées ou aux sorties des couches cachées pendant l'apprentissage afin de rendre le modèle plus robuste et d'éviter une faible généralisation.
- Normalisations L1 et L2 : L1 et L2 sont utilisés pour ajouter une pénalité à la fonction de perte en fonction de la taille des poids. Plus précisément, L1 encourage les poids à être libres, ce qui permet une meilleure sélection des caractéristiques. D'autre part, L2 (également appelé "weight decay") encourage les poids à être petits, ce qui les empêche d'avoir une trop grande influence sur les prédictions.
- Augmentation des données : Il s'agit d'augmenter artificiellement la taille et la diversité de l'ensemble de données d'apprentissage en appliquant des transformations aléatoires telles que la rotation, la mise à l'échelle, le retournement ou le recadrage des images d'entrée.
Applications pratiques des CNN
Les réseaux neuronaux convolutifs ont révolutionné le domaine de la vision par ordinateur, conduisant à des avancées significatives dans de nombreuses applications du monde réel. Vous trouverez ci-dessous quelques exemples de leur application.
Quelques applications pratiques des CNN
- Classification des images : Les réseaux neuronaux convolutionnels sont utilisés pour la catégorisation des images, qui sont classées dans des catégories prédéfinies. L'organisation automatique des photos sur les plateformes de médias sociaux est l'une des applications d'un tel scénario.
- Détection d'objets : Les CNN sont capables d'identifier et de localiser plusieurs objets dans une image. Cette capacité est cruciale dans de nombreux scénarios de balayage des rayons dans le commerce de détail pour identifier les articles en rupture de stock.
- Reconnaissance faciale : il s'agit également de l'un des principaux secteurs d'application des CNN. Par exemple, cette technologie peut être intégrée dans des systèmes de sécurité pour un contrôle d'accès efficace basé sur les caractéristiques faciales.
Pour une mise en œuvre plus pratique, notre tutoriel sur les réseaux neuronaux convolutifs (CNN) avec TensorFlow vous apprend à construire et à mettre en œuvre des CNN en Python avec le framework Tensorflow 2.
Cadres d'apprentissage profond pour les CNN
La croissance rapide de l'apprentissage profond est principalement due à des cadres puissants tels que Tensorflow, Pytorch et Keras, qui facilitent la formation des réseaux neuronaux convolutionnels et d'autres modèles d'apprentissage profond.
Voici un bref aperçu de chaque cadre.
Logos Tensorflow, Keras et Pytorch
Tensorflow
TensorFlow est un framework d'apprentissage profond open-source développé par Google et publié en 2015. Il offre une gamme d'outils pour le développement et le déploiement de l'apprentissage automatique. Notre introduction aux réseaux neuronaux profonds fournit un guide complet pour comprendre les réseaux neuronaux profonds et leur importance dans le monde moderne de l'apprentissage profond de l'intelligence artificielle, ainsi que des implémentations du monde réel dans Tensorflow.
Keras
Keras est un framework de réseau neuronal de haut niveau en Python qui permet une expérimentation et un développement rapides. Il est open-source et peut être utilisé dans d'autres frameworks comme TensorFlow, CNTK et Theano. Notre cours, Image Processing with Keras in Python, vous apprend à mener des analyses d'images à l'aide de Keras avec Python en construisant, en entraînant et en évaluant des réseaux de neurones convolutifs.
Pytorch
Lancé par la division de recherche en IA de Facebook en 2017, il est conçu pour des applications de traitement du langage naturel et se distingue par son graphique de calcul dynamique et son efficacité en termes de mémoire. Si vous souhaitez vous plonger dans le traitement du langage naturel, consultez notre site NLP with PyTorch : Un guide complet est un excellent point de départ.
Chaque projet étant différent, la décision dépend réellement des caractéristiques les plus importantes pour un cas d'utilisation donné. Pour vous aider à prendre de meilleures décisions, le tableau suivant propose une brève comparaison de ces tableaux, en mettant en évidence leurs caractéristiques uniques.
Tensorflow |
Pytorch |
Keras |
|
Niveau API |
Both (haut et bas) |
Faible |
Haut |
Architecture |
Pas facile à utiliser |
Complexe, moins lisible |
Simple, concis, lisible |
Ensembles de données |
Grands ensembles de données, hautes performances |
Grands ensembles de données, hautes performances |
Petits ensembles de données |
Débogage |
Difficile de procéder à un débogage |
Bonnes capacités de débogage |
Réseau simple, ce qui fait que le débogage n'est pas souvent nécessaire |
Modèles pré-entraînés ? |
Oui |
Oui |
Oui |
Popularité |
Le deuxième plus populaire des trois |
Troisième plus populaire des trois |
Le plus populaire des trois |
Vitesse |
Rapide et performant |
Rapide et performant |
Lenteur et faible performance |
Rédigé en |
C++, CUDA, Python |
Lua |
Python |
Tableau comparatif entre Tensorflow, Pytorch et Keras(source)
Conclusion
Cet article donne un aperçu complet de ce qu'est un CNN dans l'apprentissage profond, ainsi que de son rôle crucial dans les tâches de reconnaissance et de classification d'images.
Elle a commencé par mettre en évidence l'inspiration tirée du système visuel humain pour la conception des CNN et a ensuite exploré les composants clés qui permettent à ces réseaux d'apprendre et de faire des prédictions.
La question du surajustement a été reconnue comme un défi important pour la capacité de généralisation des CNN. Pour y remédier, diverses stratégies pertinentes ont été définies pour atténuer le surajustement et améliorer les performances globales des CNN.
Enfin, les principaux frameworks CNN d'apprentissage profond ont été mentionnés, ainsi que les caractéristiques uniques de chacun d'entre eux et la manière dont ils se comparent les uns aux autres.
Vous avez envie de vous plonger dans le monde de l'IA et de l'apprentissage automatique ? Faites passer votre expertise au niveau supérieur en vous inscrivant dès aujourd'hui au cours Deep Learning with PyTorch.
Obtenez une certification de haut niveau en matière d'IA
Scientifique de données aux multiples talents qui aime partager ses connaissances et rendre service aux autres, Zoumana est un créateur de contenu sur YouTube et un rédacteur technique de premier plan sur Medium. Il prend plaisir à parler, à coder et à enseigner. Zoumana est titulaire de deux masters. Le premier en informatique avec une spécialisation en apprentissage automatique à Paris, en France, et le second en science des données à l'université Texas Tech aux États-Unis. Son parcours professionnel a débuté en tant que développeur de logiciels au sein du Groupe OPEN en France, avant de rejoindre IBM en tant que consultant en apprentissage automatique, où il a développé des solutions d'IA de bout en bout pour les compagnies d'assurance. Zoumana a rejoint Axionable, la première startup d'IA durable basée à Paris et Montréal. Il y a occupé le poste de Data Scientist et a mis en œuvre des produits d'IA, principalement des cas d'utilisation NLP, pour des clients en France, à Montréal, à Singapour et en Suisse. En outre, 5 % de son temps a été consacré à la recherche et au développement. Il travaille actuellement en tant que scientifique de données senior à l'IFC, le groupe de la Banque mondiale.
Commencez dès aujourd'hui votre voyage dans l'apprentissage profond !
cours
Introduction à l'apprentissage profond avec PyTorch
cours