看完还不懂卷积神经网络“感受野”?那你来找我

《看完还不懂卷积神经网络“感受野”?那你来找我》

一、到底什么是“感受野”(接受野)?——Receptive Field

      “感受野”的概念来源于生物神经科学,比如当我们的“感受器”,比如我们的手受到刺激之后,会将刺激传输至中枢神经,但是并不是一个神经元就能够接受整个皮肤的刺激,因为皮肤面积大,一个神经元可想而知肯定接受不完,而且我们同时可以感受到身上皮肤在不同的地方,如手、脚,的不同的刺激,如痛、痒等。这说明皮肤感受器是由很多不同的神经元控制的,那么每一个神经元所能够反映的那块感受器的区域就称之为“感受野”,感受野即每一个神经元所支配的区域,也可以说这个神经元的活动受到那一块区域的影响。

在卷积神经网络中,整个卷积运算的过程正好和上面的皮肤刺激过程类似,我们可以将原始图像对应看成感受器(皮肤),将最终的输出看成是做出反应的那个神经元。最终输出到底是什么状态(神经元的状态)所受到的初始图像哪一块区域的影响(受到那一块皮肤的刺激)不正是上面所描述的过程吗?于是我们给出感受野的定义如下:

卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小;通俗点说,就是图像的最终输出的每一个特征(每一个像素)到底受到原始图像哪一部分的影响。

二、图解说明

为了更好地说明整个卷积神经网络的工作过程,下面以一个例子说明,原始图像的大小为10×10,一共设计了5个网络层,前面4个是卷积层,卷积核的大小为3×3,最后一个是池化层,大小为2×2,为了较简单的说明,本次所有的步幅stride均为1.

注意:感受野在计算的时候不考虑“边界填充”,因为填充的边界已经不是原始图像本身的内容了,感受野描述的是输出特征到原始图像的映射关系,故而不考虑padding 。实际建模过程中可能需要填充边界,原理一样,只是计算稍微复杂点。

1、第一次卷积运算

《看完还不懂卷积神经网络“感受野”?那你来找我》

从上面可以看出:第一层网络输出的图像中,输出结果为8×8,output1输出的每一个特征(即每一个像素)受到原始图像的3×3区域内的影响,故而第一层的感受野为3,用字母表示为

                          RF1=3   (每一个像素值与原始图像的3×3区域有关)

2、第二次卷积运算

《看完还不懂卷积神经网络“感受野”?那你来找我》

从上图可以看出,经历两次卷积运算之后,最终的输出图像为6×6,output2输出的每一个特征(即每一个像素)受到output1的范围影响为3×3,而output1中的这个3×3又收到原始图像的5×5的范围的影响,故而第二层的感受野为5,即

                                  RF2=5   (每一个像素值与原始图像的5×5区域有关)

3、第三次卷积运算

《看完还不懂卷积神经网络“感受野”?那你来找我》

从上图可以看出,经历三次卷积运算之后,最终的输出图像为4×4,output3输出的每一个特征(即每一个像素)受到output2的范围影响为3×3,而output2中的这个3×3又受到output1的5×5的范围的影响,而output1中的这个5×5又受到原始图像的7×7的范围的影响,故而第三层的感受野为7,即

                           RF3=7   (每一个像素值与原始图像的7×7区域有关)

4、第四次卷积运算

《看完还不懂卷积神经网络“感受野”?那你来找我》

从上图可以看出,经历四次卷积运算之后,最终的输出图像为2×2,output4输出的每一个特征(即每一个像素)受到output3的范围影响为3×3,而output3中的这个3×3又受到output2的5×5的范围的影响,而output2中的这个5×5又受到output1的7×7的范围的影响,而output1中的这个7×7又受到原始图形的9×9的范围的影响,故而第四层的感受野为9,即

                           RF4=9   (每一个像素值与原始图像的9×9区域有关)

5、第五次池化运算

《看完还不懂卷积神经网络“感受野”?那你来找我》

从上图可以看出,经历四次卷积运算和一次池化运算之后,最终的输出图像为1×1,output5输出的每一个特征(即每一个像素)受到output4的范围影响为2×2,而output4中的这个2×2又受到output3的4×4的范围的影响,而output3中的这个4×4又受到output2的6×6的范围的影响,而output2中的这个6×6受到output1的8×8的范围的影响,而output1中的这个8×8受到原始图像的10×10的范围的影响,故而第五层的感受野为10,即

                           RF5=10  (每一个像素值与原始图像的10×10区域有关)

三、递推公式推导

从上面的过程可以看出,感受野的推导是一个递推的过程,下面将展示这一过程。

RF1=3            k1(第一层的感受野,永远等于第一个卷积核的尺寸大小)k表示第几个卷积层

RF2=5            k1 + (k2-1)                                                            RF1+ (k2-1)

RF3=7            k1 + (k2-1) + (k3-1)                                            RF2+ (k3-1)

RF4=9            k1 + (k2-1) + (k3-1)   + (k4-1)                             RF3+ (k4-1)

RF4=10          k1 + (k2-1) + (k3-1)   + (k4-1)    + (k5-1)             RF4+ (k5-1)

总结:从上面可以看出,感受野的大小的求解是一个不断第一的过程,因为第一层的每一个像素的感受野始终是第一个卷积核的大小,故而RF1总是最先确定,然后以此类推,逐步求出RF2、RF3、RF4、RF5……

但是上面的所有步长均为 1 ,如果每一次卷积运算的步长 stride 不为1呢,同理,这里直接给出递推公式:

          RFn=RFn-1 + (kn-1)*stride_n

其中stride_n表示的是第n次卷积的移动步幅stride。

求解过程是从RF1开始的。

    原文作者:程序_小白
    原文地址: https://www.jianshu.com/p/9305d31962d8
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