一、概念
感受野:即为卷积神经网络中每层的特征图(Feature Map)上的像素点在原始图像中映射的区域大小,也就相当于高层的特征图中的像素点受原图多大区域的影响。
一个感受野可以用中心位置(center location)和大小(size)来表征。
并且对于一个CNN特征来说,感受野中的每个像素值(pixel)并不是同等重要。一个像素点越接近感受野中心,它对输出特征的计算所起作用越大。这意味着某一个特征不仅仅是受限在输入图片中某个特定的区域(感受野),并且呈指数级聚焦在区域的中心。
二、计算感受野
计算CNN每一层的感受野,除了要知道特征图每个维度的特征数 ,还需要记录每一层的其他信息,这包括当前层的感受野大小
,两个相邻特征的距离(跳跃的距离,如前面可视化所示)
,和左上角特征(第一个特征)的中心坐标
。注意感受野(其实是特征图第一个特征的感受野)的中心坐标就等于这个特征的中心坐标,就如前面可视化中所示。当采用的卷积其核大小为
,padding大小为
,步长为
,输出特征图的感受野可以按照如下公式计算:
- 第一个式子根据输入特征图大小以及卷积参数计算输出特征图大小。
- 第二个式子计算输出特征图的特征间的间隔
,其等于上一层的间隔值乘以卷积的步长,所以间隔值将是按照步长呈指数级增长。
- 第三个式子计算输出特征图的感受野大小,其等于前一层感受野大小加上
,所以感受野是呈指数级增加,并且还有一个因子
。
- 第四个式子计算输出特征图的第一个特征感受野的中心坐标,其等于第一层的中心坐标加上
,再减去
,注意两项都要乘以前一层的间隔距离以得到实际距离。
最后这个可以计算感受野的网站:https://fomoro.com/projects/project/receptive-field-calculator#3,1,2,VALID