Tout savoir sur le Convolutional Neural Network (CNN)
En Machine Learning, le domaine du traitement des images se décline en diverses branches comme la segmentation d’images, la détection d’objets, la reconnaissance faciale, la génération d’images et la classification d’images.
À l’origine, cette dernière s’appuyait sur des algorithmes tels que K-Nearest Neighbors, Random Forest ou encore les machines à vecteurs. Ces dernières années, elle a fait un bond significatif en termes de performance grâce à l’avènement du Convolutional Neural Network.
Qu’est-ce qu’un convolutional neural network
Un Convolutional Neural Network (CNN), ou réseau de neurones convolutif en français, est une architecture spécifique de réseaux de neurones profonds utilisée en apprentissage automatique et notamment en Deep Learning.
Ces réseaux de neurones ont la capacité d’apprendre à extraire des caractéristiques locales, c’est-à-dire des structures présentes de manière répétée à travers l’image. Au cœur du réseau neuronal convolutif, différentes couches, comme la couche de convolution, jouent un rôle central. La convolution permet aux CNNs d’analyser et de comprendre les structures visuelles complexes présentes dans les données d’entrée. Les réseaux de neurones convolutifs sont l’un des modèles les plus réputés pour la classification d’images en raison de leurs performances exceptionnelles.
Quelle est l’architecture type d’un CNN ?
L’architecture d’un réseau de neurones convolutifs est construite pour extraire des valeurs pertinentes à partir de données visuelles complexes. Une capacité rendue possible par l’intégration de layers ou couches fondamentales dans la structure du réseau : Convolutional, Pooling et Fully-Connected.
Convolutional layers ou couches de convolution
La couche de convolution est conçue pour extraire des caractéristiques significatives des données en effectuant une opération de convolution. Des filtres ou noyaux sont appliqués sur l’ensemble des entrées. Chaque filtre, représenté par une matrice de poids, est appliqué de manière glissante sur l’image ou les données d’entrée. Ils calculent la somme pondérée des valeurs à chaque position. Des cartes de caractéristiques sont ainsi générées, mettant en évidence des motifs locaux ou des structures marquantes dans la data.
La couche de convolution est donc un élément essentiel. Elle permet la reconnaissance des motifs ou pattern par le réseau de neurones, en partageant les poids du filtre à travers différentes parties de l’entrée. Après la convolution, on retrouve une fonction d’activation, généralement ReLU (Rectified Linear Unit). Elle introduit la notion de non-linéarité dans le modèle.
Pooling layers, couches de pooling ou de mise en commun
La couche de pooling est une autre composante de taille d’un réseau de neurones convolutifs. Elle vise à réduire la dimension spatiale des cartes de caractéristiques en préservant la data essentielle. Deux types de pooling sont couramment utilisés :
- Le pooling max retient la valeur maximale dans chaque région ;
- le pooling moyen calcule la moyenne des valeurs.
Le pooling permet de réduire le nombre de paramètres du modèle, de créer une invariance aux petites translations dans les entrées, et de préserver les valeurs dominantes. Le réseau de neurones est ainsi plus robuste et efficace. Après cette couche, les cartes de caractéristiques obtenues sont transmises aux couches suivantes.
Fully-connected layers, les couches entièrement connectées
Les couches entièrement connectées ou Fully-Connected (FC) permettent une connexion complète entre l’ensemble des unités neuronales de la couche précédente et celle-ci. Le réseau va ainsi capturer des relations complexes entre les valeurs extraites. Après avoir traversé les couches de convolution et de pooling, elles sont aplaties en un vecteur unidimensionnel. Celui-ci est ensuite transmis à une ou plusieurs couches entièrement connectées, où des poids sont appris pour associer l’input à la tâche finale.
Quel est le fonctionnement d’un CNN ?
Le CNN reçoit un input en entrée, une image souvent représentée sous forme de matrice de pixels, avec différentes dimensions en fonction des canaux de couleur. Les convolutional layers utilisent alors des filtres pour effectuer des opérations de convolution sur l’image. Chacun s’applique à des régions locales de l’image et extrait des caractéristiques spécifiques comme les bords, les textures ou les motifs. Une fois la convolution appliquée, c’est au tour de la fonction d’activation qui va introduire une non-linéarité dans le modèle.
La fonction Rectified Linear Unit (ReLU) est la plus couramment utilisée. La couche de Pooling est ensuite utilisée pour réduire la complexité du modèle en préservant les informations importantes. Les étapes de convolution, activation et pooling sont généralement répétées, ce qui permet de former une hiérarchie de caractéristiques de plus en plus abstraites. Les caractéristiques extraites sont ensuite acheminées à travers des couches entièrement connectées qui combinent ces informations pour effectuer la classification ou la prédiction finale.
La couche de sortie génère les prédictions finales du modèle. Le plus souvent, elles prennent la forme d’une distribution de probabilités pour chaque classe. Une fonction de perte mesure la différence entre les prédictions du modèle et les étiquettes réelles. Le modèle suit un apprentissage sur plusieurs itérations jusqu’à ce que le modèle atteigne les performances attendues.
Quelles différences entre Convolutional Neural Network (CNN) et réseaux de neurones traditionnels ?
Les réseaux de neurones convolutifs et traditionnels présentent des différences, notamment dans leurs structures et leur prise en charge de certaines caractéristiques.
Des architectures spécifiques
Comme nous l’avons vu précédemment, les Convolutional Neural Networks se composent de couches successives. Le réseau peut ainsi détecter des motifs complexes dans les données visuelles. Les réseaux neuronaux traditionnels se caractérisent par une structure entièrement connectée. Chaque neurone de la couche est relié à ceux de la suivante. Ces réseaux sont généralement employés pour des tâches généralistes, sans liens spécifiques avec la structure spatiale de la data.
Une gestion différente du partage des poids
Dans le cadre des CNN, les poids des filtres au sein des couches de convolution sont partagés. Un même filtre peut ainsi s’appliquer à plusieurs zones de l’image. À l’inverse, dans un réseau traditionnel, chaque connexion entre les neurones possède ses propres poids, ce qui le rend moins efficace dans le partage des informations spatiales.
Différences dans le traitement des données spatiales
Les CNN exploitent la structure spatiale des données. Grâce aux filtres partagés et aux couches de pooling, ils peuvent détecter des motifs indépendamment de leur position exacte dans l’image. Les réseaux traditionnels traitent les données comme des vecteurs unidimensionnels.
Quels sont les champs d’applications d’un CNN ?
Les réseaux de neurones convolutifs se montrent très polyvalents et trouvent leur place dans différents secteurs.
Leur domaine de prédilection : la classification d’image
Les CNNs sont particulièrement performants lorsqu’il s’agit d’identifier des caractéristiques essentielles et de classer des objets présents sur une image. Une de leurs premières applications en vision par ordinateur est la reconnaissance de chiffres manuscrits, comme les codes postaux ou les chèques. Aujourd’hui, ils s’appliquent à l’analyse d’imagerie médicale, comme les IRM, dans le domaine de la santé.
La détection d’objets
Cette application est rendue possible par la capacité des CNNs à reconnaître, étiqueter et classer des objets en temps réel. Ainsi, dans l’industrie automobile, cette fonctionnalité est exploitée par les véhicules autonomes. Ils peuvent identifier les obstacles et ajuster leur conduite en conséquence. Cette technologie de Deep Learning facilite également la reconnaissance faciale, dans les environnements domestiques intelligents comme lors des déplacements des piétons.
La reconstitution d’objets
Les CNNs permettent de modéliser de manière tridimensionnelle des objets du monde réel dans un environnement numérique. Un modèle de visage 3D peut ainsi être généré à partir d’une simple image. Dans les domaines de la biotechnologie, par exemple, ils facilitent la création de jumeaux numériques.
Quelles sont les tendances et avancées récentes dans les Convolutional Neural Networks ?
L’intégration de mécanismes d’autoattention dans un CN Network constitue un domaine de recherche prometteur, car ils améliorent l’extraction des caractéristiques et la compréhension contextuelle des images. Une autre avancée majeure réside dans l’utilisation d’un convolutional neural network tridimensionnel, notamment en médecine pour la détection de tumeurs par exemple. Le traitement de l’imagerie médicale devrait pousser à un développement continu des architectures CNN 3 D.
Si l’aspect « boîte noire » de modèles de Deep Learning comme les CNNs suscite des inquiétudes, une tendance actuelle vise à rendre plus compréhensible l’information quant à leur processus décisionnel. Une autre tendance émergente concerne le Few-shot learning, ou l’apprentissage à partir d’un volume très limité de data. Cette approche est une évolution de taille dans des contextes où l’acquisition de vastes ensembles de données étiquetées n’est pas réalisable, comme dans la détection de maladies rares.
Enfin, les chercheurs se focalisent de plus en plus sur l’amélioration des modèles pré entraînés et les techniques de fine tuning. La tendance du transfer learning, ou apprentissage par transfert devrait permettre d’accélérer le déploiement de nouvelles solutions d’intelligence artificielle.
Les réseaux de neurones convolutifs ont révolutionné le Machine Learning et le Deep Learning. Cette technologie puissante a permis au domaine de la vision par ordinateur (Computer Vision) de se développer de manière exponentielle. Nul doute qu’ils vont continuer à évoluer, notamment en termes d’amélioration de l’efficacité de calcul. Ils pourront alors s’adapter à des appareils de taille plus petite, comme ceux de l’IoT.