Reference
下面这个B站视频,属于讲感受野的专栏视频之一,使用的是正向公式,强烈推荐大家观看。
深度理解感受野(二):抓住卷积神经网络的内在特性,学习感受野的计算少不了
下面这篇CSDN文章,把感受野的所有公式总结出来了,包括正向和反向。
CNN感受野最全计算公式_骚年,你渴望力量嘛?的博客-CSDN博客_感受野计算公式
一、感受野的公式有哪些?
前向公式,或称为正向公式,计算方向是从神经网络的浅层到深层;
如下所示:
- L_k表示第k层(相对于第0层的原始图像)的感受野大小
- L_k-1表示第k-1层的感受野大小
- f_k表示第k层的kernel size
- s_i表示第i层的stride(步长);注意连乘号上标,不包括当前k层
注意:第一次计算的时候从第1层开始,需要用到第0层的数据,而第0层数据是默认不变的。
第0层一般是原始图像,对应的感受野大小为1(感受野最小等于1),步长为1,也即L_0=1,s_0=1。
逆向公式,也称反向公式,从最深层开始计算直到最浅层;
如下所示:
- F_i表示最深层相对于第i-1层的感受野大小
- Stride表示步长
- Ksize表示卷积核大小,也称过滤器大小
- 对于某个特定的CNN网络,i取最大值时,
如下图所示,Pool1层的F就是最上面的池化层相对卷积层的感受野大小(已标黄,为2),而Conv1层的F就是最上面的池化层相对于原始图像的感受野大小(已标黄,为5)。不要看下面这张图中对于F_i的描述,稍微有点不准确。
源于:4.1 VGG网络详解及感受野的计算_哔哩哔哩_bilibili
二、感受野计算的时候容易出现什么错误?遇到哪些坑?
2.1 错把conv size(卷积层大小)当成kernel size(过滤器大小)代入公式计算。
2.2 错把反向计算公式的F_i当成是第i层的感受野大小(而如果是这样的话,最深层的感受野大小反而是最小的,显然违背了感受野越深越大的性质)。
2.3 由第一部分对正向公式和逆向公式中左边的计算结果描述可知:当k和i不等于1时,L_k不等于F_i,只有它们都等于1,两者才相等,含义是原始图像中能够影响最深层某一个元素的元素个数。
三、感受野的其他性质
3.1 层越深,感受野就会越大
3.2 正向公式计算的感受野大小L_k,含义是指“基于原始图像,第k层中某一个元素会被原始图像中L_k个元素影响”。
3.3 反向公式计算的感受野大小F_i,含义是指“基于第i层,最深层中某一个元素会被第i层中的F_i个元素所影响”。
3.5 基于第n层, 第n+1层中的某个元素会被第n层的k个元素所影响;那么这个k就是卷积核大小(Kernel Size);也即相邻层的感受野大小就是卷积核大小。