面试问了感受野,以前学习过,忘了紧张没回答出来,淦!,来总结一下(哭唧唧),平时要注意知识的不停积累,学习过后的知识,整理思绪写在博客上可以加深印象。
简介
感受野:卷积神经网络每一层输出的特征图(feature map)上的像素点在输入图片上映射的区域大小。再通俗点的解释是,特征图上的一个点对应输入图上的区域。
以下图为例,假如输入为一个10x10的特征图,卷积核为7x7,步长为1,则感受野为:7。
感受野的计算
感受野的计算需要知道的计算量:
- 第 i i i 层的卷积核大小 k i k_i ki,步长 s i s_i si
- 第 i − 1 i-1 i−1 层的感受野大小 r f i − 1 rf_{i-1} rfi−1
下面是感受野的一般计算公式:
举个例子,借用彻底搞懂感受野的含义与计算的图:
下图中每一个Layer的卷积大小都为3x3,步长为1,Layer1为输入特征图,则Layer2的感受野为3,Layer3相对于Layer2的感受野为3,相对于Layer1的感受野为5:
我们一起来分析一下这个计算感受野的式子,输入层Layer1的感受野为1(因为输入层每个像素点对应输入图像的一个像素点),Layer2的感受野为3(Layer2上的每个像素点对应Layer1的三个像素点),Layer3的每个像素点对应Layer1的5个像素点,对应Layer2的3个像素点。
现在分析一下计算公式:
- 第一层: r f i rf_i rfi=1
- 第二层: r f 2 = k 2 rf_2=k_2 rf2=k2
- 第三层:第三层可以看作第三层对应于第二层感受野 k 1 k_{1} k1除第一个元素外(第一个元素对应的感受野为 r f 2 rf_2 rf2),剩下 k i − 1 k_{i-1} ki−1个元素在第一层图像上的扫过的范围,而这个扫过的范围和步长有关,即剩下的每一个元素都对应一个步长 s i s_i si,即 r f 2 + ( k 3 − 1 ) ∗ s 2 rf_2+(k_3-1)*s_2 rf2+(k3−1)∗s2
- 第四层:同样第四层可以看作第四层对应于第三层感受野 k 4 k_{4} k4除第一个元素外(第一个元素的感受野为 r f 3 rf_3 rf3),剩下 k 4 − 1 k_{4}-1 k4−1个元素在第一层图像上的扫过的范围,要求这个范围,先要求在第二层上扫过的范围,即 ( k 4 − 1 ) ∗ s 4 (k_4-1)*s_4 (k4−1)∗s4,则在第一层图像上的扫过的范围: ( k 4 − 1 ) ∗ s 3 ∗ s 2 (k_4-1)*s_3*s_2 (k4−1)∗s3∗s2,即第四层感受野为: r f 3 + ( k 4 − 1 ) ∗ s 3 ∗ s 2 rf_3+(k_4-1)*s_3*s_2 rf3+(k4−1)∗s3∗s2
- …
由此可见感受野大小的计算是个递推公式。
感受野的作用
来自牧世的文章中说的不错:神经元感受野的值越大,表示其能接触到的原始图像范围就越大,也意味着它可能蕴含了更为全局,语义层次更高的特征;相反,值越小则表示其所包含的特征越趋向局部和细节。因此感受野的值可以用来大致判断每一层的抽象层次。