CAM
Les Class Activation Maps (CAM) sont une méthode puissante pour interpréter un modèle de classification d’images. Elles permettent de visualiser quelles parties de l’image ont influencé la décision d’un modèle pour une classe donnée. En particulier, CAM met en évidence les régions de l’image qui ont le plus activé les filtres d’une couche spécifique d’un réseau neuronal avant la prédiction finale.
Dans cette section, nous allons :
- Charger un modèle de classification d’images.
- Calculer et visualiser les Class Activation Maps pour comprendre quelles parties de l’image le modèle utilise pour ses prédictions.
1. Étapes pour calculer les CAM
Pour générer une CAM, nous devons suivre les étapes suivantes :
- Choisir une image : Prendre une image d’exemple pour laquelle nous voulons interpréter la prédiction du modèle.
- Charger un modèle pré-entraîné : Utiliser un modèle de classification d’images tel que ResNet50, VGG16, ou InceptionV3.
- Identifier la couche de convolution appropriée : Pour générer une carte de chaleur (heatmap) des activations, nous devons extraire la sortie de la dernière couche de convolution.
- Calculer les activations : Calculer les activations de la dernière couche de convolution par rapport à la classe prédite.
- Combiner les activations avec les poids de la couche dense finale : Les activations sont pondérées par les poids associés à la classe prédite pour obtenir la carte d’activation.
- Superposer la carte d’activation sur l’image d’origine : Générer une visualisation qui superpose la CAM à l’image originale.
2. Implémentation des Class Activation Maps avec TensorFlow et Keras
Étape 1 : Charger les bibliothèques nécessaires
Étape 2 : Charger une image et la prétraiter
On charge une image depuis le disque, puis on la convertit dans un format compatible avec le modèle.
Étape 3 : Obtenir la prédiction du modèle
Le modèle effectue une prédiction sur l’image, et nous récupérons la classe prédite ainsi que ses informations associées.
Étape 4 : Créer le modèle CAM en extrayant la dernière couche de convolution
Nous allons extraire la sortie de la dernière couche de convolution et la combiner avec les poids de la couche dense associée à la prédiction.
Étape 5 : Générer et visualiser la Class Activation Map
Nous obtenons maintenant une carte de chaleur (heatmap) basée sur les activations pondérées par les gradients, et nous la superposons à l’image d’origine.
3. Explication des étapes techniques
- Extraire les activations de la dernière couche convolutionnelle : Nous utilisons la dernière couche de convolution avant les couches denses pour extraire les activations. Ce sont ces activations qui indiquent quelles parties de l’image ont le plus contribué à la prédiction.
- Calcul des gradients : Les gradients sont calculés par rapport à la classe prédite. Ils indiquent l’importance de chaque activation de la dernière couche de convolution pour cette classe.
- Pondération des activations : Les activations de chaque canal sont pondérées par la moyenne des gradients correspondants, ce qui permet de renforcer les activations qui ont eu le plus d’impact sur la prédiction finale.
- Génération de la carte de chaleur (CAM) : En combinant les activations pondérées, nous obtenons une carte de chaleur qui met en évidence les zones de l’image les plus influentes pour la décision du modèle.
- Superposition de la carte de chaleur à l’image d’origine : Enfin, nous superposons la carte de chaleur sur l’image d’origine pour obtenir une visualisation interprétable et visuelle des parties de l’image utilisées par le modèle.
4. Conclusion
Les Class Activation Maps (CAM) sont un outil puissant pour interpréter les prédictions des modèles de réseaux de neurones, en particulier les modèles de classification d’images. En visualisant les parties de l’image qui ont influencé la décision, nous pouvons mieux comprendre comment un modèle traite l’information et pourquoi il prend certaines décisions. Cette méthode est cruciale pour améliorer la confiance dans les systèmes basés sur l’IA, diagnostiquer les erreurs et ajuster les architectures de modèles.