ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

感受野详解

2021-03-06 12:32:49  阅读:424  来源: 互联网

标签:感受 公式 卷积 RF 详解 计算 18


这里写目录标题

概念

  • 在卷积神经网络中,感受野(Receptive Field)的定义是卷积神经网络每一层输出的特征图(feature map)上的像素点在输入图片上映射的区域大小。再通俗点的解释是,特征图上的一个点对应输入图上的区域,如图1所示。
    在这里插入图片描述
  • 在典型CNN结构中,FC层每个输出节点的值都依赖FC层所有输入,而CONV层每个输出节点的值仅依赖CONV层输入的一个区域, 这个区域之外的其他输入值都不会影响输出值,该区域就是感受野。

举例

  • 两层3*3的卷积核卷积操作之后的感受野是5*5,其中卷积核(filter)的步长(stride)为1、padding为0,如图所示:
    在这里插入图片描述
  • 三层3*3卷积核操作之后的感受野是7*7,其中卷积核的步长为1,padding为0,如图所示:
    在这里插入图片描述

感受野的计算规律

  • 设感受野为r(即r为一个元素映射到输入图像的正方形矩阵的边长,这里假设卷积核为正方形,所以映射也是正方形),s为步长,s1表示步长=1,s2表示步长=2,k为卷积核尺寸。
  • 初始feature map的感受野是1,即 r 0 = 1 r_{0}=1 r0​=1,很明显嘛,输入图像还没有经过任何操作,每个元素的感受野当然是1。
  • 规定初始s是1,即 s 0 = 1 s_{0}=1 s0​=1。
  • 每经过一个conv k*k s,感受野按照如下公式变化: r i + 1 = r i + ( k i + 1 − 1 ) ∗ ∏ n = 0 i s n r_{i+1}=r_{i}+(k_{i+1}-1)*\displaystyle\prod_{n=0}^{i} s_{n} ri+1​=ri​+(ki+1​−1)∗n=0∏i​sn​。
    一定要注意这个公式最后的连乘,我自己推公式的时候以为不是连乘而是 s i s_{i} si​,其实是是不对的。因为很多博客的推导感受野公式的思路和我不一样,直到看到这篇博客是用的连乘我才意识到自己推导的公式的错误所在。博客链接:https://www.cnblogs.com/ocean1100/p/9864193.html
  • 由上述公式可知, r 1 = k 1 r_{1}=k_{1} r1​=k1​必然成立,也就是说,第一层的感受野必然等于卷积核的尺寸,这与已知符合。
  • 池化操作和卷积操作都对应上面的公式,其实仔细想想,池化和卷积其实是很相似的。
  • 上述公式是从前往后计算感受野的公式,而从后往前计算感受野可以用下面这个公式:
    r i − 1 = ( r i − 1 ) ∗ s i − 1 + k i − 1 r_{i-1}=(r_{i}-1)*s_{i-1}+k_{i-1} ri−1​=(ri​−1)∗si−1​+ki−1​
    此时最后一层感受野的大小=卷积核的大小,其实这种方法的原理就是倒过来看问题,你想最后一层感受野就像是细胞,模拟细胞分裂的过程, + k i − 1 +k_{i-1} +ki−1​其实是从 r i r_{i} ri​中取出1来,这个细胞其实是由前一层卷过来的,卷积核尺寸是 k i − 1 k_{i-1} ki−1​,所以要加 k i − 1 k_{i-1} ki−1​,而 剩 下 的 r i 剩下的r_{i} 剩下的ri​,即 r i − 1 r_{i}-1 ri​−1个感受野则是对应步长的。其实文字不太好叙述,大家需要好好理解一下,从后往前的好处就是不用计算s的叠乘了,不过这对于计算机来说并不是什么难事,从后往前是一种反向思维,我个人感觉从前往后更好理解一些。
  • 特殊情况,经过conv1x1 s1不会改变感受野,经过FC层和GAP层,感受野就是整个输入图像
  • 经过多分枝的路径,按照感受野最大支路计算,shotcut也一样所以不会改变感受野
  • ReLU, BN,dropout等元素级操作不会影响感受野
  • 全局步进等于经过所有层的步进累乘,即 ∏ n = 0 i s n \displaystyle\prod_{n=0}^{i} s_{n} n=0∏i​sn​
  • 经过的所有层所加padding都可以等效加在输入图像,等效值P,直接用卷积的输入输出公式
    f o u t = ( f i n − k + 2 ∗ p ) / s + 1 f_{out}=(f_{in}-k+2*p)/s+1 fout​=(fin​−k+2∗p)/s+1
    反推出P即可

两种计算感受野的方法

