J'essaie de mieux comprendre les champs réceptifs de CNN. Pour ce faire, je voudrais calculer le champ récepteur de chaque neurone dans LeNet. Pour un MLP normal, c'est plutôt facile (voir http://deeplearning.net/tutorial/lenet.html#sparse-connectivity ), mais il est plus difficile de calculer le champ récepteur d'un neurone dans une couche suivant une ou plusieurs couches convolutionnelles et regroupement des couches.
Quel est le champ récepteur d'un neurone dans la 2. couche convolutionnelle? Quelle est sa taille dans la couche de sous-échantillonnage / regroupement suivante? Et quelle est la formule pour les calculer?
Réponses:
Si vous pensez à un réseau convolutionnel comme une instance d'un MLP standard, vous pouvez déterminer les champs récepteurs exactement de la même manière que l'exemple que vous avez lié.
Rappelons qu'une couche convolutionnelle est essentiellement un raccourci pour une couche avec de nombreux motifs répétés, comme dans cette image (à partir de cette réponse , à l'origine d' ici ):
Chacun des "pixels de destination" de cette image correspond à un neurone dont les entrées sont le carré bleu dans l'image source. En fonction de l'architecture de votre réseau, les circonvolutions peuvent ne pas correspondre exactement à des pixels comme celui-ci, mais c'est la même idée. Les poids utilisés comme entrées pour tous ces neurones convolutifs sont liés, mais cela n'a rien à voir avec ce à quoi vous pensez ici.
La mise en commun des neurones peut être pensée de la même manière, en combinant les champs récepteurs de chacune de leurs entrées.
la source
Dans Faster-rcnn, le champ récepteur efficace peut être calculé comme suit (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) ====>
une fenêtre 3 * 3 dans la carte des fonctionnalités.
Prenons une dimension pour plus de simplicité. Si nous dérivons de la taille 3, le champ récepteur d'origine:
1). au début de Conv5: 3 + 2 + 2 + 2 = 9
2). au début de Conv4: 9 * 2 + 2 + 2 + 2 = 24
3). au début de Conv3: 24 * 2 + 2 + 2 + 2 = 54
4). au début de Conv2: 54 * 2 + 2 + 2 = 112
5). au début de Conv1 (entrée d'origine): 112 * 2 + 2 + 2 = 228
la source