一、CNN前向传播特征图尺寸
我们从CNN的前向传播说起。
对于一个CNN而言,若输入特征图尺寸为n_in,卷积核尺寸为k,padding(周围填充0的圈数)为p,步长为s,则输出特征图的尺寸n_out可以表示为:
使用上式,我们可以从前往后,依此计算出多层CNN每一层的特征图尺寸。
二、感受野的概念
此时,我们想知道,对于一个第k层输出的特征图而言,它的其中任意一个值是由输入图像的多大尺寸的像素映射而来的。即第k层输出的特征图的一个点是由CNN输入图像中多大块的图像计算得到的。这就是感受野的概念,感受野越大,说明一个深层特征点使用了输入图像越多的像素信息。
三、感受野的计算
3.1 自后向前法
此时回顾前向传播的过程,我们发现,如果要计算第k层输出特征图的感受野信息,我们只需要假设第k层输出的特征图尺寸为1,然后利用逆运算,就可以逐层向前,推出输入图像的尺寸,这不就是我们需要的感受野吗!!
与此同时,由于padding填0,不影响输入图像的像素信息,我们在计算感受野时,可以直接忽略padding,假设padding为0.我们就可以得到逆运算:
我们由此逐层向前递推直到输入图像,就可以算出第k层输出的特征图的感受野了。
此时,我们已经掌握了计算某一层特征图感受野的方法,即假设其特征图尺寸为1,然后向前不断递推,得到输入层图像的尺寸。
3.2 自前向后法
对于3.1的方法,进一步的,我们写出递推式子:
所以有:
四、计算工具
https://fomoro.com/research/article/receptive-field-calculator
这里提供了计算感受野的小工具,可以直接输入层的设计,计算感受野