Recepcyjne pole neuronów w LeNet

9

Próbuję lepiej zrozumieć receptywne pola CNN. W tym celu chciałbym obliczyć pole recepcyjne każdego neuronu w LeNet. W przypadku normalnego MLP jest to dość łatwe (patrz http://deeplearning.net/tutorial/lenet.html#sparse-connectivity ), ale trudniej jest obliczyć pole recepcyjne neuronu w warstwie następującej po jednej lub więcej warstwach splotowych i łączenie warstw.

Jakie jest pole recepcyjne neuronu w 2. warstwie splotowej? O ile jest większy w następującej warstwie podpróbkowania / pulowania? A jaki jest wzór na ich obliczenie?

pir
źródło
1
Powiązany pasek boczny zasugerował to pytanie , które jest istotne dla tego, o czym myślisz i które jest interesujące.
Dougal

Odpowiedzi:

2

Jeśli myślisz o sieci splotowej jako instancji standardowej MLP, możesz dowiedzieć się o polach recepcyjnych w dokładnie taki sam sposób, jak w przykładzie, który podłączyłeś.

Przypomnijmy, że warstwa splotowa jest w zasadzie skrótem dla warstwy z wieloma powtarzającymi się wzorami, jak na tym obrazku (z tej odpowiedzi , pierwotnie stąd ):

wizualny przykład splotu

Każdy z „docelowych pikseli” tego obrazu odpowiada neuronowi, którego wejściami jest niebieski kwadrat na obrazie źródłowym. W zależności od architektury sieci zwoje mogą nie odpowiadać dokładnie takim pikselom, ale to ten sam pomysł. Wagi stosowane jako dane wejściowe dla wszystkich neuronów splotowych są powiązane, ale nie ma to znaczenia dla tego, o czym tutaj myślisz.

Łączenie neuronów można myśleć w ten sam sposób, łącząc pola recepcyjne każdego z ich sygnałów wejściowych.

Dougal
źródło
Ładna wizualizacja! Twój przykład ma doskonały sens. Gdybym dodał warstwę puli 2x2 po warstwie splotowej, wówczas każdy neuron w warstwie puli miałby tylko pole recepcyjne 4x4, pomimo zmieszania czterech pól 3x3, gdy neurony w warstwie splotowej zachodzą na siebie. Mogę łatwo ominąć to i stworzyć proste formuły dla pola odbiorczego w oparciu o wielkość puli itp. Jednak staje się bardziej skomplikowane dla następnej warstwy splotowej, ponieważ pole odbiorcze zależy teraz również od kroku warstwy odpytywania itp. Jaki wzór na RF bierze to pod uwagę?
pir
więc czy niebieski kwadrat w pikselu źródłowym ma wielkość pola odbiorczego?
Charlie Parker,
Mam to samo pytanie, w artykule „Szybsze R-CNN: w kierunku wykrywania obiektów w czasie rzeczywistym za pomocą sieci proponujących regiony”, mówi w sekcji 3.1, pole odbiorcze ZF i VGG16 wynosi 171 i 228, ale nie dodaje w górę od konfiguracji sieci. Mam nadzieję, że ktoś może mi to wyjaśnić.
Chan Kim,
0

W Faster-rcnn efektywne pole odbiorcze można obliczyć w następujący sposób (VGG16):

Img->
Conv1 (3) -> Conv1 (3) -> Pula 1 (2) ==>
Conv2 (3) -> Conv2 (3) -> Pula 2 (2) ==>
Conv3 (3) -> Conv3 (3 ) -> Conv3 (3) -> Pool3 (2) ==>
Conv4 (3) -> Conv4 (3) -> Conv4 (3) -> Pool4 (2) ==>
Conv5 (3) -> Conv5 (3 ) -> Conv5 (3) ====>
okno 3 * 3 na mapie obiektów.
Weźmy jeden wymiar dla uproszczenia. Jeśli wywodzimy z rozmiaru 3, pierwotne pole odbiorcze:
1). na początku Conv5: 3 + 2 + 2 + 2 = 9
2). na początku Conv4: 9 * 2 + 2 + 2 + 2 = 24
3). na początku Conv3: 24 * 2 + 2 + 2 + 2 = 54
4). na początku Conv2: 54 * 2 + 2 + 2 = 112
5). na początku Conv1 (oryginalne wejście): 112 * 2 + 2 + 2 = 228

Klub jachtowy
źródło