4  👁️ Réseaux de Neurones Convolutionnels (CNN)

4.1 Filtrage Spatial Appris

Pluttôt que de regarder chaque pixel d’une image tout seul, un CNN utilise une petite loupe qui glisse sur toute l’image et détecte des motifs locaux (bords, textures) — comme un cartographe qui parcourt le terrain case par case pour dresser une carte des reliefs.

Le passage du traitement de données tabulaires aux grilles de pixels 2D a imposé un saut paradigmatique majeur dans l’histoire du deep learning. Un MLP appliqué à une image traite chaque pixel comme une dimension indépendante, ignorant totalement la structure spatiale intrinsèque : deux pixels voisins ne sont pas distingués de deux pixels aux antipodes. Cette approche est non seulement inefficace computationnellement, mais fondamentalement inadaptée à la nature des données visuelles (CS231n 2026; Wikipedia contributors 2026a; School of Computer Science, BINUS University 2017).

⚖️ MLP vs CNN

4.1.1 Le Principe de Responsabilité Unique Spatiale

Chaque neurone ne regarde qu’une petite fenêtre de l’image (son champ récepteur) — et le même filtre est réutilisé partout, comme le même coup de tampon appliqué sur toute la surface d’une feuille.

La solution réside dans l’application du Principe de Responsabilité Unique (SRP) à l’extraction de caractéristiques : chaque neurone n’est responsable que d’une région locale de l’image, son champ récepteur (receptive field). Cette contrainte architecturale repose sur deux piliers fondamentaux (CS231n 2026; Anonymous 2026) :

  • Connectivité locale : Chaque neurone de la couche convolutionnelle n’est connecté qu’à une fenêtre spatiale de taille F \times F dans la couche précédente, et non à l’ensemble de l’entrée. Cette localité exploite le fait que les corrélations entre pixels sont fortes à courte distance et faibles à longue distance.

🔍 Champ Récepteur

  • Lancer
  • Pause
  • Reset

Étape 1 : Le filtre analyse la région en haut à gauche (neurone h₀,₀).

  • Partage de poids : Un même filtre (kernel) \mathbf{k} \in \mathbb{R}^{F \times F} est appliqué à chaque position spatiale de l’entrée. Ce partage impose une propriété fondamentale : l’équivariance par translation. Si un motif (un bord, une texture) se déplace dans l’image, sa réponse dans la carte de caractéristiques se déplace de la même quantité, sans nécessiter de nouveaux paramètres.

En traitement du signal classique, les filtres de Sobel ou Gaussien sont définis à la main pour détecter des bords ou lisser l’image. Le CNN apprend ses propres noyaux directement depuis les données, optimisant automatiquement l’équilibre entre lissage et différentiation pour la tâche cible.

4.1.2 L’opération de convolution et ses dimensions

La convolution transforme un volume 3D (largeur × hauteur × canaux) en un autre volume, dont la taille dépend de trois réglages : la taille de la loupe (F), son pas de déplacement (S) et le rembourrage des bords (P).

L’opération de convolution transforme un volume d’entrée W_1 \times H_1 \times D_1 (largeur × hauteur × profondeur/canaux) en un volume de sortie W_2 \times H_2 \times D_2 via K filtres de taille F \times F (CS231n 2026) :

W_2 = \frac{W_1 - F + 2P}{S} + 1 \qquad H_2 = \frac{H_1 - F + 2P}{S} + 1 \qquad D_2 = K

  • W_1, H_1 : largeur et hauteur du volume d’entrée.
  • W_2, H_2 : largeur et hauteur du volume de sortie.
  • F : taille spatiale du filtre (kernel).
  • P : padding (largeur de la bordure de zéros ajoutée aux limites de l’image).
  • S : stride (le pas de déplacement du filtre sur l’image).
  • K : le nombre de filtres appliqués (qui donne la profondeur de la sortie D_2).

Chaque filtre produit une carte de caractéristiques (feature map) de taille W_2 \times H_2.

4.1.3 Optimisation GPU

Pour que le GPU puisse traiter des milliers d’images en parallèle, on “déroule” les patches de l’image en une grande matrice, afin de remplacer la convolution par une simple multiplication de matrices — opération que les GPU font extrêmement vite.

