Aire de jeu convolution et cartes de caractéristiques

découvrez quels motifs visuels survivent à chaque choix de noyau

Chargement de la simulation interactive...

Sans remplissage, un réseau profond fait disparaître l’image 🖖

Avec un noyau 3×3 sans remplissage et un pas de 1, vous perdez un pixel sur chaque bord : l’entrée 28×28 de cet outil produit donc une sortie 26×26. Cela paraît négligeable, mais l’effet s’accumule : après dix couches, il ne reste que 8×8 pixels ; après quatorze, plus rien. C’est précisément la raison d’être du remplissage « same » : une bordure d’un pixel ramène la sortie aux dimensions de l’entrée et permet de construire un réseau aussi profond que vous le souhaitez. Le pas agit autrement, par division plutôt que par soustraction : avec un pas de 2, le flou transforme 28×28 en 14×14 dès la première couche. Les deux réglages de cet outil ne sont donc pas de simples détails : ils déterminent combien de couches votre architecture peut comporter avant que l’image ne disparaisse.

Une petite fenêtre qui glisse 🖖

Une convolution fait glisser une petite grille de nombres, le noyau, sur l'image. À chaque position, elle multiplie les valeurs qui se recouvrent et les additionne en un seul pixel de sortie. Le résultat est une carte de caractéristiques qui s'éclaire là où le motif du noyau apparaît. Essayez ici le noyau de détection de contours : les zones uniformes s'assombrissent et les frontières s'illuminent, car le noyau réagit au changement, pas à la luminosité elle-même.

Ce n'est pas vraiment une convolution 🖖

L'opération que presque tout CNN appelle « convolution » est en fait une corrélation croisée. La vraie convolution mathématique retourne d'abord le noyau de haut en bas et de gauche à droite avant de le faire glisser ; les bibliothèques d'apprentissage profond omettent ce retournement. Comme le réseau apprend de toute façon les poids, un noyau retourné serait simplement appris à l'envers et donnerait un résultat identique, d'où la persistance de cette appellation erronée. Avec un noyau symétrique comme le flou, les deux sont indiscernables.

Idée fausse courante

Une carte de caractéristiques plus profonde n'est pas toujours "meilleure". Un stride élevé ou des noyaux agressifs peuvent supprimer des informations dont les couches suivantes avaient besoin.

Problème entièrement résolu

  1. Taille de la carte de sortie pour une carte d'entrée 28×28 et un noyau sobel-x 3×3 6 étapes

    La couche : une carte d'entrée de 28×28, un noyau sobel-x de 3×3, un pas de 1, un rembourrage identique. Calculez la taille de la carte de sortie et le coût d'une passe en multiplications-additions — puis déterminez combien de telles couches doivent être empilées avant qu'un seul pixel de sortie ne dépende de chaque pixel de l'image.

    1. Le rembourrage fixe la taille, il faut donc s'en occuper en premier. identique ajoute une bordure de zéros d'un pixel autour de la carte, ce qui suffit exactement pour qu'une fenêtre de 3×3 soit centrée sur un pixel de coin au lieu de dépasser du bord. La bordure dont un noyau a besoin correspond à sa moitié, sans compter le centre.

    2. Faites glisser la fenêtre le long d'une ligne. Son bord gauche commence à 0 et avance du pas jusqu'à ce que son bord droit atteigne la fin de la ligne rembourrée ; le décompte des pixels de sortie est donc un comptage de piquets : le nombre d'avancées, plus 1 pour la position de départ. À un pas de 1, la bordure restitue exactement les 2 colonnes que le noyau retire, ce qui explique le nom identique.

    3. Chacun des 784 pixels de sortie est une somme pondérée de 9 valeurs d'entrée. Additionnez les poids de sobel-x et ils s'annulent pour donner 0 ; ainsi, toute fenêtre dont les 9 entrées sont égales renvoie exactement 0, quelle que soit la luminosité de cette région. La carte devient sombre partout où l'image est uniforme et ne réagit que là où la colonne de gauche de la fenêtre diffère de celle de droite.

    4. Le bilan arithmétique s'ensuit : 9 multiplications-accumulations par pixel de sortie, un pixel de sortie par position de fenêtre. Le panneau affiche ce décompte.

    5. La profondeur est la partie intéressante. Après une couche, un pixel de sortie voit 3 pixels d'entrée en largeur. Ajoutez-en une deuxième et chacun de ces 3 pixels était lui-même une fenêtre de 3 — mais les fenêtres voisines se chevauchent de 2, la portée atteint donc 5 et non 9. Chaque couche supplémentaire de 3×3 à pas de 1 l'élargit d'exactement 2.

    6. Fixez la portée pour couvrir l'ensemble des 28 colonnes et déterminez la profondeur. 13 couches atteignent 27 et manquent d'une colonne ; la 14e est la première dont les pixels de sortie peuvent être influencés par l'image entière.

    Réponse

    Sortie 28×28, 7056 multiplications-additions par couche, et 14 couches avant qu'un pixel ne voie toute l'image. Calculez maintenant ce que coûte cette portée. Les 14 couches empilées effectuent 14 × 9 = 126 multiplications-accumulations par pixel de sortie. Une seule couche atteignant la même portée nécessite un noyau de 29×29, soit 841 par pixel de sortie — 6,7 fois plus d'arithmétique pour exactement le même champ récepteur. La profondeur offre cette portée à bien moindre coût que la largeur, c'est pourquoi les réseaux de vision sont de longs empilements de noyaux de 3×3 plutôt que de courts empilements de grands noyaux.

Références (1)
  • Insight block 3 — the operation called convolution is cross-correlation: I. Goodfellow, Y. Bengio and A. Courville, Deep Learning, ch. 9. MIT Press, 2016. ISBN 978-0-262-03561-3 — "many machine learning libraries implement cross-correlation but call it convolution".

Exemples de problèmes

  • chiffre sobel-x - La somme des coefficients de Sobel-x est nulle : toute zone uniforme devient noire, et seules les variations verticales subsistent. Avec un remplissage « same » et un pas de 1, la sortie conserve ses dimensions de 28 × 28.
  • contours de formes - La somme des coefficients du noyau de détection des contours est également nulle : le 8 central compense les huit coefficients −1. Les zones uniformes disparaissent ; seuls les contours subsistent. La sortie reste au format 28 × 28.
  • flou + stride 2 - C’est le seul préréglage qui réduit les dimensions par division : avec un pas de 2, 28 × 28 devient 14 × 14, soit quatre fois moins de pixels. La somme des coefficients du filtre de flou vaut 1 ; la luminosité est donc préservée, même lorsque les détails s’effacent.
  • netteté valid - C’est le seul préréglage qui réduit les dimensions par soustraction : le remplissage « valid » transforme 28 × 28 en 26 × 26 en retirant un pixel sur chaque bord. La somme des coefficients du filtre d’accentuation vaut 1 ; les zones uniformes conservent leur niveau, tandis que les contours sont renforcés.