一、感受野概念

       在卷积神经网络中,感受野(Receptive Field) 的定义是:卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像(即输入图像经过预处理后)上映射的区域大小。网络内部的不同位置的神经元对原图像的感受范围的大小。通俗解释就是这一层受到原始图像影响的大小。
       因此神经元感受野的值与接触到原始图像范围成正比,RF越大意味着它可能更为全局,语义层次更高的特征;若是值越小则表示其所包含的特征越趋向局部和细节,语义层次更低的特征。因此感受野的值也可以用来大致判断每一层的抽象层次。


举例:原始图像为5×5,卷积核(Kernel Size)为 3×3 ,padding为 1,stride为 2,连续做两次卷积,则整个过程图为:

①第一次卷积后: 最后得到3×3的特征图,感受野RF=3×3;
                            0

                                                  1
②第二次卷积后: 最后得到2×2的特征图,感受野RF=7×7;
                                                  2
下图有助于理解:
                                                  3

二、感受野计算

                                                        4
其中 l k − 1 l_{k-1} lk1 为第 k − 1 k-1 k1 层的感受野大小, f k f_{k} fk 为第 k 层的卷积核大小或者是池化层尺寸大小, s k s_{k} sk则是第k层卷积的stride。

例如:分别理解如何求出下面各层的感受野RF?

LayerKernel sizeStrideRF
conv13×313
pool12×224
conv23×318
conv33×3112

感受野初始值 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={lk1+[(fk1)](k=1)lk1+[(fk1)×i=1k1si](k2)
 
    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
      我已经做好上述例子检验,如下图所示;
5

Reference:

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