感受野

感受野:在卷积神经网络CNN中,决定某一层输出结果中一个元素所对应的输入层的区域大小,被称作感受野receptive field。
注意:这里的输入层并不一定是原始图像,可能对原始图像进行了填充。

感受野_第1张图片

如上图所示,第一次卷积,卷积核大小(kernel size)k=3*3,填充大小(padding size)p=1*1,步长(stride)s=2*2,(如图左上)对5*5的输入特征图进行卷积生成3*3的绿色特征图;第二次卷积,卷积核大小(kernel size)k=3*3,填充大小(padding size)p=1*1,步长(stride)s=2*2,(如图左下)对上面绿色的特征图采用相同的卷积操作生成2*2的橙色特征图。最后(图右)按列可视化CNN特征图,使卷积后的图像与原图像大小一致,中间用空白填充,可以看到特征位置即感受野的中心位置。
这里对padding做一个解释,首先第一层卷积在原始(蓝色)图像外围增加1个像素的填充,第二层卷积在第一层的结果(绿色图像)外围增加1个像素的填充,对应到原来的图像就需要再增加2个像素的填充,也就是原图像一共向外填充3个像素,也就是图中白色虚线网格。这里对填充的理解会影响后面感受野尺寸的理解。

感受野计算

感受野_第2张图片
如上图:
n:卷积后图像尺寸
r:感受野尺寸
j:跳跃尺寸
start:感受野中心坐标
k:卷积核尺寸
p:填充尺寸
s:卷积步长

这里用in和out表示看起来可能有一些迷惑,如果改写成下面这样的话,理解可能会更方便一些:
ni=ni1+2pikisi+1 n i = ⌊ n i − 1 + 2 ∗ p i − k i s i ⌋ + 1
ji=ji1si j i = j i − 1 ∗ s i
ri=ri1+(ki1)ji1 r i = r i − 1 + ( k i − 1 ) ∗ j i − 1
starti=starti1+(k12p)ji1 s t a r t i = s t a r t i − 1 + ( k − 1 2 − p ) ∗ j i − 1

下面来计算每一层的感受野:(建议先计算感受野再计算跳跃)
第0层:
即输入层,其感受野毫无疑问就是1,即 r0=1 r 0 = 1 ,跳跃也是1, j0=1 j 0 = 1 ,第一个特征的感受野中心坐标也就是其中心,即 start0=0.5 s t a r t 0 = 0.5

第1层: (这一层的感受野也很好计算,3*3,来计算一下检验公式)
k1=3,p1=1,s1=2 k 1 = 3 , p 1 = 1 , s 1 = 2
r1=r0+(k11)j0=1+(31)1=3 r 1 = r 0 + ( k 1 − 1 ) ∗ j 0 = 1 + ( 3 − 1 ) ∗ 1 = 3
j1=j0s1=12=2 j 1 = j 0 ∗ s 1 = 1 ∗ 2 = 2

第2层:
k2=3,p2=1,s2=2 k 2 = 3 , p 2 = 1 , s 2 = 2
r2=r1+(k21)j1=3+(31)2=7 r 2 = r 1 + ( k 2 − 1 ) ∗ j 1 = 3 + ( 3 − 1 ) ∗ 2 = 7
j2=j1s2=22=4 j 2 = j 1 ∗ s 2 = 2 ∗ 2 = 4

参考:
https://blog.csdn.net/u010725283/article/details/78593410

你可能感兴趣的:(深度学习)