Receptive Field
El campo receptivo es la región de la imagen de entrada que puede influir en una unidad de una red neuronal. Descubre cómo aumenta con la profundidad, el paso y la dilatación, y consulta el código.
El campo receptivo de una unidad en una red neuronal convolucional (CNN) es la región de la imagen de entrada que puede influir en su valor. Una unidad de la primera capa de convolución de 3 × 3 de una red ve una zona de 3 × 3 píxeles, y las unidades de las capas más profundas ven regiones progresivamente mayores, porque cada capa combina salidas vecinas de la capa anterior. El campo receptivo determina cuánto contexto puede usar una característica: una unidad que reconoce un autobús entero debe ver el autobús completo. El término procede de la neurociencia, donde designa la zona del campo visual que activa una neurona.
Cómo crece el campo receptivo#
Cada capa añade (k − 1) × j píxeles al campo receptivo, donde k es el tamaño del kernel y j, el salto, es la distancia en píxeles de entrada entre unidades vecinas de su entrada, igual al producto de todos los pasos anteriores. De ello se derivan tres consecuencias:
- Apilar kernels pequeños: Tres capas de 3 × 3 con paso 1 abarcan una zona de 7 × 7, igual que una sola capa de 7 × 7, pero con 27C² pesos en lugar de 49C² para C canales. Este fue el argumento que llevaron las redes VGG para construir pilas profundas de convoluciones de 3 × 3.
- Pasos y agrupación: Cada capa con paso 2 o etapa de agrupación duplica el salto, por lo que las capas posteriores amplían el campo receptivo el doble de rápido. Así es como las CNN alcanzan campos receptivos de cientos de píxeles mientras reducen el tamaño de sus mapas de características.
- Dilatación: Una convolución dilatada (atrous) de 3 × 3 con dilatación d separa sus puntos de muestreo por d píxeles y cubre 2d + 1 píxeles. Así amplía el campo receptivo sin reducir la resolución, lo que resulta adecuado para tareas densas por píxel, como la segmentación semántica.
La medición directa del campo receptivo confirma estas reglas: propaga el gradiente hacia atrás desde un valor de salida y observa qué píxeles de entrada reciben un gradiente distinto de cero.
import torch
from torch import nn
# Three stacked 3x3 convolutions in three configurations: (stride, dilation)
for name, stride, dilation in (("plain", 1, 1), ("strided", 2, 1), ("dilated", 1, 2)):
convs = [nn.Conv2d(1, 1, 3, stride, padding=dilation, dilation=dilation, bias=False) for _ in range(3)]
for conv in convs:
nn.init.ones_(conv.weight) # positive weights, so no input pixel's gradient cancels out
layers = nn.Sequential(*convs)
# Backpropagate from the central output value; input pixels with nonzero gradient form its receptive field
image = torch.zeros(1, 1, 64, 64, requires_grad=True)
output = layers(image)
output[0, 0, output.shape[2] // 2, output.shape[3] // 2].backward()
rows = image.grad[0, 0].sum(dim=1).nonzero()
size = rows.max().item() - rows.min().item() + 1
print(f"{name}: {size}x{size} pixels")Imprime 7 × 7 para la pila normal, 15 × 15 para la pila con pasos, donde el salto pasa de 1 a 2 y a 4, y 13 × 13 para la pila dilatada, donde cada capa añade 4 píxeles.
Campo receptivo teórico y efectivo#
La fórmula da el campo receptivo teórico, es decir, todos los píxeles que pueden afectar a una unidad. El campo receptivo efectivo mide cuánto influye realmente cada píxel: su efecto tiene una forma aproximadamente gaussiana, concentrada en el centro, y solo ocupa una fracción del área teórica. Los kernels más grandes lo amplían; RepLKNet usó kernels en profundidad de hasta 31 × 31 y comunicó campos receptivos efectivos mucho mayores que los de las CNN con kernels pequeños. En los transformers de visión, la autoatención permite que cada parche de imagen aproveche todos los demás desde la primera capa, así que el campo receptivo teórico abarca toda la imagen a cualquier profundidad.
Campo receptivo y términos relacionados#
- Tamaño del kernel: La ventana que lee una convolución de su propia entrada, por ejemplo, 3 × 3. El campo receptivo es el área acumulada de la imagen original; con tres kernels de 3 × 3 apilados ya se obtiene un campo de 7 × 7.
- Mapa de características: La cuadrícula de salida de una capa. El campo receptivo describe la región de entrada que hay detrás de una posición concreta de esa cuadrícula.
- Ventana de contexto: El número de tokens que lee un modelo de lenguaje a la vez; es el equivalente en secuencias al campo receptivo de una cuadrícula de imagen.
Campos receptivos en la detección de objetos#
Los detectores predicen objetos pequeños a partir de mapas de características finos y objetos grandes a partir de mapas gruesos y profundos con campos receptivos amplios, y una red piramidal de características (FPN) mezcla el contexto profundo con los mapas finos. Un campo receptivo menor que el objeto solo ve una parte, y los objetos diminutos siguen necesitando un nivel fino, porque en un mapa con paso 32 un objeto de 20 píxeles ocupa menos de una celda de la cuadrícula. YOLO26 predice a partir de mapas con pasos 8, 16 y 32; al final de su backbone, aplica un bloque SPPF, que realiza una agrupación máxima del mapa con paso 32 mediante ventanas equivalentes a celdas de 5 × 5, 9 × 9 y 13 × 13, seguida de un bloque de autoatención cuyo alcance cubre todo el mapa con paso 32.










