感受野的含义及计算方法

1 感受野(Receptive Field)的概念

感受野(Receptive Field)的概念:在卷积神经网络中,感受野的定义是 卷积神经网络每一层输出的特征图(feature map)上的像素点在原始输入图像上映射的区域大小。第一层卷积层的输出特征图像素的感受野大小等于卷积核大小,其它卷积层的输出特征图的感受野的大小和它之前所有层的卷积核大小和步长有关系
感受野的含义及计算方法_第1张图片

2 感受野的作用:

特征图上的感受野越大,那么该特征图上每一个特征点所能看到的原始输入图形上的区域就越大,所以该它越能检测比较大的物体,但是也越容易忽略小的物体。所以越大的感受野,越能考虑到整体,越能观察到全局信息。所以在实际的feature map中,随着网络深度的加深,浅层(浅层指的是刚进入神经网络的那几层)的feature map的感受野较小,所以它们主要包含低级的信息(物体边缘,颜色,初级位置信息等),深层的feature map的感受野较大,所以它们包含高等信息(例如物体的语义信息:狗,猫,汽车等等)。

3 感受野的计算:

  • 第一层卷积层的输出特征图像素的感受野大小等于卷积核大小,其它卷积层的输出特征图的感受野的大小和它之前所有层的卷积核大小和步长有关系。
    在下图中,输入图形的大小是5x5,假设保持滑动窗口的步长stride=1,padding=0,经过第一次卷积,得到的特征图大小是3x3,经过第二层卷积,得到的特征 图大小是1x1,所以第一层特征图的感受野是3x3,第二层特征图的感受野是5x5。
    感受野的含义及计算方法_第2张图片
    那么有人肯定有这个疑问,上图的卷积过程需要经过两次卷积才可以将原始输入图形变成1x1的特征图,这跟使用一个5x5的卷积核进行一次卷积得到的特征图 的结果是一样的,那为什么非要进行两处卷积呢?

    假设输入大小都是hxwxc,并且都使用c个卷积核(得到c个特征图),可以来计算一下其各自所需参数:

    一个5x5的卷积所需参数:cx(5x5xc)=25c^2

    2个3x3卷积核所需参数:2xcx(3x3xc)=18c^2

    很明显,堆叠小的卷积核所需的参数更少一些,并且卷积过程越多,特征提取也会越细致,加入的非线性变换也随着增多(因为通常情况下每个卷积层后面一般 都加激活函数,这些激活函数可以完成非线性变换,所以卷积层越多,非线性变换也随着增多),还不会增大权重参数个数,这就是VGG网络的基本出发点,用 小的卷积核来完成体特征提取操作。

  • 如图所示 7x7 的原始图像,经过kernel_size=3, stride=2的Conv1,kernel_size=2, stride=1的Conv2后,输出特征图大小为 2x2,很明显,原始图像的每个单元的感受野为1,Conv1的每个单元的感受野为3,而由于Conv2的每个单元都是由 2x2 范围的Conv1构成,因此回溯到原始图像,每个单元能够看到 5x5 大小的区域范围。
    感受野的含义及计算方法_第3张图片
  • 卷积层(conv)和池化层(pooling)都会影响感受野,而激活函数层通常对于感受野没有影响,当前层的步长并不影响当前层的感受野,感受野和填补(padding)没有关系, 计算当层感受野的公式如下:
    感受野的含义及计算方法_第4张图片

下面来练练手,以AlexNet举个例子

感受野的含义及计算方法_第5张图片

你可能感兴趣的:(深度学习,神经网络,cnn)