Campo receptivo de neurônios em LeNet

9

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?

pir
fonte
11
A barra lateral relacionada sugeriu essa pergunta , que é relevante para o tipo de coisa que você pensa e é interessante.
Dougal

Respostas:

2

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 ):

exemplo visual de convolução

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.

Dougal
fonte
Boa visualização! Seu exemplo faz todo sentido. Se eu adicionasse uma camada de pool 2x2 após a camada convolucional, cada neurônio na camada pool teria apenas um campo receptivo de 4x4, apesar de misturar quatro campos 3x3 à medida que os neurônios da camada convolucional se sobrepõem. Eu posso facilmente entender isso e criar algumas fórmulas simples para o campo receptivo com base no tamanho do pool etc. No entanto, fica mais complexo para a seguinte camada convolucional, pois o campo receptivo agora também depende do andamento da camada de votação etc. Que fórmula para RF leva isso em consideração?
21315 pir
então o quadrado azul no pixel de origem é do tamanho do campo receptivo?
Charlie Parker
Eu tenho a mesma pergunta, no artigo "R-CNN mais rápido: rumo à detecção de objetos em tempo real com redes de propostas de regiões", diz na seção 3.1, o campo receptivo de ZF e VGG16 é 171 e 228, mas não adiciona a partir da configuração de rede. Espero que alguém possa esclarecer isso para mim.
Chan Kim
0

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

iate clube
fonte