Structure des CNN
Un guide complet pour comprendre les Convolutional Neural Networks
Introduction
Les réseaux de neurones convolutifs, ou CNN (Convolutional Neural Networks), sont l’un des piliers du deep learning, en particulier pour les tâches liées aux images, à la vision par ordinateur et même au traitement du signal audio ou à l’analyse de texte sous forme matricielle.
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.
Pourquoi les CNN ?
Une image 256×256 pixels en couleur contient 3 canaux (RVB), donc 256×256×3 = 196 608 valeurs. Si l’on utilisait un réseau de neurones dense classique, cela nécessiterait un nombre immense de poids, rendant l’apprentissage très coûteux et sujet à l’overfitting. Les CNN résolvent ce problème grâce à deux idées clés :
-
La convolution, qui permet de traiter localement les données et de partager les poids ;
-
Le sous-échantillonnage (pooling), qui permet de réduire la taille des représentations intermédiaires.
Voyons en détail chaque composant d’un CNN.
La couche de convolution
La convolution est le cœur des CNN. C’est ici que l’extraction des caractéristiques a lieu. Une couche de convolution utilise un ou plusieurs filtres (ou noyaux de convolution) pour balayer l’image d’entrée et générer une carte de caractéristiques (feature map).
Schéma d’une convolution simple
Ici, le filtre se déplace sur l’image, effectue des multiplications élément par élément et somme les résultats à chaque position.
Hyperparamètres importants
-
Taille du filtre : souvent 3×3 ou 5×5
-
Stride (pas) : détermine de combien de pixels le filtre se déplace
-
Padding : permet de garder la même taille d’image en ajoutant des bordures (souvent des zéros)
Formule de sortie
Soit une image d’entrée de taille , un filtre de taille , un pas et un padding , la taille de sortie est :
Les canaux de profondeur
Chaque image a plusieurs canaux (1 pour du noir et blanc, 3 pour RVB). De même, chaque filtre convolutif peut avoir plusieurs canaux de profondeur, chacun correspondant à un canal de l’entrée.
Par exemple, un filtre 3x3x3 (hauteur × largeur × profondeur) est appliqué à une image 32x32x3. Le produit de convolution génère un seul plan en sortie. En combinant plusieurs filtres (par exemple 64 filtres), on obtient une sortie avec 64 canaux.
La fonction d’activation
Après chaque convolution, on applique une fonction d’activation non linéaire. La plus courante est la ReLU (Rectified Linear Unit), définie par :
Pourquoi utiliser ReLU ?
-
Elle introduit de la non-linéarité
-
Elle est simple à calculer
-
Elle évite le problème du gradient qui disparaît (comme avec
sigmoid
)
Alternatives à ReLU
-
Leaky ReLU : pour éviter les neurones « morts »
-
ELU, SELU, GELU : utilisées dans certains modèles avancés
Le pooling : réduction spatiale
Le pooling est une opération de sous-échantillonnage qui réduit la taille des cartes de caractéristiques tout en conservant l’information la plus importante. Cela réduit la complexité computationnelle et introduit une forme d’invariance (position, rotation…).
Types de pooling
-
Max pooling : garde la valeur maximale dans une fenêtre (le plus courant)
-
Average pooling : calcule la moyenne
-
Global pooling : réduit chaque carte à une seule valeur
Exemple : max pooling 2×2 avec stride 2
La couche flatten et les couches fully connected
Une fois plusieurs couches convolutionnelles et de pooling appliquées, on a une représentation réduite mais riche de l’image. Il faut maintenant transformer cette structure 3D en un vecteur 1D : c’est le rôle de la couche flatten.
Ce vecteur est ensuite passé à une ou plusieurs couches entièrement connectées (dense), comme dans les réseaux classiques. Cela permet de classer ou de faire une prédiction finale.
L’architecture typique d’un CNN
Voici une architecture CNN typique pour classification d’images :
Schéma global
Le rôle du Dropout
Le dropout est une technique de régularisation : à chaque itération d’entraînement, un certain pourcentage des neurones est mis à 0 aléatoirement. Cela empêche le réseau de trop dépendre de certains neurones et améliore la généralisation.
Formellement :
Le nombre de paramètres
Un grand avantage des CNN est le partage des poids : un filtre de 3x3x3 contient seulement 27 poids, indépendamment de la taille de l’image. Ainsi, les CNN sont bien plus scalables que les réseaux denses.
Exemple : une image 256x256x3 connectée à une couche dense de 100 neurones impliquerait près de 20 millions de paramètres. En CNN, avec quelques filtres, on descend à quelques milliers.
Visualisation des filtres et activations
Comprendre ce qu’un CNN a appris est important. On peut visualiser :
-
Les filtres appris : souvent des détections de bords, motifs, textures
-
Les activations (feature maps) : ce que chaque couche voit
Exemple :
Ces visualisations permettent aussi de détecter les biais ou erreurs du modèle.
Transfert de style et caméras neuronales
Grâce aux CNN, on peut réaliser des applications créatives :
-
Transfert de style : appliquer le style artistique d’une image à une autre (ex. style Van Gogh sur une photo)
-
Heatmaps CAM : visualiser quelles parties de l’image ont influencé la prédiction
Ces techniques exploitent les couches profondes du CNN pour interpréter les décisions du réseau.
Vers les CNN modernes
VGGNet
-
Architecture simple avec plusieurs blocs
Conv + ReLU + Pooling
-
Utilise uniquement des filtres 3×3
-
Très utilisée comme base pour d’autres modèles
ResNet
-
Introduit les connexions résiduelles : l’entrée d’un bloc est ajoutée à sa sortie
-
Résout le problème du gradient qui disparaît
-
Permet d’entraîner des réseaux très profonds (50, 101, 152 couches)
MobileNet, EfficientNet
-
CNNs optimisés pour les appareils mobiles
-
Moins de paramètres, rapide à l’exécution
Bonnes pratiques
-
Toujours normaliser les images en entrée ([0, 1] ou mean-std)
-
Ajouter des couches de batch normalization pour accélérer l’apprentissage
-
Utiliser le data augmentation (rotation, zoom, bruit) pour améliorer la robustesse
-
Ne pas hésiter à pré-entraîner sur des jeux comme ImageNet (transfer learning)
Conclusion
Les CNN ont révolutionné la manière dont nous traitons les données visuelles. Leur structure tire parti de la spatialité des données d’entrée pour extraire des caractéristiques pertinentes de manière efficace et hiérarchique.
Pour résumer :
-
Les convolutions capturent les motifs locaux
-
Le pooling réduit la taille tout en conservant l’essentiel
-
Les couches denses combinent les informations pour prendre des décisions
-
L’utilisation de ReLU, dropout, et normalisation permet de régulariser et d’accélérer l’apprentissage
Maîtriser la structure des CNN est une étape essentielle dans la carrière de tout data scientist ou ingénieur en IA.