文章目录
Receptive Field
forward
从浅层往深层计算。
示意图说明:
图中共有三层,图像层img,第一层map1,第二层,map2。为了方便推导,我们使用一维卷积进行演示。一个正方框表示一个像素点,长条状的就是卷积核,为了清楚的分辨出卷积核移动的位置,做了颜色差别处理和长宽放大。箭头所指的是经过这次卷积后产生的图像。
f
i
r
s
t
=
{
k
1
=
4
s
2
=
3
s
e
c
o
n
d
=
{
k
2
=
3
s
1
=
1
\begin{aligned} first= \begin{cases} k_1=4 \\ s_2=3 \end{cases} \\ second= \begin{cases} k_2=3 \\ s_1=1 \end{cases} \end{aligned}
first={k1=4s2=3second={k2=3s1=1
第一层卷积核fisrt大小为4,步长为3,第二层卷积核second大小为3,步长为1。
符号定义:
r
i
:
第
i
层
感
受
野
大
小
k
i
:
第
i
层
卷
积
核
大
小
s
i
:
第
i
层
卷
积
步
长
\begin{aligned} &r_i:第i层感受野大小 \\ &k_i:第i层卷积核大小 \\ &s_i:第i层卷积步长 \\ \end{aligned}
ri:第i层感受野大小ki:第i层卷积核大小si:第i层卷积步长
规定
r
0
=
1
r_0=1
r0=1表示图像层的感受野大小为1。推导过程中,大家可以自行发挥推导过层,其中我们可以用手动数来验证我们的推导公式是否正确。
r
1
r_1
r1表示第一层,即map1层。第一层感受野大小为4。显然:
r
1
=
k
1
=
4
r_1=k_1=4
r1=k1=4
r
2
r_2
r2表示第二层,即map2层。第二层感受野大小为10。显然:
r
2
≠
k
2
=
3
r_2\neq k_2=3
r2=k2=3
显然:
r
2
≠
k
2
∗
k
1
=
12
r_2 \neq k_2*k_1=12
r2=k2∗k1=12
当我们计算第二层
r
2
r_2
r2时,看图!感受野大小与第二层卷积核(k=3) 将 第一层map1中套起来的三个像素有关。可这三个像素在img层中涉及到的像素有重叠的。所以不能直接所不能简单的使卷积核的相乘。
第i层和i-2层的关系
接下来,我将解析如何将感受野与卷积核建立联系,此推导过程可类比于输出图像的计算公式推导。
计算 r 2 r_2 r2肯定要看第二层卷积核在map1上包括的范围。
感受野大小计算公式分解为:首项+其他项
既然上面提到有重叠,那我们利用首项+其他项的思想去重叠。
首项计算:map1中的第一个蓝框作为首项,单独拿出来,它所占的感受野大小为 k 1 k_1 k1。
其他项:map1中第二红框,第三绿框作为其他项。他们在img上的包裹的图像大小为步长 s 1 s_1 s1,(黄色虚线之间)。这样计算是没有重叠的。总共包括的感受野大小为: ( k 2 − 1 ) ∗ s 1 (k_2-1)*s_1 (k2−1)∗s1
综上:
r
2
=
(
k
2
−
1
)
∗
s
1
+
k
1
r_2=(k_2-1)*s_1+k_1
r2=(k2−1)∗s1+k1
此时我们建立了,第
i
i
i层和第
i
−
2
i-2
i−2层的关系。即第二层map2一个方框在图像层img包含的相邻元素的个数。
第三层:
r
3
=
(
k
3
−
1
)
∗
s
2
+
k
2
r_3=(k_3-1)*s_2+k_2
r3=(k3−1)∗s2+k2
重新回顾下,计算第
r
2
r_2
r2在img的相邻元素时,我们要计算第二层卷积核在第一层map1包含相邻元素的个数,此个数就是
k
2
k_2
k2个
此时我们根据上述 r 3 r_3 r3公式,知道了第三层map3在第一层map1中相邻元素的个数。
将
r
3
r_3
r3在map1中的个数替换
r
2
r_2
r2中的个数
k
2
k_2
k2,即可得到第三层map3在img图像上包含的相邻元素的个数。
r
3
=
(
(
(
k
3
−
1
)
∗
s
2
+
k
2
)
−
1
)
∗
s
1
+
k
1
r_3=\big(((k_3-1)*s_2+k_2)-1 \big)*s_1 + k_1
r3=(((k3−1)∗s2+k2)−1)∗s1+k1
第i层和第i-1层的关系
建立第i层和第i-1层的关系。
联立
r
2
,
r
3
r_2,r_3
r2,r3,消去
k
1
k_1
k1,得到
{
r
2
=
(
k
2
−
1
)
∗
s
1
+
k
1
r
3
=
(
(
(
k
3
−
1
)
∗
s
2
+
k
2
)
−
1
)
∗
s
1
+
k
1
⟹
r
3
=
(
k
3
−
1
)
∗
s
2
∗
s
1
+
r
2
\begin{aligned} &\begin{cases} r_2=(k_2-1)*s_1+k_1 \\ r_3=\big(((k_3-1)*s_2+k_2)-1 \big)*s_1 + k_1 \end{cases} \\ \Longrightarrow & \quad r_3=(k_3-1)*s_2*s_1 + r_2 \end{aligned}
⟹{r2=(k2−1)∗s1+k1r3=(((k3−1)∗s2+k2)−1)∗s1+k1r3=(k3−1)∗s2∗s1+r2
归纳:
{
r
1
=
k
1
,
k
=
1
r
i
=
(
k
i
−
1
)
s
i
∗
s
i
−
1
∗
s
i
−
2
∗
⋯
∗
s
1
+
r
i
−
1
,
k
>
1
\begin{cases} r_1=k_1 \ , \ k=1\\ r_i=(k_i-1)s_i*s_{i-1}*s_{i-2}*\cdots *s_1 +r_{i-1} \ , \ k>1 \end{cases}
{r1=k1 , k=1ri=(ki−1)si∗si−1∗si−2∗⋯∗s1+ri−1 , k>1
令
s
0
=
1
,
r
0
=
1
s_0=1,r_0=1
s0=1,r0=1,则:
r
i
=
(
k
i
−
1
)
∏
j
=
0
i
s
j
+
r
i
−
1
r_i=(k_i-1)\prod_{j=0}^{i}s_j + r_{i-1}
ri=(ki−1)j=0∏isj+ri−1
backward
从后往前算,待续