Pour maximiser le débit de calcul sur GPU, les frameworks de deep learning reformulent la convolution en multiplication de matrices généralisée (GEMM) via l’algorithme im2col (CS231n 2026) :

  1. Chaque bloc spatial F \times F de l’entrée est déroulé en un vecteur colonne → matrice \mathbf{X}_{\text{col}} \in \mathbb{R}^{(F^2 D_1) \times (W_2 H_2)} (où \in désigne l’appartenance à l’espace des matrices de nombres réels de dimensions correspondantes, voir le Glossaire).
  2. Les K filtres sont déroulés en vecteurs lignes → matrice \mathbf{W}_{\text{row}} \in \mathbb{R}^{K \times (F^2 D_1)}.
  3. La convolution entière devient : \mathbf{Y}_{\text{col}} = \mathbf{W}_{\text{row}} \mathbf{X}_{\text{col}}

Cette reformulation sacrifie de la mémoire (duplication des pixels dans \mathbf{X}_{\text{col}}) pour exploiter les routines d’algèbre linéaire hautement optimisées (cuBLAS, etc.) qui atteignent des dizaines de TFLOPS sur GPU modernes.

4.1.4 Hiérarchie des représentations

Au fur et à mesure qu’on s’enfonce dans les couches, le réseau voit de moins en moins de détails mais de plus en plus de sens : des bords au début, puis des textures, puis des formes, puis des objets entiers — comme passer d’une carte topographique à une carte routierre à une carte des villes.

L’empilement de couches convolutionnelles crée une hiérarchie progressive d’abstraction : les premières couches extraient des primitives élémentaires (bords, gradients de couleur), les couches intermédiaires combinent ces primitives en textures et formes, les couches profondes assemblent ces formes en concepts sémantiques (visages, roues, etc.). C’est cette hiérarchie automatique qui distingue fondamentalement le CNN du MLP et explique ses performances remarquables en vision par ordinateur.

4.2 Pooling et Réduction de Dimensionnalité

Après avoir détecté des motifs dans l’image, le pooling fait le ménage : il compresse chaque petite région en un seul chiffre (le maximum ou la moyenne), réduisant la taille des cartes de caractéristiques comme on résume un long paragraphe en une seule phrase clé.

Le pooling est la deuxième opération fondamentale d’un CNN. Il opère une sous-échantillonnage spatial des cartes de caractéristiques, réduisant leur dimension tout en induisant une forme d’invariance locale. Son rôle est double : diminuer le coût computationnel des couches suivantes et rendre les représentations plus robustes aux petites translations et déformations (Mukherjee 2023; Olu-Ipinlaye and Mukherjee 2025; Wikipedia contributors 2026b).

4.2.1 Types de pooling et leurs propriétés

Chaque opération de pooling parcourt la carte de caractéristiques avec une fenêtre de taille p \times p et un pas S, et agrège les valeurs dans la région \mathcal{R} selon une fonction spécifique (Savyakhosla 2026; Versloot 2020) :

  • Max Pooling \max_{i \in \mathcal{R}} x_i : Sélectionne l’activation la plus forte dans la région. Capture les traits saillants (bords, textures marquées) et est particulièrement efficace pour la détection d’objets à contraste élevé. Idéal sur fond sombre car il retient les activations maximales qui correspondent souvent aux contours.

🔎 Max-Pooling

Image d’Entrée (4x4)

➡️

Sortie Pooled (2x2)

  • Average Pooling \frac{1}{|\mathcal{R}|} \sum_{i \in \mathcal{R}} x_i : Calcule la moyenne spatiale. Produit des représentations plus lisses, mieux adaptées aux tâches de segmentation où la continuité spatiale est importante. Préserve mieux les informations diffuses distribuées sur la région.

  • Min Pooling \min_{i \in \mathcal{R}} x_i : Symétrique au max pooling, utile pour détecter des traits sombres sur fond clair (ex. MNIST inversé). Rarement utilisé seul mais parfois combiné.

  • Global Average Pooling (GAP) : Cas extrême où la fenêtre couvre l’intégralité de la carte de caractéristiques. Produit un scalaire par canal, remplaçant complètement les couches denses terminales. Impose une invariance spatiale totale : peu importe où un motif apparaît dans l’image, sa représentation finale est la même.

