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?
Antworten:
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 ):
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.
quelle
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
quelle