Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 88

Understanding 2D Convolution and Kernels

Recommended resources

Bonjour ! Dans la leçon précédente, nous avons conclu notre étude des réseaux de neurones classiques en apprenant à utiliser un modèle entraîné pour faire des prédictions. Vous maîtrisez maintenant le cycle de vie complet d'un modèle PyTorch, de sa création à son déploiement.

Aujourd'hui, nous ouvrons un nouveau chapitre passionnant : les architectures spécialisées en apprentissage profond. Nous allons commencer par le type de réseau qui a révolutionné la vision par ordinateur. L'objectif de cette leçon est d'expliquer l'opération de convolution 2D et le rôle des noyaux (ou filtres). Cette opération est le cœur des Réseaux de Neurones Convolutifs (CNNs) et représente une approche fondamentalement différente du traitement des données par rapport aux réseaux entièrement connectés que nous avons étudiés jusqu'à présent.

1. Pourquoi les images posent-elles un problème aux réseaux classiques ?

Jusqu'à présent, nous avons travaillé avec des données tabulaires, où chaque ligne est une observation et chaque colonne une caractéristique (une feature). Pour alimenter ces données dans un réseau de neurones entièrement connecté (fully connected network), nous utilisons un vecteur d'entrée où chaque élément correspond à une feature.

Mais que se passe-t-il si notre donnée est une image ? Une image en niveaux de gris est une matrice 2D de pixels. Une image en couleur est une matrice 3D (hauteur, largeur, 3 canaux de couleur R, G, B). Pour la traiter avec un réseau entièrement connecté, l'approche la plus simple est d'aplatir cette matrice en un très long vecteur.

Cette méthode pose deux problèmes majeurs :

  1. Perte d'information spatiale : En aplatissant l'image, on perd la structure spatiale. Des pixels qui étaient voisins dans l'image se retrouvent éloignés dans le vecteur. Le réseau doit alors réapprendre, au prix d'un effort considérable, que certains pixels sont structurellement liés (par exemple, ils forment une ligne, un contour, etc.).
  2. Explosion du nombre de paramètres : Une image modeste de 224x224 pixels en couleur a 224 x 224 x 3 = 150 528 pixels. Si la première couche cachée du réseau contient 1000 neurones, cela représente plus de 150 millions de poids juste pour cette première connexion ! C'est énorme, rendant le modèle lent à entraîner, gourmand en mémoire et très sujet au surapprentissage.

La vidéo suivante, en arabe, introduit très bien ces défis et explique pourquoi une approche spécialisée comme les CNNs est nécessaire pour les images.

Convolutional Neural Networks (CNN) For Beginners In Arabic | شرح بالعربي

Cette vidéo de la chaîne Ahmad Alseirafi explique pourquoi les réseaux de neurones classiques (ANN) ne sont pas idéaux pour le traitement d'images.

Regardez le début de la vidéo où l'on compare les CNNs aux ANNs pour le traitement d'images. Concentrez-vous sur les deux problèmes mentionnés : l'aplatissement de l'image qui détruit l'information spatiale et le nombre gigantesque de paramètres que cela engendre.


2. L'opération de convolution : une solution élégante

Pour surmonter ces limites, les CNNs utilisent une opération mathématique appelée convolution. L'idée fondamentale est de ne pas traiter tous les pixels à la fois, mais d'analyser l'image localement à l'aide d'un petit "scanner" qui recherche des motifs spécifiques.

Ce "scanner" est appelé un noyau (kernel) ou un filtre (filter). Il s'agit simplement d'une petite matrice de poids (par exemple, 3x3 ou 5x5). Ce filtre va glisser sur toute l'image, et à chaque position, il va effectuer une opération simple : une multiplication élément par élément avec la partie de l'image qu'il recouvre, suivie d'une somme de tous les résultats. Le nombre obtenu est une nouvelle valeur de pixel dans une image de sortie, appelée carte de caractéristiques (feature map).

L'image ci-dessous illustre un seul pas de cette opération.

Le noyau convolutif (au centre) se superpose à une région de la couche source (l'image d'entrée). Les valeurs correspondantes sont multipliées puis additionnées pour produire une seule valeur (ici, 5) dans la couche de destination (la carte de caractéristiques).

Le processus complet consiste à faire glisser ce noyau sur toute l'image pour générer la carte de caractéristiques complète, comme le montre l'animation suivante.

Cette animation montre comment le noyau (la petite matrice) glisse sur l'image d'entrée pour calculer chaque valeur de la carte de sortie.

Le tutoriel de Neuromatch Academy que nous allons lire formalise cette idée et souligne les avantages de cette approche.

Tutorial 2: Convolutional Neural Networks

Ce tutoriel de Neuromatch Academy fournit une excellente introduction technique à la convolution 2D et à son rôle en deep learning.

Commencez par lire la section "What is a 2D convolution?" pour voir la définition mathématique de l'opération. Ensuite, lisez la section "2D convolutions in deep learning". Portez une attention particulière aux deux avantages clés mentionnés par rapport aux couches entièrement connectées : les champs récepteurs locaux (local receptive fields) et le partage de poids (weight-sharing).