🔎 Max vs Average

4.2.2 Global Average Pooling vs Fully Connected

Passer par des couches denses (à la fin du CNN) ressemble à utiliser un interrogatoire détaillé pour obtenir une réponse. Le Global Average Pooling, lui, demande simplement la moyenne de chaque piste et rend le verdict directement — plus économique et souvent tout aussi efficace.

La transition vers la décision finale s’opère selon deux approches (CS231n 2026; Wikipedia contributors 2026a) :

  • Couches denses (FCN + MLP) : Les cartes de caractéristiques sont déroulées (flatten) en un vecteur, puis traitées par une ou plusieurs couches denses. Très expressif mais nécessite une taille d’entrée fixe et génère un grand nombre de paramètres.

  • Global Average Pooling (GAP) : Une moyenne par canal entier compresse chaque carte de caractéristiques en un scalaire. La sortie du réseau convolutionnel devient directement un vecteur de classification, sans couche dense intermédiaire. Le GAP est structurellement plus flexible (accepte des images de tailles variables) et agit comme un régularisateur naturel.

La distinction stratégique : un réseau Fully Convolutional peut être entraîné à se comporter comme un GAP, tandis que le GAP ne peut pas représenter le routage localisé d’un FCN. Dans les architectures modernes (ResNet, EfficientNet), le GAP avant la couche de classification finale est devenu le standard.

4.2.3 Le Problème Picasso

Le pooling rend le réseau aveugle aux positions relatives des éléments : il peut reconnaître un visage même si les yeux et la bouche sont à l’envers — comme un cherche-mot qui trouve tous les bons mots mais ignore leur ordre dans le texte.

Le pooling introduit cependant une limitation fondamentale. En jetant les coordonnées précises des activations, il crée une invariance qui peut devenir une nuisance. Un CNN avec max pooling peut reconnaître un visage même si les yeux sont à la place de la bouche — les parties sont présentes mais dans le mauvais ordre spatial. C’est ce que Hinton appelle le “Problème Picasso” : incapacité à vérifier la cohérence géométrique globale des composants. Cette limitation motive directement les Capsule Networks présentés en section suivante.

4.3 Évolution des Architectures de Vision

Chaque grande architecture CNN a résolu un problème spécifique : VGG a montré que de nombreuses petites loupes valent mieux qu’une grande, ResNet a ajouté des raccourcis pour que le gradient ne se perde plus dans la profondeur, et ViT a tout remis à plat en traitant l’image comme une phrase.

L’histoire des CNN est une quête continue pour surmonter les obstacles de la profondeur : comment entraîner des réseaux de plus en plus profonds sans que le gradient ne disparaisse ? Cette quête a produit trois architectures fondatrices qui définissent encore l’état de l’art (Liu and Goh 2025; Radečić 2026; Adaloglou 2020).

4.3.1 VGG et Petits Filtres

Pluttôt qu’une grande loupe, VGG utilise plusieurs petites loupes en série : deux couches de 3\times3 voient la même zone qu’une couche 5\times5 mais avec moins de paramètres et plus de non-linéarité.

VGG (Simonyan & Zisserman, 2014) a démontré qu’un empilement de filtres 3 \times 3 surpasse l’utilisation de grands filtres. Deux couches consécutives de 3 \times 3 ont le même champ récepteur effectif qu’une couche de 5 \times 5, mais avec moins de paramètres (2 \times 3^2 = 18 vs 5^2 = 25) et deux applications de non-linéarité au lieu d’une.

Cependant, au-delà de 20 couches, VGG souffre du problème classique de dégradation : l’exactitude sur l’ensemble d’entraînement commence à se dégrader lorsque la profondeur augmente trop, même en l’absence de sur-apprentissage. Ce phénomène paradoxal (un réseau plus profond est théoriquement plus expressif, donc ne devrait pas faire pire) a motivé l’invention des connexions résiduelles.

4.3.2 ResNet et Autoroute du Gradient

ResNet ajoute des raccourcis qui court-circuitent chaque bloc de couches : si le bloc n’apprend rien d’utile, le signal passe directement sur l’autoroute sans être dégradé — ce qui permet d’empiler des centaines de couches sans que le gradient ne s’effondre.

