感受野
卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小。
由前向后的计算方式
l
k
=
l
k
−
1
+
[
(
f
k
−
1
)
∗
∏
i
=
1
k
−
1
s
i
]
lk = l_k-1+[(f_k-1)*\prod_{i=1}^{k-1}s_i]
lk=lk−1+[(fk−1)∗i=1∏k−1si]
其中
l
k
−
1
l_k-1
lk−1 为第
k
−
1
k−1
k−1 层对应的感受野大小,
f
k
fk
fk 为第 k 层的卷积核大小或者是池化层的池化尺寸大小,
s
i
s_i
si是第
i
i
i层的stride。
举个例子
No. | Layers | Kernel Size | Stride |
---|---|---|---|
1 | Conv1 | 3*3 | 1 |
2 | Pool1 | 2*2 | 2 |
3 | Conv2 | 3*3 | 1 |
4 | Pool2 | 2*2 | 2 |
5 | Conv3 | 3*3 | 1 |
6 | Conv4 | 3*3 | 1 |
7 | Pool3 | 2*2 | 2 |
感受野初始值 l 0 = 1 l_0 = 1 l0=1,每层的感受野计算过程如下:
l 0 = 1 l_0 = 1 l0=1
l 1 = 1 + ( 3 − 1 ) = 3 l_1 = 1 + (3-1) = 3 l1=1+(3−1)=3
l 2 = 3 + ( 2 − 1 ) ∗ 1 = 4 l_2 = 3 + (2-1) * 1 = 4 l2=3+(2−1)∗1=4
l 3 = 4 + ( 3 − 1 ) ∗ 1 ∗ 2 = 8 l_3 = 4 + (3-1) * 1 * 2 = 8 l3=4+(3−1)∗1∗2=8
l 4 = 8 + ( 2 − 1 ) ∗ 1 ∗ 2 ∗ 1 = 10 l_4 = 8 + (2-1) * 1 * 2 * 1 = 10 l4=8+(2−1)∗1∗2∗1=10
l 5 = 10 + ( 3 − 1 ) ∗ 1 ∗ 2 ∗ 1 ∗ 2 = 18 l_5 = 10 + (3-1) * 1 * 2 * 1 * 2 = 18 l5=10+(3−1)∗1∗2∗1∗2=18
l 6 = 18 + ( 3 − 1 ) ∗ 1 ∗ 2 ∗ 1 ∗ 2 ∗ 1 = 26 l_6 = 18 + (3-1) * 1 * 2 * 1 * 2 * 1 = 26 l6=18+(3−1)∗1∗2∗1∗2∗1=26
l 7 = 26 + ( 2 − 1 ) ∗ 1 ∗ 2 ∗ 1 ∗ 2 ∗ 1 ∗ 1 = 30 l_7 = 26 + (2-1) * 1 * 2 * 1 * 2 * 1 * 1 = 30 l7=26+(2−1)∗1∗2∗1∗2∗1∗1=30
可以通过 Fomoro AI 可视化计算感受野的网站,来验证自己计算的结果!