Rezeptives Feld von Neuronen in LeNet

9

Ich versuche, die Rezeptionsfelder von CNN besser zu verstehen. Dazu möchte ich das Empfangsfeld jedes Neurons in LeNet berechnen. Für ein normales MLP ist es ziemlich einfach (siehe http://deeplearning.net/tutorial/lenet.html#sparse-connectivity ), aber es ist schwieriger, das Empfangsfeld eines Neurons in einer Schicht nach einer oder mehreren Faltungsschichten und zu berechnen Schichten bündeln.

Was ist das Empfangsfeld eines Neurons in der 2. Faltungsschicht? Wie viel größer ist es in der folgenden Unterabtastungs- / Pooling-Schicht? Und wie lautet die Formel zur Berechnung dieser?

pir
quelle
1
In der zugehörigen Seitenleiste wurde diese Frage vorgeschlagen , die für die Art von Dingen, über die Sie nachdenken, interessant und interessant ist.
Dougal

Antworten:

2

Wenn Sie sich ein Faltungsnetz als Instanz eines Standard-MLP vorstellen, können Sie die Empfangsfelder genauso herausfinden wie das Beispiel, das Sie verknüpft haben.

Denken Sie daran, dass eine Faltungsschicht im Wesentlichen eine Abkürzung für eine Schicht mit vielen wiederholten Mustern ist, wie in diesem Bild (aus dieser Antwort , ursprünglich von hier ):

visuelles Beispiel für Faltung

Jedes der "Zielpixel" dieses Bildes entspricht einem Neuron, dessen Eingaben das blaue Quadrat im Quellbild sind. Abhängig von Ihrer Netzwerkarchitektur entsprechen die Windungen möglicherweise nicht genau solchen Pixeln, aber es ist die gleiche Idee. Die Gewichte, die als Eingaben für all diese Faltungsneuronen verwendet werden, sind gebunden, aber das ist für das, woran Sie hier denken, irrelevant.

Das Zusammenfassen von Neuronen kann auf die gleiche Weise betrachtet werden, indem die Empfangsfelder jeder ihrer Eingaben kombiniert werden.

Dougal
quelle
Schöne Visualisierung! Ihr Beispiel macht durchaus Sinn. Wenn ich nach der Faltungsschicht eine 2x2-Pooling-Schicht hinzufügen würde, hätte jedes Neuron in der Pooling-Schicht nur ein Empfangsfeld von 4x4, obwohl vier 3x3-Felder gemischt würden, da sich die Neuronen in der Faltungsschicht überlappen. Ich kann mich leicht darum kümmern und einige einfache Formeln für das Empfangsfeld erstellen, die auf der Poolgröße usw. basieren. Für die folgende Faltungsschicht wird es jedoch komplexer, da das Empfangsfeld jetzt auch vom Schritt für die Abfrageschicht usw. abhängt. Welche Formel für RF berücksichtigt dies?
Pir
Ist das blaue Quadrat im Quellpixel also so groß wie das Empfangsfeld?
Charlie Parker
Ich habe die gleiche Frage in dem Artikel "Schnelleres R-CNN: Auf dem Weg zur Echtzeit-Objekterkennung mit Regionsvorschlagsnetzwerken", in Abschnitt 3.1 heißt es, dass das Empfangsfeld von ZF und VGG16 171 und 228 ist, aber nicht hinzugefügt wird von der Netzwerkkonfiguration. Hoffe, jemand könnte das für mich klären.
Chan Kim
0

In Faster-rcnn kann das effektive Empfangsfeld wie folgt berechnet werden (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) ====>
ein 3 * 3-Fenster in der Feature-Map.
Nehmen wir der Einfachheit halber eine Dimension. Wenn wir von Größe 3 zurückkommen, ist das ursprüngliche Empfangsfeld:
1). zu Beginn von Conv5: 3 + 2 + 2 + 2 = 9
2). zu Beginn von Conv4: 9 * 2 + 2 + 2 + 2 = 24
3). zu Beginn von Conv3: 24 * 2 + 2 + 2 + 2 = 54
4). zu Beginn von Conv2: 54 * 2 + 2 + 2 = 112
5). am Anfang von Conv1 (ursprüngliche Eingabe): 112 * 2 + 2 + 2 = 228

Jachtklub
quelle