Gradiente Ponderado Activación Mapas (Grad-CAM)

 

Grad-CAM es una técnica de interpretación y visualización.

En modelos de redes neuronales profundas.

En arquitecturas convolucionales (CNNs).

Permite identificar qué partes de una imagen o entrada.

Influyen más en la decisión de la red.

Esto se logra generando un mapa de calor.

Resalta las regiones de interés en la entrada.

Haciendo que el comportamiento del modelo.

Sea más transparente y comprensible.

 

¿Cómo Funciona Grad-CAM?

 

Grad-CAM combina las activaciones de las capas convolucionales.

Con los gradientes del modelo.

Genera un mapa de relevancia sobre la entrada.

El enfoque aprovecha las propiedades jerárquicas de las CNNs.

Donde las capas profundas identifican características.

De alto nivel como bordes o texturas.

 

Paso 1: Identificar la capa de interés

Se elige una de las últimas capas convolucionales.

Del modelo porque conserva información espacial.

Relevante y captura características avanzadas.

 

Paso 2: Calcular gradientes

Los gradientes de la salida relacionados con la clase de interés.

Con respecto a las activaciones.

De la capa seleccionada se computan.

Estos gradientes indican la sensibilidad de la clase.

De salida con respecto a cada ubicación.

En las activaciones.

 

Paso 3: Ponderar activaciones

Los gradientes se promedian.

A lo largo de las dimensiones espaciales.

Obtener un conjunto de pesos αk

Ponderan la importancia de cada canal de activación

 

Paso 4: Generar mapa de calor

Se combinan las activaciones de la capa convolucional con los pesos

 

Paso 5: Superponer el mapa de calor

El mapa de activación LGrad-CAM se escala

Se superpone a la imagen original.

Para destacar las regiones relevantes.

 

Ventajas de Grad-CAM

 

Interpretabilidad

Grad-CAM proporciona una representación visual.

Ayuda a los humanos a entender qué regiones.

Influyen más en las decisiones del modelo.

 

Generalidad

Funciona con una amplia gama de arquitecturas.

Basadas en CNNs.

Puede aplicarse a tareas de clasificación de imágenes.

Detección de objetos.

Reconocimiento de acciones.

 

Transparencia en aplicaciones críticas

Es útil en dominios como la medicina.

Es esencial justificar las predicciones del modelo.

En imágenes médicas.

 

Limitaciones de Grad-CAM

Resolución espacial

El mapa de calor generado depende de la resolución.

De las activaciones de la capa seleccionada.

Puede limitar el detalle.

 

Dependencia de la capa seleccionada

La elección de la capa convolucional.

Afecta directamente los resultados.

Una capa mal seleccionada puede no capturar.

La información más relevante.

 

No captura interacciones complejas

Grad-CAM no considera relaciones no lineales.

Interacciones complejas entre las características.

 

Casos de Uso de Grad-CAM

 

Clasificación de imágenes

Identificar qué partes de una imagen llevaron a la predicción.

De una clase específica.

 

Imágenes médicas

Destacar regiones anómalas en imágenes.

Radiografías o resonancias magnéticas.

 

Detección de errores en modelos

Ayudar a diagnosticar problemas en las predicciones.

Al identificar qué información fue ignorada o mal interpretada.

 

Explicabilidad en modelos de visión por computadora

Proveer interpretaciones visuales.

Pueden ser utilizadas por usuarios no técnicos.

 

Ejemplo Práctico: Grad-CAM con PyTorch

Cómo implementar Grad-CAM utilizando PyTorch.

 

import torch
import torch.nn.functional as F
from torchvision import models
import cv2
import numpy as np

# Modelo preentrenado
model = models.resnet50(pretrained=True)
model.eval()

# Imagen de entrada (preprocesada)
image = cv2.imread(«example.jpg»)
image = cv2.resize(image, (224, 224))
input_tensor = torch.tensor(image).permute(2, 0, 1).unsqueeze(0).float() / 255

# Seleccionar capa para Grad-CAM
target_layer = model.layer4[-1] # Última capa convolucional

# Forward hook para capturar activaciones
activations = []

def hook_function(module, input, output):
activations.append(output)

hook = target_layer.register_forward_hook(hook_function)

# Forward pass
output = model(input_tensor)
predicted_class = output.argmax(dim=1)

# Backward pass para calcular gradientes
model.zero_grad()
output[0, predicted_class].backward()

# Gradientes y activaciones
grads = target_layer.weight.grad.cpu().data.numpy()[0] activations = activations[0].cpu().data.numpy()[0]

# Ponderar activaciones con gradientes
weights = np.mean(grads, axis=(1, 2))
cam = np.zeros(activations.shape[1:], dtype=np.float32)

for i, w in enumerate(weights):
cam += w * activations[i]

# ReLU para eliminar valores negativos
cam = np.maximum(cam, 0)

# Normalizar y redimensionar el mapa de calor
cam = cam / cam.max()
cam = cv2.resize(cam, (image.shape[1], image.shape[0]))
heatmap = cv2.applyColorMap(np.uint8(255 * cam), cv2.COLORMAP_JET)
superimposed_image = heatmap * 0.4 + image

# Guardar resultado
cv2.imwrite(«grad_cam_result.jpg», superimposed_image)

 

Grad-CAM es una herramienta para los modelos de redes neuronales convolucionales.

Más interpretables y confiables.

Su capacidad para identificar regiones clave en las entradas.

Ayuda a diagnosticar problemas.

Mejorar la confianza en aplicaciones críticas.

Justificar predicciones en una amplia variedad de dominios.

Herramientas como Grad-CAM serán esenciales.

Para garantizar la transparencia y la confianza en los modelos.

 

 

 

Manu Duque
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

Nunca almacenamos información personal.

Puedes revisar nuestra política en la página de Política de Privacidad, Condiciones de Uso y Cookies.