LeNet中神经元的感受野

机器算法验证 深度学习 卷积神经网络
2022-03-13 06:27:47

我正在尝试更好地了解 CNN 的感受野。为此,我想计算 LeNet 中每个神经元的感受野。对于普通的 MLP,它相当容易(参见http://deeplearning.net/tutorial/lenet.html#sparse-connectivity),但是在一个或多个卷积层之后的层中计算神经元的感受野更加困难,并且池化层。

2. 卷积层中一个神经元的感受野是多少?在下面的子采样/池化层中它大了多少?计算这些的公式是什么?

2个回答

如果您将卷积网络视为标准 MLP 的一个实例,您可以以与您链接的示例完全相同的方式计算感受野。

回想一下,卷积层本质上是具有许多重复模式的层的简写,如下图所示(来自这个答案,最初来自这里):

卷积的视觉示例

该图像的每个“目标像素”对应于一个神经元,其输入是源图像中的蓝色方块。根据您的网络架构,卷积可能不完全对应于这样的像素,但这是相同的想法。用作所有这些卷积神经元输入的权重是相关的,但这与您在这里的想法无关。

池化神经元可以用同样的方式来考虑,结合它们每个输入的感受野。

在 Faster-rcnn 中,有效感受野可以计算如下(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) ====>
特征图中的 3 * 3 窗口。
为简单起见,让我们采用一维。如果我们从大小 3 推导出原始感受野:
1)。在 Conv5 的开头:3 + 2 + 2 + 2 = 9
2)。在 Conv4 的开头:9 * 2 + 2 + 2 + 2 = 24
3)。在 Conv3 的开头:24 * 2 + 2 + 2 + 2 = 54
4)。在 Conv2 的开头:54 * 2 + 2 + 2 = 112
5)。在Conv1的开头(原始输入):112 * 2 + 2 + 2 = 228