Grad-CAM revela cómo se realiza la toma de decisiones en deep learning
En este ejemplo se muestra cómo utilizar la técnica de aplicación de activación de clase ponderada por gradiente (Grad-CAM) para entender por qué una red de deep learning toma unas decisiones de clasificación concretas. Grad-CAM, inventado por Selvaraju y otros autores [1], utiliza el gradiente de la puntuación de clasificación con respecto a las características convolucionales determinadas por la red para entender qué partes de la imagen son más importantes para la clasificación. En este ejemplo se usa la red preentrenada GoogLeNet para las imágenes.
Grad-CAM es una generalización de la técnica de aplicación de la activación de clase (CAM). Para descubrir técnicas de aplicación de la activación en datos de webcam en directo, consulte Investigate Network Predictions Using Class Activation Mapping. Grad-CAM también se puede aplicar a ejemplos sin clasificación, como regresión o segmentación semántica. Para ver un ejemplo que muestra cómo utilizar Grad-CAM para investigar las predicciones de una red de segmentación semántica, consulte Explore Semantic Segmentation Network Using Grad-CAM.
Cargar una red preentrenada
Cargue la red GoogLeNet.
net = googlenet;
Clasificar una imagen
Lea el tamaño de la imagen de GoogLeNet.
inputSize = net.Layers(1).InputSize(1:2);
Cargue sherlock.jpg
, una imagen de un golden retriever incluida en este ejemplo.
img = imread("sherlock.jpg");
Cambie el tamaño de la imagen a las dimensiones de entrada de la red.
img = imresize(img,inputSize);
Clasifique la imagen y muéstrela junto con su clasificación y su puntuación de clasificación.
[classfn,score] = classify(net,img);
imshow(img);
title(sprintf("%s (%.2f)", classfn, score(classfn)));
GoogLeNet clasifica la imagen correctamente como un golden retriever. Pero ¿por qué? ¿Qué características de la imagen hacen que la red realice esta clasificación?
Grad-CAM explica por qué
La técnica Grad-CAM usa los gradientes de la puntuación de clasificación con respecto al mapa de características convolucionales finales con el fin de identificar las partes de una imagen de entrada que tienen más impacto en la puntuación de clasificación. Los lugares donde este gradiente es grande son exactamente los lugares en los que la puntuación final depende más de los datos.
La función gradCAM
calcula el mapa de importancia tomando la derivada de la salida de la capa de reducción para una clase dada con respecto a un mapa de características convolucionales. Para tareas de clasificación, la función gradCAM
selecciona de forma automática las capas adecuadas para calcular el mapa de importancia. También puede especificar las capas con los argumentos nombre-valor 'ReductionLayer'
y 'FeatureLayer'
.
Calcule el mapa de Grad-CAM.
map = gradCAM(net,img,classfn);
Muestre el mapa de Grad-CAM encima de la imagen empleando un valor 'AlphaData'
de 0.5. El mapa de color 'jet'
tiene el azul intenso como el valor más bajo y el rojo intenso como el más alto.
imshow(img); hold on; imagesc(map,'AlphaData',0.5); colormap jet hold off; title("Grad-CAM");
Está claro que la parte superior de la cara y la oreja del perro son las partes que tienen el mayor impacto en la clasificación.
Para descubrir un método diferente para investigar las razones de las clasificaciones de redes profundas, consulte occlusionSensitivity
y imageLIME
.
Referencias
[1] Selvaraju, R. R., M. Cogswell, A. Das, R. Vedantam, D. Parikh y D. Batra. "Grad-CAM: Visual Explanations from Deep Networks via Gradient-Based Localization." En IEEE International Conference on Computer Vision (ICCV), 2017, pp. 618–626. Disponible en la sección Grad-CAM
del sitio web Computer Vision Foundation Open Access.
Consulte también
gradCAM
| imageLIME
| occlusionSensitivity
| deepDreamImage
Temas relacionados
- Interpret Deep Learning Time-Series Classifications Using Grad-CAM
- Explore Semantic Segmentation Network Using Grad-CAM
- Investigate Network Predictions Using Class Activation Mapping
- Deep Learning Visualization Methods
- Explore Network Predictions Using Deep Learning Visualization Techniques
- Understand Network Predictions Using LIME