Estoy tratando de entender mejor los campos receptivos de CNN. Para hacerlo, me gustaría calcular el campo receptivo de cada neurona en LeNet. Para un MLP normal es bastante fácil (ver http://deeplearning.net/tutorial/lenet.html#sparse-connectivity ), pero es más difícil calcular el campo receptivo de una neurona en una capa que sigue una o más capas convolucionales y capas de agrupación.
¿Cuál es el campo receptivo de una neurona en la 2. capa convolucional? ¿Cuánto más grande es en la siguiente capa de submuestreo / agrupación? ¿Y cuál es la fórmula para calcular estos?
Respuestas:
Si piensa en una red convolucional como una instancia de un MLP estándar, puede descubrir los campos receptivos exactamente de la misma manera que el ejemplo que vinculó.
Recuerde que una capa convolucional es esencialmente una forma abreviada de una capa con muchos patrones repetidos, como en esta imagen (de esta respuesta , originalmente de aquí ):
Cada uno de los "píxeles de destino" de esa imagen corresponde a una neurona cuyas entradas son el cuadrado azul en la imagen de origen. Dependiendo de la arquitectura de su red, las circunvoluciones pueden no corresponder exactamente a píxeles como ese, pero es la misma idea. Los pesos utilizados como entradas para todas esas neuronas convolucionales están vinculados, pero eso es irrelevante para lo que estás pensando aquí.
Se puede pensar en la combinación de neuronas de la misma manera, combinando los campos receptivos de cada una de sus entradas.
fuente
En Faster-rcnn, el campo receptivo efectivo se puede calcular de la siguiente manera (VGG16):
Img->
Conv1 (3) -> Conv1 (3) -> Pool1 (2) ==>
Conv2 (3) -> Conv2 (3) -> Pool2 (2) ==>
Conv3 (3) -> Conv3 (3 ) -> Conv3 (3) -> Pool3 (2) ==>
Conv4 (3) -> Conv4 (3) -> Conv4 (3) -> Pool4 (2) ==>
Conv5 (3) -> Conv5 (3 ) -> Conv5 (3) ====>
una ventana de 3 * 3 en el mapa de características.
Tomemos una dimensión por simplicidad. Si derivamos del tamaño 3, el campo receptivo original:
1). al comienzo de Conv5: 3 + 2 + 2 + 2 = 9
2). al comienzo de Conv4: 9 * 2 + 2 + 2 + 2 = 24
3). al comienzo de Conv3: 24 * 2 + 2 + 2 + 2 = 54
4). al comienzo de Conv2: 54 * 2 + 2 + 2 = 112
5). al comienzo de Conv1 (entrada original): 112 * 2 + 2 + 2 = 228
fuente