ResNet (He et al., 2016) résout la dégradation par les connexions résiduelles (skip connections ou shortcut connections) (Kak 2025; Simon, Perkins, and Zhang 2017; Panigrahi, Chen, and Kuo 2018) :

\mathbf{y} = \mathcal{F}(\mathbf{x}, \{\mathbf{W}_i\}) + \mathbf{x}

Au lieu d’apprendre directement la transformation \mathcal{H}(\mathbf{x}), le réseau apprend le résidu \mathcal{F}(\mathbf{x}) = \mathcal{H}(\mathbf{x}) - \mathbf{x}. Si la transformation optimale est proche de l’identité (ce qui est courant dans les couches profondes), apprendre \mathcal{F} \approx 0 est beaucoup plus facile qu’apprendre \mathcal{H} \approx \mathbf{x}.

L’effet sur la rétropropagation est décisif. Le gradient s’écrit :

\frac{\partial \mathcal{L}}{\partial \mathbf{x}} = \frac{\partial \mathcal{L}}{\partial \mathbf{y}} \left(\frac{\partial \mathcal{F}}{\partial \mathbf{x}} + \mathbf{I}\right)

Le terme +\mathbf{I} crée une autoroute directe pour le gradient : même si \frac{\partial \mathcal{F}}{\partial \mathbf{x}} \approx 0 (gradient vanescent), le gradient global reste \frac{\partial \mathcal{L}}{\partial \mathbf{y}}. Les connexions résiduelles permettent ainsi d’entraîner des réseaux de 150+ couches.

graph TD
    classDef layer fill:var(--sol-base03),stroke:var(--accent-info),stroke-width:2px,color:var(--accent-info);
    classDef skip  fill:var(--sol-base03),stroke:var(--accent-success),stroke-width:2px,color:var(--accent-success);
    classDef sum   fill:var(--sol-base03),stroke:var(--accent-warning),stroke-width:2px,color:var(--accent-warning);

    X["Entrée x"]:::layer
    C1["Conv 3×3 + BN + ReLU"]:::layer
    C2["Conv 3×3 + BN"]:::layer
    Skip["Identité (skip)"]:::skip
    Add["⊕ Somme\nF(x) + x"]:::sum
    Act["ReLU"]:::layer
    Y["Sortie y"]:::layer

    X --> C1 --> C2 --> Add
    X --> Skip --> Add
    Add --> Act --> Y

L’interaction ResNet + Batch Normalization : La BN et les connexions résiduelles travaillent en synergie (Panigrahi, Chen, and Kuo 2018; Kak 2025). Sans BN, la variance du gradient peut exploser dans les branches résiduelles même avec les skip connections. Avec BN, la variance est maintenue dans une plage stable à chaque couche, ce qui permet d’aller encore plus profond.

4.3.3 Vision Transformer

Plutôt que de glisser une loupe sur l’image, le ViT découpe l’image en carrés (patchs) et les traite comme une séquence de mots — permettant à chaque carré d’“attendre” et de peser l’importance de n’importe quel autre carré, même à l’autre bout de l’image.

Le Vision Transformer (Lightly AI 2026; alka1974 2025; Mehra 2025) rompt avec le paradigme de la localité convolutionnelle. L’image de taille H \times W est découpée en N patchs de taille P \times P (avec N = HW/P^2), chacun déroulé en un vecteur et projeté linéairement en un embedding de dimension D.

Deux composants sont critiques pour la compréhension globale (Lightly AI 2026) :

  • Token de classification [CLS] : Un vecteur appris ajouté à la séquence de patchs. À la fin du Transformer, c’est l’état de ce token qui est utilisé pour la classification — il agrège l’information globale de tous les patchs via les couches d’attention.

  • Encodages positionnels 1D : Le mécanisme d’attention est par nature invariant à la permutation — il ne sait pas si le patch 7 est adjacent au patch 8. Les encodages positionnels injectent cette information structurelle, permettant au ViT de comprendre la topologie spatiale de l’image.

📊 Comparaison des Architectures de Vision

CNN vs ViT : un arbitrage biais inductif / données disponibles — Le CNN possède un fort biais inductif (localité, équivariance par translation) qui lui permet d’apprendre efficacement avec peu de données. Le ViT doit tout apprendre depuis zéro, ce qui exige des dizaines de millions d’images pour battre les CNN — mais offre ensuite une meilleure scalabilité et une compréhension plus globale de la scène (Amgadoz 2025; Lightly AI 2026).

