我试图更好地了解CNN的接受领域。为此,我想计算LeNet中每个神经元的感受野。对于普通的MLP来说,它相当简单(请参阅http://deeplearning.net/tutorial/lenet.html#sparse-connectivity),但是要计算一个或多个卷积层和池层。
2.卷积层中神经元的感受野是什么?在下面的子采样/合并层中,它的大小是多少?计算这些的公式是什么?
我试图更好地了解CNN的接受领域。为此,我想计算LeNet中每个神经元的感受野。对于普通的MLP来说,它相当简单(请参阅http://deeplearning.net/tutorial/lenet.html#sparse-connectivity),但是要计算一个或多个卷积层和池层。
2.卷积层中神经元的感受野是什么?在下面的子采样/合并层中,它的大小是多少?计算这些的公式是什么?
Answers:
如果您将卷积网络视为标准MLP的实例,则可以采用与链接的示例完全相同的方式来计算接受域。
回想一下,卷积层本质上是具有许多重复模式的层的简写,如该图像(来自此答案,最初来自此处):
该图像的每个“目标像素”对应于一个神经元,其输入是源图像中的蓝色方块。根据您的网络体系结构,卷积可能不完全对应于这样的像素,但这是相同的想法。用作所有这些卷积神经元的输入的权重是有限的,但这与您在此处所考虑的无关。
合并神经元的方法可以相同,将它们每个输入的接受场组合在一起。
在Faster-rcnn中,可以如下计算有效接收场(VGG16):
图->
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