感受野(Receptive Field)的原理与计算
感受野Receptive Field的原理与计算一、感受野概念二、感受野计算三、感受野计算检验一、感受野概念 在卷积神经网络中,感受野(Receptive Field) 的定义是:卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像(即输入图像经过预处理后)上映射的区域大小。网络内部的不同..
一、感受野概念
在卷积神经网络中,感受野(Receptive Field) 的定义是:卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像(即输入图像经过预处理后)上映射的区域大小。网络内部的不同位置的神经元对原图像的感受范围的大小。通俗解释就是这一层受到原始图像影响的大小。
因此神经元感受野的值与接触到原始图像范围成正比,RF越大意味着它可能更为全局,语义层次更高的特征;若是值越小则表示其所包含的特征越趋向局部和细节,语义层次更低的特征。因此感受野的值也可以用来大致判断每一层的抽象层次。
举例:原始图像为5×5,卷积核(Kernel Size)为 3×3 ,padding为 1,stride为 2,连续做两次卷积,则整个过程图为:
①第一次卷积后: 最后得到3×3的特征图,感受野RF=3×3;
②第二次卷积后: 最后得到2×2的特征图,感受野RF=7×7;
下图有助于理解:
二、感受野计算
其中
l
k
−
1
l_{k-1}
lk−1 为第
k
−
1
k-1
k−1 层的感受野大小,
f
k
f_{k}
fk 为第 k 层的卷积核大小或者是池化层尺寸大小,
s
k
s_{k}
sk则是第k层卷积的stride。
例如:分别理解如何求出下面各层的感受野RF?
Layer | Kernel size | Stride | RF |
---|---|---|---|
conv1 | 3×3 | 1 | 3 |
pool1 | 2×2 | 2 | 4 |
conv2 | 3×3 | 1 | 8 |
conv3 | 3×3 | 1 | 12 |
感受野初始值 l 0 l_{0} l0=1,每层感受野计算过程为:
l k = { l k − 1 + [ ( f k − 1 ) ] … … … … … ( k = 1 ) l k − 1 + [ ( f k − 1 ) × ∏ i = 1 k − 1 s i ] … … ( k ⩾ 2 ) l_{k}=\left\{\begin{matrix} &l_{k-1}+[(f_{k}-1)]……………(k=1) \\ &l_{k-1}+[(f_{k}-1)\times\prod_{i=1}^{k-1}s_{i}]……(k\geqslant2) \end{matrix}\right. lk={lk−1+[(fk−1)]……………(k=1)lk−1+[(fk−1)×∏i=1k−1si]……(k⩾2)
l 0 l_{0} l0 = 1
l 1 l_{1} l1 = 1 + (3-1) = 3
l 2 l_{2} l2 = 3 + (2-1) × 1 = 4
l 3 l_{3} l3 = 4 + (3-1) × 1 × 2= 8
l 4 l_{4} l4 = 8 + (3-1) × 1 × 2 × 1= 12
三、感受野计算检验
若害怕自己RF算错的话,可以推荐看下面这个网站:Fomoro AI
我已经做好上述例子检验,如下图所示;
Reference:
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)