4.4 Détection d’Objets et Alternatives Architecturales

Reconnaître un objet, c’est bien. Dire où il est et lequel c’est en une seule passe sur l’image, c’est mieux. YOLO fait cela en pari sur une régression directe ; les Capsule Networks font mieux encore en retenant aussi la géométrie des relations entre les parties détectées.

La détection d’objets — localiser et classer simultanément des objets dans une image — constitue l’une des tâches les plus exigeantes de la vision par ordinateur. Elle a suscité deux lignes architecturales majeures : les détecteurs à régression directe (YOLO) et les architectures à équivariance vectorielle (Capsule Networks) (Konyrev 2023; Sabour, Frosst, and Hinton 2017; CS231n 2026).

4.4.1 YOLO en Régression Globale

YOLO divise l’image en grille et demande à chaque case : “y a-t-il quelque chose ici, et si oui quoi ?” — tout cela en une seule lecture de l’image, sans étape intermédiaire de proposition de régions.

YOLO (You Only Look Once, Redmon et al., 2016) révolutionne la détection en la reformulant comme un problème de régression unique sur toute l’image, éliminant les pipelines en deux étapes (proposition de régions + classification) des approches R-CNN (Konyrev 2023; pawangfg 2025; Kili Technology 2023).

Principe : L’image est divisée en une grille S \times S. Chaque cellule prédit B boîtes englobantes (bounding boxes) avec leur score de confiance et C probabilités de classe. La sortie est un tenseur de taille S \times S \times (B \times 5 + C).

Fonction de perte SSE stratégiquement pondérée — La perte combine plusieurs termes avec des poids distincts pour éviter l’instabilité d’apprentissage (voir le Glossaire) (Ara Intelligence 2022; Educative 2026) :

$$ = {} {}

  • {} {} + {} {} + _{} $$

  • x, y, w, h : les coordonnées réelles de la boîte (centre x, y, largeur w, hauteur h).

  • La notation chapeau \hat{} (ex: \hat{x}, \hat{y}, \hat{w}, \hat{h}) : représente la prédiction estimée par le modèle.

  • \sum_{\text{box}} : sommation sur toutes les boîtes prédites.

  • \lambda_{\text{coord}}, \lambda_{\text{obj}}, \lambda_{\text{noobj}} (lettres grecques lambda) : facteurs de pondération (hyperparamètres) de la perte (avec \lambda_{\text{coord}} = 5 et \lambda_{\text{noobj}} = 0{,}5).

  • \mathcal{L}_{\text{conf}}, \mathcal{L}_{\text{conf,vide}}, \mathcal{L}_{\text{classe}} : les composants de la fonction de perte pour la confiance (objet présent), la confiance (boîte vide), et la classe.

L’astuce de la racine carrée pour w et h : Plutôt que de pénaliser directement (w - \hat{w})^2, YOLO pénalise (\sqrt{w} - \sqrt{\hat{w}})^2. Puisque \frac{d}{dx}\sqrt{x} = \frac{1}{2\sqrt{x}}, la pente est plus forte pour les petites valeurs de x. Ainsi, une erreur de 10 pixels sur une petite boîte est pénalisée bien plus sévèrement que sur une grande boîte — comportement souhaitable pour préserver la précision sur les petits objets (AIknow 2026).

NMS et IoU : En post-traitement, le Non-Maximum Suppression (NMS) élimine les boîtes redondantes. Pour chaque paire de boîtes, l’Intersection over Union (IoU) est calculée (voir le Glossaire) :

\text{IoU} = \frac{\text{Aire}(B_1 \cap B_2)}{\text{Aire}(B_1 \cup B_2)}

  • \cap (opérateur d’intersection) : représente la zone où les deux boîtes B_1 et B_2 se chevauchent.
  • \cup (opérateur d’union) : représente la zone totale englobée par l’union des deux boîtes.

Si l’IoU dépasse un seuil (typiquement 0,5), la boîte avec le score de confiance le plus faible est supprimée.

🎯 Grille YOLO

4.4.2 Capsule Networks

