Grad-CAM : comment créer des cartes thermiques pour les problèmes de classification.

Mar 27 2023
Version portugaise ici Ce n'est pas une nouvelle que ces dernières années, il est devenu plus facile de développer des algorithmes d'apprentissage automatique. Ce battage médiatique a trois principaux coupables : Cette popularité est TRÈS importante pour la diffusion d'outils qui peuvent radicalement changer la façon dont l'informatique va évoluer dans les années à venir.

Version portugaise ici

Figure 1. Exemple d'application Grad-CAM (Source : https://keras.io/examples/vision/grad_cam/)

Ce n'est pas une nouvelle que ces dernières années, il est devenu plus facile de développer des algorithmes d'apprentissage automatique. Ce battage médiatique a trois principaux coupables :

  1. Efficacité accrue dans le traitement informatique.
  2. Technologies de stockage et de mémoire moins chères.
  3. L'accès à un volume de données qui aurait rendu jaloux les chercheurs en intelligence artificielle du siècle dernier.
  4. Figure 2. L'efficacité des ordinateurs personnels a doublé environ tous les 1,5 ans entre 1946 et 2009. Ce fait était essentiel pour la diffusion des algorithmes classiques d'apprentissage automatique. (Source : https://ieeexplore.ieee.org/document/5440129)
    Figure 3. Pour développer des algorithmes qui apprennent efficacement au fil du temps, il est nécessaire de travailler avec de grands ensembles de données. L'accès à des technologies de stockage de moins en moins chères a été un facteur décisif dans la vulgarisation de l'intelligence artificielle ces dernières années.

Cette popularité est TRÈS importante pour la diffusion d'outils qui peuvent radicalement changer la façon dont l'informatique va évoluer dans les années à venir. Cependant, des algorithmes qui semblent miraculeux dans un contexte peuvent apporter des résultats dangereux dans d'autres.

Ainsi, les nouvelles sur les algorithmes biaisés sont devenues de plus en plus courantes. Cela ouvre un espace pour un nouvel ensemble de techniques indispensables, des techniques qui cherchent à expliquer les raisons de la prise de décision de ces algorithmes. Quelque chose comme essayer de rendre ces « boîtes noires » un peu plus transparentes. De nombreuses recherches dans cette ligne de raisonnement ont cité le terme XAI (abréviation d'Explicitable AI) comme un cadre théorique qui rassemble diverses techniques différentes dans ce même but.

L'une de ces techniques est Grad-CAM, qui vise à améliorer notre compréhension de la prise de décision dans les problèmes de classification d'images.

Comment fonctionne Grad-CAM

Supposons que nous disposions d'un réseau neuronal convolutif (CNN) formé pour classer une image dans les catégories avion, chien, chat ou personne.

Pour en savoir plus sur l'organisation d'un réseau de neurones, je vous conseille cette playlist ici . Les réseaux de neurones convolutifs sont une classe de réseaux de neurones artificiels. Pour en savoir plus sur les CNN, regardez cette vidéo ici .

Figure 4. Grad-CAM peut être appliqué à un réseau convolutif pré-formé pour une tâche de classification, indépendamment de l'architecture du réseau et du nombre de classifications possibles.

Si le réseau a été bien formé, les classes Dog et Cat recevront des valeurs élevées, indiquant que ces classes sont probablement présentes dans l'image. Grad-CAM produit une carte thermique pour chaque classification possible.

Maintenant un peu de formalisme pour décrire les étapes de l'algorithme et comment il génère une heatmap en fin de processus. Au final, la heatmap est représentée par une matrice bidimensionnelle, analogue à l'entrée du modèle, c'est-à-dire :

Figure 5. La sortie de Grad-CAM est une carte thermique de dimensions (u, v). Ces dimensions ne sont pas nécessairement les mêmes que celles de l'image originale.

En plus de la convention de nommage pour définir ce qu'est une heatmap, il faut définir comment on va se référer au score que le CNN attribue à chacune des classes possibles.

Figure 6. Pour chaque classe possible, il existe une valeur numérique correspondante pour la probabilité que cette classe soit présente dans l'image. Dans ce contexte, y représente cette valeur numérique, qui peut être une probabilité.

Supposons que nous recherchions la carte thermique pour la classification de cette image en chat. Autrement dit, quelle région de l'image originale était la plus importante pour que le réseau de neurones détermine que l'image contient un chat ?

Étape 1 : Calcul du gradient

Pour cela, il faut d'abord obtenir les gradients de chacun des canaux de la dernière couche convolutive (A1, A2 et A3) par rapport à la classe (cat) souhaitée.

Figure 7. Étape 1 : Calcul des gradients des cartes d'entités à partir de la dernière couche convolutive du réseau formé par rapport à une classe donnée.

L'intuition derrière le résultat de ce processus est que ces matrices générées auront des pixels avec des valeurs plus élevées, plus ces régions sont pertinentes pour déterminer la valeur finale que le CNN a attribuée à cette classe (cat).

Le résultat de cette étape est une matrice de dimensions (u, v, k). Dans cet exemple particulier, k = 3.

Étape 2 : Alphas

Pour chacun des gradients calculés à l'étape précédente, on obtient la moyenne de chacune des matrices à 2 dimensions.

Figure 8. Étape 2 : Appliquer la moyenne arithmétique à chacun des gradients résultant de l'étape 1.

En pensant à l'intuition derrière cette étape, au lieu de chercher la pertinence pixel par pixel pour une classe donnée comme nous l'avons fait à l'étape 1, nous la transformons en pertinence pour chacune des cartes (A1, A2 et A3).

Ainsi, chacun de ces "alphas" représente l'importance de chacune des cartes dans la prise de décision de classer l'image comme contenant un chat. Plus l'alpha est élevé, plus la carte correspondante était importante dans la prise de décision pour une classe donnée.

Puisque la sortie de l'étape précédente était une matrice (u, v, k), la sortie de cette étape a des dimensions (1, 1, k).

Étape 3 : carte thermique

Étant donné que la sortie de l'étape précédente est constituée de valeurs scalaires, pour chacune des cartes A1, A2 et A3, nous pouvons effectuer une combinaison linéaire de ces facteurs et de leurs cartes correspondantes.

Comme étape supplémentaire, l'algorithme Grad-CAM applique une fonction ReLU au résultat de cette opération.

Figure 9. Étape 3 : La carte thermique finale est obtenue en utilisant les alphas de l'étape 2 comme poids des cartes de caractéristiques de la dernière couche convolutive du réseau formé.

La sortie de cette étape a les mêmes dimensions que l'entrée de l'étape 1, c'est-à-dire une matrice (u, v, k). Étant donné que les cartes de caractéristiques de la dernière couche convolutive ont généralement une résolution beaucoup plus faible que l'image d'origine, il est nécessaire de redéfinir la résolution finale de la carte thermique.

Figure 10. Exemple de sortie de l'étape 3 : Les régions les plus rougeâtres indiquent les pixels avec une valeur relativement plus élevée par rapport aux autres pixels présents dans la même image.
Figure 11. Exemple de sortie de l'étape 3 après ajustement de la résolution. Comme il est nécessaire de superposer la heatmap avec l'image d'origine, les deux doivent avoir les mêmes dimensions.
Figure 12. Les 3 étapes de l'algorithme Grad-CAM appliqué à un réseau de neurones convolutionnels pré-entraînés.

Enfin, la carte thermique obtenue peut être placée au-dessus de l'image d'origine. Les régions en surbrillance étaient les régions les plus importantes pour classer l'image d'entrée comme une image contenant un chat.

Figure 13. Après avoir ajusté la résolution de la heatmap obtenue après la dernière étape de l'algorithme, la heatmap est superposée sur l'image originale. Les régions mises en évidence étaient les plus pertinentes pour la prise de décision de l'algorithme précédemment formé (Source : https://keras.io/examples/vision/grad_cam/).

Dans aucune des étapes précédentes, la classe à utiliser ne doit nécessairement être cat. De même, on pourrait vouloir mettre en évidence les zones que l'algorithme a jugées pertinentes pour prendre la décision de classer l'image en tant que chien. Pour ce faire, il suffit de remplacer la classe souhaitée de la heatmap finale aux étapes 1, 2 et 3 de l'algorithme.

Figure 14. L'algorithme Grad-CAM génère une carte thermique pour chacune des classes possibles définies lors de la formation du modèle. Les régions en surbrillance indiquent les zones les plus importantes pour déterminer que l'image contient un chien (Source : https://keras.io/examples/vision/grad_cam/).

Applications

Il existe des problèmes de classification où la distribution des données de formation doit être soigneusement analysée. Grad-CAM peut être utilisé comme validateur des résultats obtenus par le modèle.

Par exemple, considérons un classificateur de professionnels de la santé. Dans ce contexte, il n'y a que deux classes possibles : Médecins ou infirmières. L'ensemble de données de formation était en fait biaisé (78 % des images de médecins étaient des hommes et 93 % des images d'infirmières étaient des femmes) et a donc généré un modèle qui, même avec une grande précision (82 %), contenait un biais.

Figure 15. Exemple de Grad-CAM appliqué à un modèle biaisé, comparé à un modèle non biaisé, pour la classification des professionnels de santé (Source : https://arxiv.org/abs/1610.02391).

En appliquant la technique Grad-CAM à deux images différentes, on a remarqué que le modèle biaisé (deuxième colonne de l'image ci-dessus) « regardait » plus le visage du professionnel que ses vêtements et outils de travail.

Ce type d'analyse devient de plus en plus pertinent ces derniers temps, où nous avons de plus en plus d'algorithmes de classification dans les applications quotidiennes.

En plus d'une telle classification simple, Grad-CAM peut être appliqué aux classificateurs de diagnostic d'image. Une série de travaux ont émergé dans ce sens lors de la récente pandémie de Coronavirus.

Figure 16. Grad-CAM appliqué à différentes images de tomodensitométrie du poumon d'un seul patient sur 50 jours. Les cartes thermiques générées suggèrent une amélioration de l'état clinique du patient (Source : https://www.nature.com/articles/s41746-020-00369-1)

J'espère que vous avez aimé découvrir l'idée de Grad-CAM et quelques applications possibles de cette technique