Le partage de poids est un concept crucial : c'est le même filtre (le même ensemble de poids) qui est utilisé sur toute l'image. Au lieu d'avoir un poids unique pour chaque pixel, nous n'avons que les quelques poids du filtre (par exemple, 9 poids pour un filtre 3x3). C'est ce qui rend les CNNs si efficaces en termes de nombre de paramètres.

Pour une explication pas à pas en arabe, la vidéo suivante est très claire.

Convolutional Neural Networks (CNN) For Beginners In Arabic | شرح بالعربي

Cette vidéo continue son explication en détaillant l'opération de convolution.

Regardez d'abord la section qui définit les filtres et leur rôle dans l'extraction de caractéristiques comme les contours. Puis, suivez attentivement l'explication pas à pas de l'opération de convolution, qui montre comment le filtre se déplace et comment les valeurs de sortie sont calculées.


3. Le rôle des filtres : les détecteurs de caractéristiques

Maintenant, la question clé est : à quoi servent ces filtres ? Chaque filtre est un détecteur de caractéristiques. Un filtre est conçu (ou, comme nous le verrons, appris) pour s'activer fortement lorsqu'il rencontre un motif spécifique dans l'image.

Dans les premières couches d'un CNN, ces motifs sont très simples :

  • Contours horizontaux
  • Contours verticaux
  • Contours diagonaux
  • Taches de couleur

L'article suivant de DigitalOcean illustre parfaitement ce concept en utilisant des filtres "classiques" de traitement d'image, qui ont été conçus manuellement. Cela nous donne une intuition formidable de ce que font les filtres dans un CNN.

Understanding Filters in Convolutional Neural Networks ...

Cet article explique de manière très intuitive comment les filtres agissent comme des détecteurs de contours.

Lisez d'abord la section "CNNs and Human Vision" pour comprendre l'analogie avec la vision humaine. Ensuite, parcourez rapidement les sections "Filtering Out Edges" et "Prewitt Filters" pour voir des exemples de filtres de détection de contours. Enfin, lisez attentivement la section "Filter Notations". Elle explique avec un exemple simple et visuel comment un filtre horizontal détecte un contour vertical, en montrant les calculs. C'est un point crucial pour bien comprendre le mécanisme.

Comme vous l'avez vu, un filtre avec une structure [1, 0, -1] le long d'une ligne s'activera lorsqu'il y a un changement de valeur de pixel (un contour) dans cette direction. Les couches plus profondes du réseau combineront ensuite ces caractéristiques simples pour détecter des motifs plus complexes : des yeux (combinaison de courbes et de cercles), des nez, puis des visages entiers.


4. La magie du Deep Learning : des filtres qui s'apprennent

Dans le traitement d'image classique, les ingénieurs devaient concevoir manuellement ces filtres (Sobel, Prewitt, Gabor, etc.). Le génie des CNNs est que les valeurs des filtres sont les paramètres apprenables du modèle.

Tout comme un réseau entièrement connecté apprend les poids optimaux W et les biais b pendant l'entraînement, un réseau convolutif apprend les valeurs de ses filtres. Via la rétropropagation, le réseau ajuste les poids de ses filtres pour qu'ils deviennent des détecteurs de caractéristiques de plus en plus pertinents pour la tâche à accomplir (par exemple, différencier un chat d'un chien). Un filtre pourrait apprendre à détecter des oreilles pointues, un autre un museau, etc.

La fin de la vidéo d'Ahmad Alseirafi conclut parfaitement sur ce point.

Convolutional Neural Networks (CNN) For Beginners In Arabic | شرح بالعربي

Cette dernière partie de la vidéo explique le point le plus important : dans un CNN, les filtres ne sont pas fixes, ils sont appris.

Regardez la section qui explique que les filtres sont les poids que le réseau apprend pendant l'entraînement. C'est l'essence même de l'apprentissage dans les CNNs.


Conclusion

Dans cette leçon, nous avons plongé au cœur des réseaux de neurones modernes pour la vision par ordinateur. Vous avez découvert l'opération qui a tout changé : la convolution 2D.

Points clés à retenir :

  • Les réseaux entièrement connectés sont inefficaces pour les images car ils ignorent la structure spatiale et ont trop de paramètres.
  • L'opération de convolution utilise un petit noyau (ou filtre) qui glisse sur l'image pour calculer une carte de caractéristiques.
  • Cette approche est efficace grâce au partage de poids (le même filtre est réutilisé partout) et se concentre sur les relations locales.
  • Le but d'un filtre est d'agir comme un détecteur de caractéristiques, s'activant lorsqu'il rencontre un motif spécifique (contour, texture, etc.).
  • Dans les CNNs, les filtres ne sont pas conçus manuellement ; leurs valeurs sont les poids du modèle, appris automatiquement pendant l'entraînement pour extraire les caractéristiques les plus utiles à la tâche.

Maintenant que vous comprenez le bloc de construction fondamental, la prochaine leçon assemblera les pièces du puzzle. Nous verrons comment empiler ces couches convolutives et les combiner avec un autre type de couche, la couche de pooling, pour construire une architecture de Réseau de Neurones Convolutif (CNN) complète.