感受野之自我理解
一、定义:
感受野:在卷积神经网络CNN中,决定某一层输出结果中一个元素所对应的输入层的区域大小,被称作感受野receptive field。
我们看这段定义非常简单,用数学的语言就是感受野是CNN中的某一层输出结果的一个元素对应输入层的一个映射。再通俗点的解释是,feature map上的一个点对应输入图上的区域。注意这里是输入图,不是原始图这里的输入图像(原始图像)是指网络的输入图像,是经过预处理(如resize,warp,crop)后的图像。
这里的第三层中的1个像素点对于原来图片中的1111的像素阵列大小,也就是说第三层的感受野是1111
这里第一层每个神经元对应原图3个神经元,也就是感受野是3.
第二层每个神经元对应第一层的3个神经元,换算到输入对应5个输入层的神经元,也就是感受野是5。
二、意义:
神经元之所以无法对原始图像的所有信息进行感知,是因为在卷积神经网络中普遍使用卷积层和pooling层,在层与层之间均为局部连接。
神经元感受野的值越大表示其能接触到的原始图像范围就越大,也意味着它可能蕴含更为全局,语义层次更高的特征;相反,值越小则表示其所包含的特征越趋向局部和细节。因此感受野的值可以用来大致判断每一层的抽象层次.
三、计算:
先举个例子:
==e.g.==两层 3x3 卷积操作的有效区域(感受野)是5x5 (所有filter的stride=1,pad=0),示意图如下:
==e.g.==三层3x3卷积核操作的有效区域是7x7 (所有filter的stride=1,pad=0),示意图如下:
感受野的计算:
分析上面的图片:
输入图片7x7,
第一层卷积核3x3,步长S=2,得到33的feature map——可以知道感受野r=3
第二层卷积核2x2,步长S=1,得到22的feature map——可以得到感受野r=5
可以看到在Conv1中的每一个单元所能看到的原始图像范围是3x3,而由于Conv2的每个单元都是由 22范围的Conv1构成,因此回溯到原始图像,其实是能够看到55的原始图像范围的。因此我们说Conv1的感受野是3,Conv2的感受野是5. 输入图像的每个单元的感受野被定义为1,这应该很好理解,因为每个像素只能看到自己。
逐步递推得到感受野公式:
r是感受野;k是卷积核大小,s是步长。
根据公式求一下上面的例子:
r1=3(第一步没啥公式)
r2 = r1 + (k2-1)s1=3+(2-1)*2=5
输入中越靠近感受野中间的元素对特征的贡献越大
网络具体实例
可以看出AlexNet网络最后一层感受野是195x195,说明最后一层能看到输入图片的195x195的区域,一个图片大小1000x1000,所以也可以看出来卷积之后也只能看到局部特征,然后全连接层再把局部特征拟合在一起进行分类。
参考:
https://www.cnblogs.com/augustone/p/10528148.html
https://www.jianshu.com/p/9997c6f5c01e
https://www.jianshu.com/p/7cfa6bb6d621