#cnn-filtres — Réseaux de neurones
Une image est une grille de nombres. Un filtre 3×3 glisse dessus, multiplie, additionne : c'est une convolution.
Ce que tu vas manipuler
- Bienvenue dans #cnn-filtres. À gauche, une image
10×10: chaque cube est un pixel, sa hauteur est sa valeur (0 = sombre et plat, 1 = clair et haut). Pour l'ordinateur, une image n'est qu'une grille de nombres. Au-dessus flotte un filtre 3×3 : neuf nombres, rien de plus. On va le faire glisser sur l'image, multiplier pixel par coefficient, puis tout additionner : c'est une convolution. - Pose le filtre sur la première fenêtre : tape
/glisser. Le tuteur détaille les neuf produits pixel × coefficient et leur somme. Ce nombre unique devient le premier cube de la carte de sortie, à droite. - Encore
/glisser. La fenêtre s'est décalée d'un pixel vers la droite (stride 1)… mais le filtre, lui, n'a pas changé : les mêmes neuf nombres servent à toutes les positions. C'est le partage de poids, la grande économie des réseaux convolutifs. - Tape
/toutpour calculer le reste des fenêtres d'un coup. Avec le filtrebord-verticalsur l'imagebord, la carte « s'allume » exactement sur la frontière gauche/droite et reste à zéro partout ailleurs : ce filtre ne voit que les transitions verticales. - Change d'image :
/image croix, puis relance/tout. Seul le trait vertical répond — par ses deux bords, l'un positif, l'autre négatif — tandis que le trait horizontal reste invisible pour ce filtre. Un filtre de bords horizontaux verrait exactement l'inverse : tu l'essaieras à la fin. - Passe au flou :
/filtre flou, puis/tout. Chaque sortie devient la moyenne de ses neuf voisins : les traits s'étalent et s'adoucissent. Le filtre netteté, lui, fait l'inverse : le centre est amplifié (×5), ses voisins retranchés, les contours ressortent. Ces neuf nombres, on les a écrits à la main. Un CNN, lui, les apprend par rétropropagation, pour détecter ce qui est utile à sa tâche. - Dernier réglage :
/stride 2, puis/tout. La fenêtre saute de deux pixels à chaque pas et la sortie rétrécit de8×8à4×4. C'est ainsi (ou avec un pooling) qu'un CNN réduit progressivement ses cartes pour résumer l'image. - À toi de jouer :
/filtre bord-horizontalsur la croix (l'inverse exact du filtre vertical),/filtre nettete,/image cercle,/filtre sobel-x,/relu,/glisserpas à pas,/reinit. Un CNN empile ces couches : la première détecte des bords, la suivante combine les bords en coins, puis en formes, puis en objets. Les vecteurs qui en sortent, tu les verras flotter dans #embeddings-3d.
Commandes du canal
/glisser— Avance le filtre d'une fenêtre et détaille le calcul produit-somme./tout— Calcule toute la carte de sortie d'un coup et l'interprète./filtre <bord-vertical|bord-horizontal|sobel-x|sobel-y|flou|nettete|identite>— Change le filtre 3×3 et remet la carte à zéro./image <croix|diagonale|cercle|damier|bord>— Change l'image d'entrée et remet la carte à zéro./stride <1|2>— Pas de déplacement de la fenêtre : 1 → sortie 8×8, 2 → sortie 4×4./relu— Active ou désactive la ReLU sur la sortie (écrête les négatifs à 0)./reinit— Revient à l'état initial : image bord, filtre bord-vertical, stride 1, sans ReLU.
Glossaire
- Convolution
- Opération qui fait glisser un petit noyau sur l'image et calcule, à chaque position, la somme pondérée des pixels couverts. Le résultat est une nouvelle image : la carte de caractéristiques.
- Noyau
- La petite grille de poids (3×3, 5×5…) qui glisse sur l'image. Dans un CNN, ces poids sont appris ; ici on les choisit à la main pour comprendre.
- Carte de caractéristiques
- Sortie d'une convolution : une image où chaque pixel dit « à quel point le motif du noyau est présent ici ». Un CNN en produit des dizaines par couche.
- Détection de bords
- Un noyau à coefficients positifs d'un côté et négatifs de l'autre répond fort là où l'intensité change brusquement : il « voit » les contours.
- Filtre de Sobel
- Noyau classique de détection de bords qui combine une dérivée dans une direction et un lissage dans l'autre. Sobel-x trouve les bords verticaux, Sobel-y les horizontaux.
- Pas
- De combien de pixels le noyau avance à chaque déplacement. Un pas de 2 divise la taille de la sortie par deux.
- Remplissage
- Bordure de zéros ajoutée autour de l'image pour que la sortie garde la même taille et que les bords soient traités comme le centre.
- Champ récepteur
- Zone de l'image d'entrée qui influence un pixel donné d'une carte. Il grandit avec la profondeur : les couches hautes voient des objets entiers.
- Partage des poids
- Le même noyau est appliqué partout dans l'image : peu de paramètres et invariance par translation — un bord est un bord, où qu'il soit.
Autres canaux du thème Réseaux de neurones
- #neurone — Décomposons un neurone : entrées, poids, somme, activation.
- #dropout — Régularisation par dropout : le meilleur ami des réseaux profonds.
- #activation — Pourquoi une activation ? ReLU, sigmoid, tanh, Leaky ReLU, GELU et le gradient qui disparaît.
- #descente-de-gradient — La perte est un paysage. Le gradient dit où ça monte, on fait un pas dans l'autre sens.
- #rétropropagation — Le graphe de calcul rejoué à l'envers : chaque nœud reçoit ∂L/∂(lui) et la règle de la chaîne fait le reste.
- #sur-apprentissage — Un gros modèle sur peu de données : la frontière de décision se tord jusqu'à mémoriser le bruit.
- #cnn-filtres — Une image est une grille de nombres. Un filtre 3×3 glisse dessus, multiplie, additionne : c'est une convolution.
- #is-it-einstein — Is it Einstein ? Deux visages passent au scanner d’un réseau qui n’a appris qu’Einstein : Haythem → NON, Einstein → OUI. Regarder est gratuit ; toucher est Premium.
- #embeddings-3d — Un mot devient un vecteur : proches dans l'espace = proches en sens, et on peut calculer dessus.