Feature Maps
Un mapa de características es la cuadrícula de respuestas que produce un filtro en una imagen y muestra dónde aparece su patrón. Incluye el cálculo, las dimensiones y la visualización.
Un mapa de características es la salida de un filtro de una capa de una red neuronal convolucional (CNN): una cuadrícula 2D de números que registra la intensidad con la que aparece el patrón del filtro en cada ubicación de su entrada. Una capa convolucional con 64 filtros produce 64 mapas de características, apilados en un tensor de forma canales × altura × anchura; ese tensor se convierte en la entrada de la capa siguiente. Los mapas de las primeras capas destacan bordes, colores y texturas, mientras que los de las capas más profundas responden a partes de objetos y objetos completos. Mapa de activación es un sinónimo, y al tensor completo apilado de una capa también se le suele llamar mapa de características.
Cómo se calcula un mapa de características#
Un filtro, también llamado kernel, es una pequeña cuadrícula de pesos del modelo aprendidos, normalmente de 3×3 por cada canal de entrada. La convolución lo desplaza por la entrada y, en cada posición, multiplica elemento a elemento los valores superpuestos y los suma, junto con un sesgo, para obtener un número de salida. Los valores altos indican los lugares donde la entrada coincide con el patrón del filtro. La altura y la anchura de la salida dependen del tamaño de entrada, el tamaño del kernel k, el relleno p y el paso s, según floor((input + 2p - k) / s) + 1; por tanto, un kernel de 3×3 con relleno 1 conserva el tamaño con paso 1 y lo reduce a la mitad con paso 2.
El fragmento siguiente aplica un kernel de bordes verticales a una pequeña imagen oscura a la izquierda y clara a la derecha.
import torch
import torch.nn.functional as F
# Una imagen en escala de grises de 8x8: la mitad izquierda es oscura y la derecha clara, por lo que hay un borde vertical
image = torch.zeros(1, 1, 8, 8)
image[..., 4:] = 1.0
# Un kernel Sobel de 3x3 que responde a los bordes verticales
kernel = torch.tensor([[-1.0, 0.0, 1.0], [-2.0, 0.0, 2.0], [-1.0, 0.0, 1.0]]).view(1, 1, 3, 3)
# Desplaza el kernel por la imagen para generar un mapa de características
feature_map = F.conv2d(image, kernel)
print(feature_map.shape)
print(feature_map[0, 0, 0])Imprime torch.Size([1, 1, 6, 6]) y tensor([0., 0., 4., 4., 0., 0.]). Sin relleno, la imagen de 8×8 produce un mapa de 6×6 (8 − 3 + 1 = 6), y el mapa solo tiene valores distintos de cero en las dos columnas donde el kernel cruza el borde. Las CNN entrenadas aprenden muchos filtros de la primera capa que se comportan como este kernel Sobel, además de filtros ajustados a colores y texturas.
Mapas de características a través de una red#
A medida que los datos avanzan por una CNN, los mapas de características suelen reducir su altura y anchura y aumentar el número de canales. Cada paso de reducción de resolución divide por dos la resolución, y cada posición de un mapa más profundo resume un campo receptivo mayor de la imagen original. Los detectores conservan mapas de varias profundidades porque el equilibrio tiene ventajas en ambos sentidos: un mapa de paso 8 de una imagen de 640×640 es una cuadrícula de 80×80, con resolución suficiente para localizar objetos pequeños; un mapa de paso 32 es una cuadrícula de 20×20 cuyas celdas abarcan suficiente imagen para reconocer objetos grandes. Una red piramidal de características (FPN) fusiona mapas de estas profundidades para que cada escala disponga tanto de una localización precisa como de información de alto nivel, y el backbone que los genera es la principal etapa de extracción de características de un modelo.
Mapas de características y términos relacionados#
- Filtro: El filtro contiene los pesos aprendidos y el mapa de características es el resultado de aplicarlos a una entrada. Un filtro produce un mapa de características por imagen.
- Función de activación: Función como ReLU que se aplica elemento a elemento a un mapa de características después de la convolución. El mapa existe tanto antes como después, con valores de preactivación y posactivación.
- Embeddings: Un embedding suele ser un vector 1D creado al agrupar o aplanar un mapa de características; conserva lo que contiene la imagen, pero descarta dónde está. Los embeddings impulsan la búsqueda por similitud y la agrupación, mientras que los mapas de características espaciales alimentan tareas que necesitan información de ubicación, como la segmentación semántica.
- Mapas de saliencia: Un mapa de saliencia es un único mapa de calor que explica una predicción, y suele calcularse a partir de mapas de características y sus gradientes.
Inspección y visualización de mapas de características#
Representar canales individuales como imágenes en escala de grises muestra a qué responde cada filtro. Los mapas de las primeras capas parecen copias de la foto filtradas para resaltar los bordes, mientras que los mapas profundos son manchas gruesas sobre partes de los objetos. En PyTorch, un hook de propagación hacia delante registrado con register_forward_hook captura los mapas de características de cualquier capa durante la inferencia. Las capas profundas tienen cientos de canales, así que las herramientas de IA explicable suelen condensarlos en un mapa de calor. Grad-CAM pondera cada canal de un mapa de características tardío según el gradiente medio de la puntuación de una clase y suma los canales, lo que resalta las regiones de la imagen que han influido en una predicción. En el modelo nano YOLO26, una imagen de 640×640 llega a la cabeza de detección como tres mapas de características de 64×80×80, 128×40×40 y 256×20×20, y predecir con visualize=True guarda una superposición LayerCAM de _cam.jpg que pondera cada posición de esos mapas según su gradiente positivo respecto a cada clase predicha.










