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 :

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

Image d'entrée (5x5),     Filtre (3x3),       Feature map (3x3)
┌─────────────┐            ┌───────┐           ┌───────┐
│  1 1 1 0 0  │            │ 1 0 1 │           │ 4 2 1 │
│  1 1 0 0 0  │            │ 0 1 0 │           │ 2 1 0 │
│  1 1 0 0 0  │            │ 1 0 1 │           │ 1 1 0 │
│  0 0 0 0 0  │            └───────┘           └───────┘
│  0 0 0 0 0  │
└─────────────┘

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

Formule de sortie

Soit une image d’entrée de taille W×HW \times H, un filtre de taille F×FF \times F, un pas SS et un padding PP, la taille de sortie OO est :

O=(WF+2P)S+1O = \frac{(W – F + 2P)}{S} + 1


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 :

ReLU(x)=max(0,x)\text{ReLU}(x) = \max(0, x)

Pourquoi utiliser ReLU ?

Alternatives à ReLU


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

Exemple : max pooling 2×2 avec stride 2

Entrée (4×4) Max pooling 2×2 Sortie (2×2)
┌──────┐ ┌────────┐ ┌───-┐
│ 1 3 2 4     │ │ [1 3] [2 4]    │   │ 6 4  │
│ 5 6 1 2     │ │ [5 6] [1 2]    │   │ 8 9  │
│ 7 8 9 0     │ │ [7 8] [9 0]    │   |           |
│ 2 3 4 5     │ │ [2 3] [4 5]    │   |           |
└──────┘ └────────┘ └─ ──┘

Détail des calculs :

  • Zone haut-gauche : max(1, 3, 5, 6) = 6

  • Zone haut-droite : max(2, 4, 1, 2) = 4

  • Zone bas-gauche : max(7, 8, 2, 3) = 8

  • Zone bas-droite : max(9, 0, 4, 5) = 9


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 :

Input (64x64x3)

Conv2D (32 filtres 3x3) + ReLU

MaxPooling2D (2x2)

Conv2D (64 filtres 3x3) + ReLU

MaxPooling2D (2x2)

Flatten

Dense (128) + ReLU

Dropout (0.5)

Dense (10) + Softmax (si 10 classes)

Schéma global

[Image] → [Conv+ReLU] → [Pooling] → [Conv+ReLU] → [Pooling] → [Flatten] → [Dense] → [Output]

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 :

Dropout(x)={0avec probabiliteˊ pxavec probabiliteˊ 1p\text{Dropout}(x) = \begin{cases} 0 & \text{avec probabilité } p \\ x & \text{avec probabilité } 1-p \end{cases}


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 :

Exemple :

Image d’un chat →
Conv1 détecte les contours →
Conv2 détecte les formes d’oreilles →
Conv3 détecte des motifs de visage →
...
→ Classifie comme "chat"

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 :

Ces techniques exploitent les couches profondes du CNN pour interpréter les décisions du réseau.


Vers les CNN modernes

VGGNet

ResNet

MobileNet, EfficientNet


Bonnes pratiques


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 :

Maîtriser la structure des CNN est une étape essentielle dans la carrière de tout data scientist ou ingénieur en IA.