Pratique du ML: classification d'images

Présentation des réseaux de neurones convolutifs

La construction de modèles de classification d'images a connu une avancée majeure avec la découverte qu'un réseau de neurones convolutif pouvait être utilisé pour extraire progressivement des représentations de plus en plus élevées du contenu des images. Au lieu de prétraiter les données pour obtenir des caractéristiques telles que des textures et des formes, un réseau de neurones convolutif utilise uniquement les données de pixels brutes de l'image comme entrée et apprend à apprendre à extraire ces caractéristiques et à déduire quel objet elles constituent.

Pour commencer, le réseau de neurones convolutif reçoit une carte de caractéristiques d'entrée: une matrice tridimensionnelle dans laquelle la taille des deux premières dimensions correspond à la longueur et à la largeur des images en pixels. La taille de la troisième dimension est de 3 (correspondant aux 3 canaux d'une image en couleur: rouge, vert et bleu). Le réseau de neurones convolutif comprend une pile de modules, qui effectuent chacun trois opérations.

1. Produit de convolution

Une convolution extrait les tuiles de la carte de caractéristiques d'entrée et leur applique des filtres pour calculer de nouvelles caractéristiques, produisant ainsi une carte de caractéristiques de sortie, ou caractéristique convoluée (qui peut avoir une taille et une profondeur différentes de celles de la carte de caractéristiques d'entrée). Les convolutions sont définies par deux paramètres:

  • Taille des tuiles extraites (généralement 3x3 ou 5x5 pixels).
  • Profondeur de la carte de caractéristiques de sortie, qui correspond au nombre de filtres appliqués.

En cas de convolution, les filtres (matrices de la même taille que la tuile) glissent effectivement sur la grille de caractéristiques d'entrée horizontalement et verticalement, un pixel à la fois, extrayant chaque tuile correspondante (voir Figure 3).

Convolution 3x3 sur une carte de caractéristiques 4x4 Figure 3. Une convolution 3x3 de profondeur 1 effectuée sur une carte de caractéristiques d'entrée 5x5, également de profondeur 1. Il existe neuf emplacements 3x3 possibles pour extraire des tuiles de la carte de caractéristiques 5x5. Cette convolution produit donc une carte de caractéristiques de sortie 3x3.

Pour chaque paire filtre-tuile, le réseau de neurones convolutif multiplie la matrice de filtres et la matrice de tuiles au niveau des éléments, puis additionne tous les éléments de la matrice résultante pour obtenir une seule valeur. Chacune de ces valeurs obtenues pour chaque paire de tuiles de filtre est ensuite générée dans la matrice de caractéristiques convoluées (voir les Figures 4a et 4b).

Une carte de caractéristiques 5x5 et une convolution 3x3 Figure 4a. À gauche : une carte de caractéristiques d'entrée 5x5 (profondeur 1). À droite : une convolution 3x3 (profondeur 1).

Figure 4b. Gauche: la convolution 3x3 est effectuée sur la carte de caractéristiques d'entrée 5x5. À droite: la caractéristique convoluée. Cliquez sur une valeur dans la carte de caractéristiques de sortie pour voir comment elle a été calculée.

Au cours de l'entraînement, le CNN "apprend" les valeurs optimales des matrices de filtre qui lui permettent d'extraire des caractéristiques pertinentes (textures, arêtes, formes) de la carte de caractéristiques d'entrée. À mesure que le nombre de filtres (profondeur de la carte de caractéristiques de sortie) appliqué à l'entrée augmente, le nombre de caractéristiques que le CNN peut extraire augmente. Cependant, comme les filtres constituent la majorité des ressources utilisées par le réseau de neurones convolutif, le temps d'entraînement augmente également à mesure que d'autres filtres sont ajoutés. De plus, chaque filtre ajouté au réseau fournit moins de valeur incrémentielle que le précédent. Les ingénieurs tentent donc de construire des réseaux utilisant le nombre minimal de filtres nécessaires pour extraire les caractéristiques nécessaires à une classification précise des images.

2. ReLU

Après chaque opération de convolution, le réseau de neurones convolutif applique une transformation d'unité de rectification linéaire (ReLU) à la caractéristique convoluée, afin d'introduire de la non-linéarité dans le modèle. La fonction ReLU, \(F(x)=max(0,x)\), renvoie x pour toutes les valeurs de x > 0 et renvoie 0 pour toutes les valeurs de x ≤ 0.

3. Pooling

Après l'étape de pooling ReLU, le réseau de neurones convolutif sous-échantillonne la caractéristique convoluée (pour réduire le temps de traitement), ce qui réduit le nombre de dimensions de la carte de caractéristiques, tout en préservant les informations de caractéristiques les plus critiques. Un algorithme couramment utilisé pour ce processus est appelé pooling maximal.

Le pooling maximal fonctionne de la même manière que la convolution. Nous allons glisser sur la carte de caractéristiques et extraire les tuiles d'une taille spécifiée. Pour chaque tuile, la valeur maximale est renvoyée vers une nouvelle carte de caractéristiques, et toutes les autres valeurs sont supprimées. Les opérations de pooling maximal utilisent deux paramètres:

  • Taille du filtre de pooling maximal (généralement 2x2 pixels)
  • Pas : distance, en pixels, séparant chaque tuile extraite. Contrairement à la convolution, où les filtres se déplacent sur la carte de caractéristiques pixel par pixel, dans le pooling maximal, le pas détermine les emplacements où chaque tuile est extraite. Pour un filtre 2x2, un pas de 2 spécifie que l'opération de pooling maximal extrait toutes les tuiles 2x2 de la carte de caractéristiques qui ne se chevauchent pas (voir Figure 5).

Animation du pooling maximal sur une carte de caractéristiques 4x4 avec un filtre 2x2 et un pas de 2.

Figure 5. À gauche: pooling maximal sur une carte de caractéristiques 4x4 avec un filtre 2x2 et un pas de 2. À droite: résultat de l'opération de pooling maximal. Notez que la carte de caractéristiques qui en résulte est désormais au format 2x2 et ne conserve que les valeurs maximales de chaque tuile.

Couches entièrement connectées

À la fin d'un réseau de neurones convolutif se trouve une ou plusieurs couches entièrement connectées (lorsque deux couches sont "complètement connectées" ; chaque nœud de la première couche est connecté à chaque nœud de la deuxième couche). Leur travail consiste à effectuer une classification basée sur les caractéristiques extraites par les convolutions. En règle générale, la couche entièrement connectée finale contient une fonction d'activation softmax, qui génère une valeur de probabilité comprise entre 0 et 1 pour chacune des étiquettes de classification que le modèle tente de prédire.

La figure 6 illustre la structure de bout en bout d'un réseau de neurones convolutif.

Schéma de bout en bout d'un réseau de neurones convolutif montrant l'entrée, deux modules de convolution et deux couches entièrement connectées pour la classification

Figure 6. Le réseau de neurones convolutif illustré ici contient deux modules de convolution (convolution + ReLU + pooling) pour l'extraction de caractéristiques, et deux couches entièrement connectées pour la classification. D'autres réseaux de neurones convolutifs peuvent contenir un nombre plus ou moins élevé de modules convolutifs, et des couches plus ou moins connectées. Les ingénieurs expérimentent souvent pour déterminer la configuration qui produit les meilleurs résultats pour leur modèle.