Qu’est-ce qu’une convolution, et pourquoi sur les images ?

Questions d’entrevue Deep learning

Intermédiairecnnvisionarchitecture

Une convolution fait glisser un petit filtre — 3 × 3 par exemple — sur l’ensemble de l’image, et calcule à chaque position une somme pondérée des pixels couverts. Le résultat est une carte d’activation qui indique où le motif reconnu par ce filtre est présent.

Pourquoi c’est le bon outil pour une image

Trois raisons, à donner dans cet ordre :

Le partage des poids. Une couche dense reliant une image de 224 × 224 × 3 à mille neurones demanderait cent cinquante millions de paramètres — pour une seule couche. Un filtre 3 × 3 en compte vingt-sept, réutilisés à toutes les positions. La réduction est de plusieurs ordres de grandeur, et c’est ce qui rend l’entraînement possible.

L’invariance par translation. Un détecteur de contour appris en haut à gauche fonctionne en bas à droite, puisque c’est le même filtre partout. Une couche dense devrait apprendre le même motif séparément à chaque position, et aurait besoin de le voir partout dans les données d’entraînement.

La localité. Un pixel dépend fortement de ses voisins et faiblement des pixels lointains. La convolution encode cette hypothèse dans l’architecture au lieu de la faire apprendre — c’est un a priori structurel, et c’est ce qui explique qu’un réseau convolutif apprenne avec beaucoup moins de données qu’un réseau dense.

Le vocabulaire à maîtriser

  • Noyau — la taille du filtre, généralement 3 × 3.
  • Pas (stride) — le déplacement entre deux positions. Un pas de 2 divise la résolution par deux.
  • Remplissage (padding) — les bords ajoutés pour conserver la taille de sortie.
  • Canaux — la profondeur : trois en entrée pour une image couleur, souvent des centaines dans les couches profondes. Un filtre agit sur tous les canaux d’entrée à la fois, et le nombre de filtres fixe le nombre de canaux de sortie.
  • Champ réceptif — la région de l’image d’origine qui influence une activation donnée. Il grandit avec la profondeur, et c’est ce qui permet aux dernières couches de « voir » des objets entiers alors que chaque filtre reste petit.

La hiérarchie qui en découle, et qu’on attend souvent en réponse : les premières couches détectent des contours et des orientations, les suivantes des textures et des motifs, les dernières des parties d’objets. Cette hiérarchie n’est pas programmée, elle émerge de l’entraînement — et elle est remarquablement stable d’un modèle à l’autre, ce qui explique pourquoi l’apprentissage par transfert fonctionne si bien en vision.

Les variantes à connaître

  • Convolution 1 × 1 : elle ne regarde aucun voisin et sert à mélanger ou réduire les canaux. C’est le goulot d’étranglement des blocs résiduels.
  • Convolution séparable en profondeur : elle décompose l’opération en un filtrage spatial par canal puis un mélange 1 × 1, ce qui divise le calcul par un facteur important. C’est le fondement des architectures mobiles.
  • Convolution dilatée : elle espace les points du filtre pour agrandir le champ réceptif sans coût supplémentaire. Utilisée en segmentation.

Et la mise en perspective qui fait bonne impression : les transformeurs de vision obtiennent aujourd’hui des résultats comparables ou supérieurs, en remplaçant cet a priori local par de l’attention globale. Le prix à payer est le volume de données : sans a priori structurel, il faut beaucoup plus d’exemples ou un très gros pré-entraînement. Sur un jeu de taille modeste, un réseau convolutif reste souvent le meilleur choix.

Toutes les questions Deep learning