Là où un neurone classique ne retient qu’une intensité (“y a-t-il un bord ?”), une capsule retient également sa position, son orientation et son échelle — comme un GPS qui donne non seulement “tu es sur Paris” mais aussi “tu es à 45° nord-est, à 100m d’altitude”.

Les Capsule Networks (Sabour, Frosst & Hinton, 2017) constituent une réponse architecturale au Problème Picasso des CNN (Sabour, Frosst, and Hinton 2017; Pechyonkin 2017; Fritz AI 2023). Leur innovation fondamentale : remplacer les scalaires d’activation par des vecteurs dont la direction encode les paramètres de pose d’une entité (position, orientation, échelle, déformation).

La fonction de squashing : Pour garantir que la longueur du vecteur capsule représente une probabilité (entre 0 et 1) tout en préservant son orientation (voir le Glossaire) :

\mathbf{v}_j = \frac{\|\mathbf{s}_j\|^2}{1 + \|\mathbf{s}_j\|^2} \cdot \frac{\mathbf{s}_j}{\|\mathbf{s}_j\|}

  • \mathbf{v}_j : le vecteur d’activation final de la capsule j.
  • \mathbf{s}_j : le vecteur d’entrée pondéré reçu par la capsule j.
  • \|\cdot\| (norme Euclidienne) : mesure la longueur géométrique du vecteur.

Le premier terme compresse la magnitude dans [0,1) ; le second préserve la direction unitaire du vecteur. Contrairement à la sigmoïde appliquée à des scalaires, cette opération maintient l’information directionnelle.

Le routage dynamique (Dynamic Routing) : Les capsules de bas niveau (détecteurs de primitives) “votent” pour les capsules de haut niveau (détecteurs de concepts complexes). Une capsule de bas niveau i prédit l’état de la capsule parente j via une transformation affine :

\hat{\mathbf{u}}_{j|i} = \mathbf{W}_{ij} \mathbf{u}_i

  • \hat{\mathbf{u}}_{j|i} : le vecteur de prédiction de la capsule parente j émis par la capsule enfant i.
  • La notation j|i (indice j sachant i) : désigne une valeur relative ou une prédiction d’une entité j calculée à partir d’une entité i.
  • \mathbf{W}_{ij} : la matrice de poids de transformation affine entre les couches i et j.
  • \mathbf{u}_i : le vecteur d’activation de la capsule inférieure i.

Le mécanisme d’accord itératif renforce les connexions entre capsules dont les prédictions concordent et affaiblit celles qui divergent. Ce routage remplace avantageusement le pooling en préservant les relations spatiales entre les parties.

graph LR
    classDef low  fill:var(--sol-base03),stroke:var(--accent-info),stroke-width:2px,color:var(--accent-info);
    classDef high fill:var(--sol-base03),stroke:var(--sol-magenta),stroke-width:2px,color:var(--sol-magenta);
    classDef rout fill:var(--sol-base03),stroke:var(--accent-warning),stroke-width:2px,color:var(--accent-warning);

    E1["Capsule Bord\n(bas niveau)"]:::low
    E2["Capsule Courbe\n(bas niveau)"]:::low
    E3["Capsule Angle\n(bas niveau)"]:::low

    R["Routage Dynamique\n(accord par vote)"]:::rout

    F1["Capsule Visage\n(haut niveau)"]:::high
    F2["Capsule Main\n(haut niveau)"]:::high

    E1 & E2 & E3 --> R --> F1 & F2

Synthèse : invariance vs équivariance — Les CNN avec pooling obtiennent une invariance : l’objet est détecté quelle que soit sa position, mais son emplacement précis est perdu. Les Capsule Networks obtiennent une équivariance : si l’objet tourne, le vecteur d’activité tourne de concert dans l’espace des paramètres, préservant la fidélité spatiale. Cette distinction est fondamentale pour des tâches où la géométrie des relations entre parties est critique (reconnaissance de poses, chirurgie robotique, robotique de manipulation).

Critère CNN + Pooling Capsule Networks
Invariance spatiale ✅ Forte ✅ Contrôlée
Équivariance de pose
Scalabilité ❌ (coût de routage)
Robustesse aux occlusions Faible Meilleure
Données requises Modérées Élevées