在阅读论文的时候,总是会出现receptive field这个词语,一直想不明白,难道这个是当前层对之前层的映射的意思,后来上网查看了一下,发现并不完全是这样理解。
这篇博客主要参考的是下面两个博主的博客:
第一篇:https://www.jianshu.com/p/2b968e7a1715
第二篇:https://blog.csdn.net/kuaitoukid/article/details/46829355
感受野就是每层特征映射的一个单映射点对应着原始图像区域大小。比如一个5*5的原始图像,经过3*3的filter进行卷积,步长为1,那么得到的特征映射为3*3,那么这个3*3的特征映射的一个点是由原始图像的多大区域得到的呢,很显然3*3的区域得到的。那如果再添加一个2*2的pool层,stride=1,那么很显然得到的是2*2的特征映射,那么这个到原始图像的感受野有多大呢?先说个答案吧,4*4.你可以手动的计算来验证一下,你发现原始图像的一个4*4的区域,经过3*3的filter后得到的是2*2,在经过pool层得到的是一个单映射点,也即我们pool层对原始图像的感受野大小为4*4.
计算的方式:
方法一: top-to-down,也就是从高层往原始图像进行计算。
下面我们先不利用公式进行计算:
以vgg-16进行展示,为了减少麻烦,只介绍前面的几层:
我们标记K_i为第i层的卷积核的大小,stride_i表示的是第i层的步长。
我们标记F(i,j)表示的是i层的特征映射的一个点映射到j层的区域大小,可以很清楚F(i,i)=1,每个特征映射到自己还是自己。F(i,i-1)=k_i.
层标l |
size | strides |
0 | ||
1-conv | 3 | 1 |
2-conv | 3 | 1 |
3-pool | 2 | 2 |
4-conv | 3 | 1 |
5-conv | 3 | 1 |
6-pool | 2 | 2 |
7-conv | 3 | 1</ |