从前往后

  • 我们来计算一个简单的例子,先学会计算感受野,再来分析复杂的网络。
    在这里插入图片描述
    根据上面的规律,我们可以计算:
    r 0 = 1 , s 0 = 1 r_{0}=1,s_{0}=1 r0​=1,s0​=1
    r 1 = 3 r_{1}=3 r1​=3
    r 2 = 3 + ( 2 − 1 ) ∗ 1 = 4 r_{2}=3+(2-1)*1=4 r2​=3+(2−1)∗1=4(r2即对应pool1层)
    r 3 = 4 + ( 3 − 1 ) ∗ 2 = 8 r_{3}=4+(3-1)*2=8 r3​=4+(3−1)∗2=8
    r 4 = 8 + ( 2 − 1 ) ∗ 2 = 10 r_{4}=8+(2-1)*2=10 r4​=8+(2−1)∗2=10(r4即对应pool2层)
    r 5 = 10 + ( 3 − 1 ) ∗ 4 = 18 r_{5}=10+(3-1)*4=18 r5​=10+(3−1)∗4=18
    r 6 = 18 + ( 3 − 1 ) ∗ 4 = 26 r_{6}=18+(3-1)*4=26 r6​=18+(3−1)∗4=26(r6即对应conv4层)
    r 7 = 26 + ( 2 − 1 ) ∗ 4 = 30 r_{7}=26+(2-1)*4=30 r7​=26+(2−1)∗4=30

从后往前

  • 我们从最后一层的池化层开始计算感受野:
    p o o l 3 : R = 2 ( 最 后 一 层 池 化 层 输 出 特 征 图 的 感 受 野 大 小 等 于 卷 积 核 的 大 小 ) pool3:R=2(最后一层池化层输出特征图的感受野大小等于卷积核的大小) pool3:R=2(最后一层池化层输出特征图的感受野大小等于卷积核的大小)
    c o n v 4 : R = ( 2 − 1 ) ∗ 1 + 3 = 4 。 conv4:R=(2-1)*1+3=4。 conv4:R=(2−1)∗1+3=4。
    c o n v 3 : R = ( 4 − 1 ) ∗ 1 + 3 = 6 。 conv3:R=(4-1)*1+3=6。 conv3:R=(4−1)∗1+3=6。
    p o o l 2 : R = ( 6 − 1 ) ∗ 2 + 2 = 12 。 pool2:R=(6-1)*2+2=12。 pool2:R=(6−1)∗2+2=12。
    c o n v 2 : R = ( 12 − 1 ) ∗ 1 + 3 = 14 。 conv2:R=(12-1)*1+3=14。 conv2:R=(12−1)∗1+3=14。
    p o o l 1 : R = ( 14 − 1 ) ∗ 2 + 2 = 28 。 pool1:R=(14-1)*2+2=28。 pool1:R=(14−1)∗2+2=28。
    c o n v 1 : R = ( 28 − 1 ) ∗ 1 + 3 = 30 。 conv1:R=(28-1)*1+3=30。 conv1:R=(28−1)∗1+3=30。

推导VGG16网络的感受野

结构

在这里插入图片描述

从后往前

在VGG16中:pool5中
pool5:RF=2
conv5_3 :RF=(2-1)*1+3=4
conv5_2 : RF=(4-1)*1+3=6
conv5_2: RF=(6-1)*1+3=8
conv5_1: RF=(8-1)*2+2=16
pool4 : RF=(8-1)*2+2=16
conv4_3: RF=(16-1)*1+3=18
conv4_2: RF=(18-1)*1+3=20
conv4_1 : RF=(20-1)*1+3=22
pool3: RF=(22-1)*2+2=44
conv3_3: RF=(44-1)*1+3=46
conv3_2: RF=(46-1)*1+3=48
conv3_1: RF=(48-1)*1+3=50
pool2: RF=(50-1)*2+2=100
conv2_2: RF=(150-1)*1+3=152
conv2_1: RF=(152-1)*1+3=154
pool1: RF=(154-1)*2+2=208
conv1_2: RF=(208-1)*1+3=210
conv1_1: RF=(210-1)1+3=212

从前往后

conv1_1: RF=3
conv1_2: RF=3+(3-1)*1=5
pool1: RF=5+(2-1)*1=6
conv2_1: RF=6+(3-1)*2=10

后面的数在上图的栏目里都有了,我就不一一计算了,最终结果也是212

感受野大于图片

  • 感受野大于图片怎么理解呢?其实是由于存在padding操作导致的。padding操作对于感受野的意义就相当于扩大图片。扩大后的尺寸可以用我在规律里最后一条提到的公式去计算,相当于去掉所有步骤中的padding操作去计算实际的图片尺寸,这个没有什么意义……只要知道为啥感受野大于图片就好了。

标签:感受,公式,卷积,RF,详解,计算,18
来源: https://blog.csdn.net/qq_41076797/article/details/114434415

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有