(转)感受野(receptive field)

感受野定义了feature map上的一个点来自于原图的范围。

规则1: stride的计算,某一层的stride等于之前所有层的stride的连乘积。

规则2: 某一层感受野的计算,某一层的感受野指的是这一层的输出feature map上的一个点来自于原图的范围。某一层的感受野等于(前一层的感受野+(kernel_size-1)*前一层的stride)。

For instance:2X2的maxpool的kernel size 为2,stride也为2,所以pooling层输出的感受野等于(前一层的感受野 + 1*前一层的stride)

 

转载自:https://blog.csdn.net/qq_23150675/article/details/79452644

 

原文地址:https://www.jianshu.com/p/2b968e7a1715

1.先举个例子:
  • e.g.两层 3*3 卷积操作的有效区域(感受野)是5*5 (所有filter的stride=1,pad=0),示意图如下:


     
     
  • 三层3*3卷积核操作的有效区域是7*7 (所有filter的stride=1,pad=0),示意图如下:


     
     
2. 基本定义:
  • 定义:感受野用来表示网络内部的不同神经元对原图像的感受范围的大小,或者说,convNets(cnn)每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小。
  • 神经元之所以无法对原始图像的所有信息进行感知,是因为在这些网络结构中普遍使用卷积层和pooling层,在层与层之间均为局部连接。
  • 神经元感受野的值越大表示其能接触到的原始图像范围就越大,也意味着它可能蕴含更为全局,语义层次更高的特征;相反,值越小则表示其所包含的特征越趋向局部和细节。因此感受野的值可以用来大致判断每一层的抽象层次。
3. 感受野的计算
  •  
    感受野的计算

    可以看到在Conv1中的每一个单元所能看到的原始图像范围是3*3,而由于Conv2的每个单元都是由 2*2范围的Conv1构成,因此回溯到原始图像,其实是能够看到5*5的原始图像范围的。因此我们说Conv1的感受野是3,Conv2的感受野是5. 输入图像的每个单元的感受野被定义为1,这应该很好理解,因为每个像素只能看到自己。

 
image.png

在上图中,数字代表某单元能够看到的原始图像像素,我们用r_n表示第n个卷积层中,每个单元的感受野,用k_n和s_n表示第n个卷积层的kernel_size和stride.
对Raw Image进行kernel_size=3, stride 2的卷积操作所得到的fmap1 (fmap为feature map的简称,为每一个conv层所产生的输出)的结果是显而易见的。序列[1 2 3]表示fmap1的第一个单元能看见原图像中的1,2,3这三个像素,而第二个单元则能看见3,4,5。这两个单元随后又被kernel_size=2,stride 1的Filter 2进行卷积,因而得到的fmap2的第一个单元能够看见原图像中的1,2,3,4,5共5个像素(即取[1 2 3]和[3 4 5]的并集)。接下来我们尝试一下如何用公式来表述上述过程。可以看到,[1 2 3]和[3 4 5]之间因为Filter 1的stride 2而错开(偏移)了两位,而3是重叠的。对于卷积两个感受野为3的上层单元,下一层最大能获得的感受野为 3*2=6,但因为有重叠,因此要减去(kernel_size - 1)个重叠部分,而重叠部分的计算方式则为感受野减去前面所说的偏移量,这里是2. 因此我们就得到


 
image.png

继续往下一层看,我们会发现[1 2 3 4 5]和[3 4 5 6 7]的偏移量仍为2,并不简单地等于上一层的s_2, 这是因为之前的stride对后续层的影响是永久性的,而且是累积相乘的关系(例如,在fmap3中,偏移量已经累积到4了),也就是说 r_3应该这样求


 
image.png

同理:
 
image.png

。。。。。。可抽象如下:
 
image.png

理解:第n个卷积层的感受野等于前一个卷积层的感受野输出再乘以第n卷积层的kernel_size,即第n卷积层要合并多少个,这里算出的是总的量,还要减去之间有重复的量,第n卷积层总共要合并k_n个,那么前后两两相比较,空隙共有k_n-1个,比如说:第一层和第二层有重复,第二层和第三层也有重复等等,然后就要计算每两个之间重复的量有多少,首先每层共有r_n-1个数字,需要减去往右偏移的量,即stride,第1卷积层的stride_1,第二层会在第一层的基础上偏移stride_2,即总共偏移了 stride_1*stride_2,即偏移量是一个乘积的累计效果,所以式子如下:


 
image.png

经过去括号简化。可得下面式子:
 
image.png

以上


作者:默写年华Antifragile
链接:https://www.jianshu.com/p/2b968e7a1715
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

转载于:https://www.cnblogs.com/ya-cpp/p/9259126.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值