Saliency Maps
Les Saliency Maps sont une méthode d’interprétation des modèles d’apprentissage profond, particulièrement utiles pour comprendre quelles parties d’une image influencent le plus une prédiction. Elles fonctionnent en calculant les dérivées des prédictions par rapport à chaque pixel de l’image d’entrée, permettant de voir comment les petites variations dans chaque pixel affectent la prédiction.
Contrairement aux Class Activation Maps (CAM), les Saliency Maps peuvent être utilisées avec n’importe quel modèle, même si le modèle n’a pas de couche de convolution, car elles reposent simplement sur les gradients.
1. Étapes pour calculer les Saliency Maps
Voici un aperçu des étapes pour générer une Saliency Map :
- Charger l’image et le modèle pré-entraîné.
- Obtenir la prédiction du modèle pour une classe spécifique.
- Calculer les gradients des pixels d’entrée par rapport à la prédiction.
- Créer une carte de chaleur basée sur ces gradients et visualiser les parties les plus importantes de l’image pour la prédiction.
2. Implémentation des Saliency Maps avec TensorFlow et Keras
Étape 1 : Charger les bibliothèques et le modèle
On commence par charger TensorFlow, Keras, et un modèle pré-entraîné tel que VGG16, ResNet50, ou InceptionV3.
Étape 2 : Charger une image et la prétraiter
On charge une image à partir du disque, on la redimensionne et on la pré-traite de manière compatible avec le modèle choisi.
Étape 3 : Obtenir la prédiction du modèle
Nous demandons au modèle de prédire la classe de l’image, et récupérons l’index de la classe prédite.
Étape 4 : Calculer les gradients de la sortie par rapport à l’image d’entrée
Nous calculons les gradients de la sortie de la classe prédite par rapport à l’image d’entrée. Cela nous donne une idée de la sensibilité de chaque pixel par rapport à la prédiction.
Étape 5 : Visualiser la Saliency Map
Nous allons maintenant afficher la Saliency Map, qui montre l’importance de chaque pixel dans l’image d’entrée pour la prédiction du modèle.
3. Explication des étapes techniques
- Suivi des gradients : En utilisant
tf.GradientTape()
, nous demandons à TensorFlow de suivre les opérations pour calculer les gradients de la sortie de la classe prédite par rapport à l’image d’entrée. - Calcul des gradients : Les gradients sont calculés pour chaque pixel de l’image d’entrée. Ces gradients nous indiquent dans quelle mesure de petites modifications de chaque pixel influenceraient la prédiction du modèle.
- Magnitude des gradients : Nous prenons la valeur absolue des gradients et utilisons la valeur maximale sur tous les canaux de couleur pour obtenir une carte de chaleur en niveaux de gris. Cette carte montre quelles régions de l’image affectent le plus la prédiction.
- Affichage de la Saliency Map : Nous normalisons les valeurs de la carte de chaleur entre 0 et 1 et la visualisons avec une colormap (ici
hot
) qui met en évidence les zones importantes en rouge et jaune.
4. Exemple concret d’interprétation d’une Saliency Map
Supposons que nous utilisons une image d’un chien, et que le modèle prédit correctement la classe “chien”. En calculant la Saliency Map, nous pourrons voir les régions spécifiques de l’image (comme la tête ou les oreilles du chien) qui ont contribué de manière significative à cette prédiction. Si les régions importantes sont bien alignées avec les caractéristiques distinctives de l’objet à classifier, cela renforce la confiance dans le modèle. Si, au contraire, les régions importantes sont ailleurs (par exemple, en arrière-plan), cela pourrait indiquer des biais ou des faiblesses dans le modèle.
5. Conclusion
Les Saliency Maps sont un outil simple et efficace pour interpréter les prédictions des modèles de réseaux de neurones, en particulier pour les images. Elles permettent de visualiser quelles parties de l’image influencent le plus la prédiction du modèle, ce qui peut être très utile pour diagnostiquer des erreurs, ajuster des modèles, ou simplement améliorer la transparence des systèmes d’IA.
L’étape suivante dans l’exploration de l’interprétabilité consistera à examiner des techniques plus avancées, comme les Gradient-weighted Class Activation Maps (Grad-CAM), qui permettent de combiner les avantages des saliency maps avec ceux des CAM pour une interprétation plus détaillée et précise des prédictions des modèles.