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

Mar 27 2023
Versão em Português Ce n'est pas nouveau que ces dernières années, il a été de plus en plus facile de développer des algorithmes qui utilisent l'apprentissage automatique. Et ce battage médiatique a 3 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, mais des algorithmes qui semblent miraculeux dans un contexte donné peuvent apporter des résultats dangereux dans d'autres.

version anglaise ici

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

Ce n'est pas nouveau que ces dernières années, il a été de plus en plus facile de développer des algorithmes qui utilisent l'apprentissage automatique. Et ce battage médiatique a 3 principaux coupables :

  1. Augmentation de l'efficacité de traitement des ordinateurs.
  2. Des technologies de stockage et de mémoire de moins en 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 presque doublé tous les 1,5 ans entre 1946 et 2009. Ce fait était essentiel pour la diffusion des algorithmes d'apprentissage automatique classiques (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, mais des algorithmes qui semblent miraculeux dans un contexte donné 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 fait place à un nouvel ensemble de techniques extrêmement nécessaires, 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 transparentes. De nombreuses études allant dans ce sens ont cité le terme XAI (abréviation de Explainable AI) comme cadre théorique regroupant plusieurs techniques différentes dans le 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) entraîné pour la tâche de classer une image entre les classes 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éalablement formé pour une tâche de classification, quelle que soit l'architecture du réseau et le 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 pouvoir décrire les étapes de l'algorithme et comment il génère une carte de chaleur à la fin du processus. Au final, la carte thermique est représentée par une matrice bidimensionnelle, analogue à l'entrée du modèle, c'est-à-dire :

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

En plus de la convention de nommage pour définir ce qu'est une carte thermique, il est nécessaire de définir comment nous ferons référence au score que CNN attribue à chacune des classes possibles.

Figure 6. Pour chaque classe possible, il existe un correspondant numérique 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 classer 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éfinisse que l'image contient un chat ?

Étape 1 : Calcul du dégradé

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 souhaitée (cat).

Figure 7. Étape 1 : Calcul des gradients des cartes d'entités de la dernière couche convolutive du réseau entraîné 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 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 : La moyenne arithmétique est appliquée à 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 était élevé, plus la carte correspondante était importante pour prendre la décision pour une classe donnée.

Comme 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

Comme la sortie de l'étape précédente est des nombres scalaires, pour chacune des cartes A1, A2 et A3, nous pouvons effectuer la combinaison linéaire entre ces facteurs et les 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 la même dimension que l'entrée de l'étape 1, c'est-à-dire une matrice (u, v, k). Comme 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 réinitialiser la résolution finale de la carte thermique.

Figure 10. Exemple de sortie de l'étape 3 : les régions les plus rouges signalent des pixels avec une valeur relative 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éalablement formé.

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 carte obtenue après la dernière étape de l'algorithme, la carte thermique est superposée à 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 Gato . De manière analogue, nous pourrions vouloir mettre en évidence les zones que l'algorithme a considérées comme pertinentes pour prendre la décision de classer l'image comme Chien. Pour ce faire, il suffit de remplacer la classe souhaitée de la carte thermique finale dans les é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éfinir 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 analysée très soigneusement. Grad-CAM peut être utilisé comme validateur des résultats obtenus par le modèle.

Par exemple, imaginez 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 effet 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é dans un modèle biaisé, comparé à un modèle non biaisé, pour la classification des professionnels de santé (Source : https://arxiv.org/abs/1610.02391)

Lors de l'application de la technique Grad-CAM à deux images différentes, il a été 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 finit par être de plus en plus pertinent ces derniers temps, où nous avons de plus en plus d'algorithmes de classification dans les applications de notre vie quotidienne.

En plus d'une classification simple comme celle-ci, Grad-CAM peut être appliqué à des modèles classificateurs d'imagerie diagnostique. Un certain nombre de travaux ont vu le jour à cet égard 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