Estou tentando entender melhor os campos receptivos da CNN. Para fazer isso, gostaria de calcular o campo receptivo de cada neurônio no LeNet. Para um MLP normal, é bastante fácil (consulte http://deeplearning.net/tutorial/lenet.html#sparse-connectivity ), mas é mais difícil calcular o campo receptivo de um neurônio em uma camada após uma ou mais camadas convolucionais e camadas de agrupamento.
Qual é o campo receptivo de um neurônio na camada 2. convolucional? Qual o tamanho da camada de subamostragem / pool a seguir? E qual é a fórmula para calcular isso?
Respostas:
Se você pensar em uma rede convolucional como uma instância de um MLP padrão, poderá descobrir os campos receptivos exatamente da mesma maneira que no exemplo que você vinculou.
Lembre-se de que uma camada convolucional é essencialmente uma abreviação para uma camada com muitos padrões repetidos, como nesta imagem ( desta resposta , originalmente daqui ):
Cada um dos "pixels de destino" dessa imagem corresponde a um neurônio cujas entradas são o quadrado azul na imagem de origem. Dependendo da arquitetura da sua rede, as convoluções podem não corresponder exatamente a pixels como esse, mas é a mesma idéia. Os pesos usados como entradas para todos esses neurônios convolucionais estão ligados, mas isso é irrelevante para o que você está pensando aqui.
Os neurônios reunidos podem ser pensados da mesma maneira, combinando os campos receptivos de cada uma de suas entradas.
fonte
No Faster-rcnn, o campo receptivo efetivo pode ser calculado da seguinte forma (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) ====>
uma janela 3 * 3 no mapa de recursos.
Vamos dar uma dimensão para simplificar. Se derivarmos do tamanho 3, o campo receptivo original:
1). no início de Conv5: 3 + 2 + 2 + 2 = 9
2). no início de Conv4: 9 * 2 + 2 + 2 + 2 = 24
3). no início de Conv3: 24 * 2 + 2 + 2 + 2 = 54
4). no início de Conv2: 54 * 2 + 2 + 2 = 112
5). no início de Conv1 (entrada original): 112 * 2 + 2 + 2 = 228
fonte