Qu'est-ce qu'un CNN ?
Pour naviguer rapidement, voici les chapitres de cette page :
Les Convolutional Neural Networks sont spécialisés dans le traitement des images. Ils utilisent des opérations convolutives pour détecter des caractéristiques visuelles.
Inspiré par le fonctionnement du cortex visuel animal (travaux de Hubel et Wiesel, puis Yann LeCun avec LeNet-5), le CNN ne regarde pas l'image globale d'un coup. Il la scanne.
- Filtres (Kernels): Imaginez une petite fenêtre qui glisse sur l'image. Ce filtre cherche des motifs spécifiques : d'abord des bords verticaux ou horizontaux, puis (dans les couches profondes) des formes comme des yeux ou des roues.
- Convolution: C'est l'opération mathématique de ce glissement. Elle crée des "cartes de caractéristiques".
- Pooling (Sous-échantillonnage): Pour réduire la complexité, on réduit la taille de l'image en ne gardant que l'information essentielle.
Visualisation CNN
Voici un exemple du traitement d'un CNN pour reconnaitre un chiffre sur une image de 32x32 pixels.
Caractéristiques principales
- Input: L'image de base.
- Couches Convolutives: Détectent des motifs et des caractéristiques
- Pooling: Réduit la dimension de l'image
- Couches Fully Connected: Classification finale
- Applications: Donne pour chacun des 10 chiffres une probabilité que l'image le représente
Si l'on regarde l'architecture, on voit que plusieurs blocs possèdent trois dimentions. L'image n'est pas en 3D, cela représente juste le nombre de couches utilisées par les blocs. Le nombre et le type de blocs est décidé par le developpeur lors de la création du CNN. Le nombre de couches correspond au nombre de paramètres étudiés. Par exemple, pour l'image de base, il y a trois paramètres pour les trois couleurs de base: bleu, vert, rouge.
Comment fonctionnent les matrices de convolution ?
La convolution est l'opération mathématique fondamentale des CNN. Elle consiste à appliquer un petit filtre (appelé noyau ou kernel) sur différentes régions d'une image pour en extraire des caractéristiques.
Le processus étape par étape
Imaginez une petite matrice carrée (généralement 3×3, 5×5 ou 7×7) contenant des nombres appelés poids. Voici comment elle fonctionne :
- Positionnement : Le filtre se place sur la première région de l'image (en haut à gauche)
- Multiplication : Chaque pixel de cette région est multiplié par le poids correspondant du filtre
- Sommation : Tous ces produits sont additionnés pour obtenir une seule valeur
- Glissement : Le filtre se décale vers la droite d'un certain nombre de pixels (appelé "stride"), et l'opération recommence
- Répétition : Une fois qu'on atteint la fin de la ligne, on descend et on recommence
Visualisation — Convolution 3×3
Déplacez le noyau sur l'image pour voir comment la valeur de sortie est calculée. Utilisez le curseur "Stride" pour changer le déplacement du noyau.
Explications des calculs
Supposons une petite région 3×3 d'une image avec ces valeurs de pixels :
Image (région 3×3): Filtre (noyau 3×3): [1 2 3] [0.5 0 -0.5] [4 5 6] [ 1 0 -1 ] [7 8 9] [0.5 0 -0.5] Calcul: (1×0.5) + (2×0) + (3×-0.5) + (4×1) + (5×0) + (6×-1) + (7×0.5) + (8×0) + (9×-0.5) = 0.5 + 0 - 1.5 + 4 + 0 - 6 + 3.5 + 0 - 4.5 = -4 Résultat final: -4
Pourquoi c'est puissant ?
- Détection de motifs : Un filtre peut détecter des bords verticaux, d'autres des bords horizontaux, etc.
- Apprentissage : Le réseau ajuste automatiquement les valeurs des poids du filtre pendant l'entraînement
- Hiérarchie : Les premières couches détectent des motifs simples, les couches profondes détectent des structures complexes
- Efficacité : Partager les mêmes poids à travers l'image réduit considérablement le nombre de paramètres à apprendre
Le Pooling (Sous-échantillonnage)
Après chaque couche convolutive, on applique généralement une opération de pooling pour réduire la dimensionnalité de l'image tout en conservant les informations importantes.
Objectifs du Pooling
- Réduction de la taille : Diminue le nombre de paramètres et le temps de calcul
- Invariance : Rend le réseau plus robuste aux petites transformations de l'image (translation, rotation légère)
- Extraction des caractéristiques : Conserve les informations les plus pertinentes
Types de Pooling courants
Max Pooling : C'est le plus populaire. On divise l'image en petites régions (généralement 2×2) et on garde uniquement la valeur maximale de chaque région.
Average Pooling : Au lieu de prendre le maximum, on calcule la moyenne des valeurs de chaque région. C'est moins courant que le Max Pooling.
Visualisation — pooling sur une matrice de 6×6
Les Couches Fully Connected (Entièrement Connectées)
Après les couches convolutives et de pooling, le CNN utilise une ou plusieurs couches fully connected pour faire la classification finale.
Fonctionnement
Contrairement aux couches convolutives qui travaillent localement sur des régions de l'image, les couches fully connected connectent chaque neurone à tous les neurones de la couche précédente. C'est essentiellement un réseau de neurones classique (MLP).
Processus d'aplatissement (Flattening)
Avant d'entrer dans les couches FC, les cartes de caractéristiques doivent être converties en un vecteur unique :
Par exemple, pour une carte de caractéristiques 6×6×64: (6 pixels de largeur × 6 de hauteur × 64 canaux) Après flattening: vecteur de 6×6×64 = 2304 valeurs [v1, v2, v3, ..., v2304]
Architecture typique
on prend comme exemple un CNN qui doit reconnaitre un chiffre écrit entre 0 et 9.- Couche FC 1 : 2304 neurones → 128 neurones (extraction de motifs complexes)
- Activation : Introduit de la non-linéarité
- Dropout (optionnel) : Réduit le surapprentissage
- Couche FC 2 : 128 neurones → 10 neurones (pour 10 chiffres possibles)
- Softmax : Convertit les 10 valeurs en probabilités (somme = 1)
Résultat final
La couche de sortie produit 10 probabilités, une pour chaque classe. Par exemple :
Sortie du CNN: Chiffre 0: 2% Chiffre 1: 5% Chiffre 2: 88% ← Prédiction: c'est probablement un 2 Chiffre 3: 3% Chiffre 4: 1% Chiffre 5: 1% ... Chiffre 9: 0%