CNN – Réseaux Convolutifs
Les réseaux de neurones convolutifs (CNN – Convolutional Neural Networks) sont une catégorie spécialisée de réseaux de neurones artificiels, conçus spécifiquement pour traiter des données structurées sous forme de grilles, comme les images. Leur architecture est particulièrement adaptée pour extraire des caractéristiques hiérarchiques des données, ce qui leur permet de résoudre efficacement des tâches de reconnaissance d’images, de segmentation, et d’analyse vidéo. Grâce à leur capacité à capter des motifs locaux dans les images, les CNN ont dominé les domaines de la vision par ordinateur.
Les CNN sont formés pour appliquer des opérations convolutives à l’ensemble de l’image, détectant des motifs simples dans les premières couches (comme des bords ou des textures) et des motifs plus complexes dans les couches profondes. Ces réseaux sont capables d’apprendre ces représentations sans nécessiter de prétraitements manuels de l’image.
Structure des CNN
Contrairement aux réseaux de neurones entièrement connectés (fully connected), les CNN exploitent la structure spatiale des données. Une image n’est pas simplement une liste de pixels — c’est une matrice organisée. Les CNN utilisent cette organisation pour extraire automatiquement des caractéristiques locales (features), comme des bords, textures ou formes, de manière efficace.
Dans ce tutoriel, nous allons décortiquer en profondeur la structure interne d’un CNN, ses composants fondamentaux, et les principes mathématiques et intuitifs qui le sous-tendent.
En savoir plus
Applications : vision, reconnaissance d’images
- Reconnaissance d’Objets : La reconnaissance d’objets avec un réseau de neurones convolutif (CNN) consiste à détecter et classer automatiquement des objets présents dans une image. Elle repose sur l’extraction hiérarchique de caractéristiques (bords, formes, textures, etc.) à travers des couches convolutives.
- Reconnaissance Faciale : La reconnaissance faciale permet de localiser et/ou identifier un ou plusieurs visages dans une image ou une vidéo. Elle peut s’appuyer sur des méthodes simples comme les classifieurs Haar (OpenCV) ou sur des réseaux de neurones convolutifs (CNN) pour des résultats plus précis.
- Classification d’Images : La classification d’images est une tâche d’apprentissage supervisé où l’objectif est d’assigner une étiquette à une image parmi plusieurs classes. Elle repose généralement sur des réseaux de neurones convolutifs (CNN) qui extraient automatiquement les caractéristiques visuelles.
- Segmentation d’Images : La segmentation d’images consiste à attribuer une étiquette à chaque pixel d’une image, afin de délimiter précisément les objets ou zones d’intérêt. Elle est utilisée dans la vision par ordinateur pour identifier des régions spécifiques comme des objets, personnes, routes, etc.
- Détection de Texte et OCR : Cette méthode utilise la bibliothèque OpenCV combinée à Tesseract OCR pour détecter et extraire du texte à partir d’images. OpenCV sert à prétraiter l’image et détecter les zones contenant du texte, tandis que Tesseract effectue la reconnaissance optique des caractères (OCR) pour extraire le texte.
- Analyse d’Image Médicale : L’analyse d’image médicale utilise des techniques de traitement d’image et d’apprentissage profond pour détecter, segmenter ou classifier des anomalies dans des images médicales comme des radiographies, IRM ou scanners. Cette méthode peut aider au diagnostic en automatisant la détection des structures anatomiques ou pathologies.
Architectures célèbres : VGG, ResNet, EfficientNet
- VGG (Visual Geometry Group) : VGG16 est un modèle de réseau de neurones convolutionnel pré-entraîné sur ImageNet. Il est largement utilisé pour des tâches de classification, d’extraction de caractéristiques et de transfert learning. Le modèle comporte 16 couches avec poids (13 convolutions + 3 fully connected).
- ResNet (Residual Networks) : La fonction ResNet50() permet de charger l’architecture du modèle de réseau de neurones convolutif ResNet-50 (Residual Network à 50 couches), pré-entraîné ou non. Ce modèle est couramment utilisé pour les tâches de classification d’images. Il est disponible dans le module tensorflow.keras.applications.
- EfficientNet : La fonction EfficientNetB0() permet de charger l’architecture du modèle EfficientNetB0, un réseau de neurones convolutif pré-entraîné ou non. EfficientNet est connu pour ses performances exceptionnelles et son efficacité dans l’utilisation des ressources, avec une architecture optimisée qui offre un bon compromis entre précision et performance.