Campo recettivo dei neuroni in LeNet


9

Sto cercando di capire meglio i campi ricettivi della CNN. Per fare ciò, vorrei calcolare il campo ricettivo di ciascun neurone in LeNet. Per una normale MLP è piuttosto semplice (vedi http://deeplearning.net/tutorial/lenet.html#sparse-connectivity ), ma è più difficile calcolare il campo ricettivo di un neurone in uno strato che segue uno o più strati convoluzionali e livelli di pooling.

Qual è il campo ricettivo di un neurone nello strato 2. convoluzionale? Quanto è più grande nel seguente livello di sottocampionamento / pooling? E qual è la formula per calcolarli?


1
La barra laterale correlata ha suggerito questa domanda , che è rilevante per il tipo di cosa a cui stai pensando e interessante.
Dougal,

Risposte:


2

Se pensi a una rete convoluzionale come un'istanza di un MLP standard, puoi capire i campi ricettivi esattamente allo stesso modo dell'esempio che hai collegato.

Ricordiamo che uno strato convoluzionale è essenzialmente una scorciatoia per uno strato con molti motivi ripetuti, come in questa immagine (da questa risposta , originariamente da qui ):

esempio visivo di convoluzione

Ciascuno dei "pixel di destinazione" di quell'immagine corrisponde a un neurone i cui input sono il quadrato blu nell'immagine sorgente. A seconda dell'architettura della rete, le convoluzioni potrebbero non corrispondere esattamente a pixel del genere, ma è la stessa idea. I pesi usati come input per tutti quei neuroni convoluzionali sono legati, ma questo è irrilevante per quello che stai pensando qui.

Il pooling di neuroni può essere pensato allo stesso modo, combinando i campi recettivi di ciascuno dei loro input.


Bella visualizzazione! Il tuo esempio ha perfettamente senso. Se aggiungessi uno strato di pool 2x2 dopo lo strato convoluzionale, ogni neurone nello strato di pool avrebbe solo un campo ricettivo di 4x4, nonostante la miscelazione di quattro campi 3x3 mentre i neuroni nello strato convoluzionale si sovrappongono. Posso facilmente orientarmi e creare alcune semplici formule per il campo ricettivo in base alle dimensioni del pool ecc. Tuttavia, diventa più complesso per il seguente livello convoluzionale poiché il campo ricettivo ora dipende anche dal passo per il livello di polling ecc. Quale formula per RF tiene conto di questo?
pir

quindi il quadrato blu nel pixel sorgente ha le dimensioni del campo ricettivo?
Charlie Parker,

Ho la stessa domanda, nel documento "R-CNN più veloce: verso il rilevamento di oggetti in tempo reale con reti di proposte regionali", si dice nella sezione 3.1, il campo ricettivo di ZF e VGG16 è 171 e 228 ma non aggiunge dalla configurazione di rete. Spero che qualcuno possa chiarire questo per me.
Chan Kim,

0

In Faster-rcnn, il campo ricettivo effettivo può essere calcolato come segue (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 finestra 3 * 3 nella mappa delle caratteristiche.
Prendiamo una dimensione per semplicità. Se deriviamo dalla dimensione 3, il campo ricettivo originale:
1). all'inizio di Conv5: 3 + 2 + 2 + 2 = 9
2). all'inizio di Conv4: 9 * 2 + 2 + 2 + 2 = 24
3). all'inizio di Conv3: 24 * 2 + 2 + 2 + 2 = 54
4). all'inizio di Conv2: 54 * 2 + 2 + 2 = 112
5). all'inizio di Conv1 (input originale): 112 * 2 + 2 + 2 = 228

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.