之前一直不是很理解感受野是什么,因此认真地看了下相关知识,在这里记录一下~
感受野是什么
感受野,指的是一个特定的CNN特征在输入空间所受影响的区域,可以用中心位置(center location)和大小(size)来表征;用来表示网络内部不同神经元对原图像的感受范围大小,也就是CNN每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小。
由于网络结构中普遍使用卷积层和池化层,层与层之间均通过sliding filter进行局部相连,所以每一个神经元都无法对原始图像的所有信息进行感知。而感受野越大,表示该神经元所能接触到的原始图像范围越大,也就意味着更可能蕴含全局、语义层的深层特征;感受野越小则表示其所包含的特征更趋向于局部、浅层的细节特征。
感受野的大小可以用来判断网络每一层的抽象层次。
可以通过不同的方法来增大感受野,例如:堆叠更多层(depth),降采样(pooling,striding),滤波器膨胀(dilated convolutions)等。理论上,堆叠更多层使感受野线性增大,但并不是这么简单。
输入层每个单元的感受野是1,层次越深,感受野越大,是由kernel size和stride size共同决定的,一个特征图的所有特征都有相同大小的感受野,特征被标记在其感受野所在的中心(也就是每个像素)。而对于深度CNN,我们无法直接追踪到感受野信息。
感受野中心位置及大小计算
具体公式推导及代码参考:A guide to receptive field arithmetic for Convolutional Neural Networks
这里介绍了CNN特征图可视化的一种新方法,可视化可以显示感受野的信息。
对于一个CNN特征来说,感受野特征图中的每个像素值并不是同等重要。一个像素点越接近感受野中心,它对输出特征的计算所起作用越大,这意味着某一个特征不仅仅是受限在输入图片某个特定的区域,而且呈指数级聚焦在区域的中心。
effective receptive field(ERF)
前向过程,可以看到中心的感受野的像素可以通过更多不同的路径将信息传递给输出,而边缘的一些像素只能通过单一的路径传播(卷积核在该像素上运算的次数),所以,ERF对最终输出计算的影响看起来更像是一个高斯分布而非均一分布。
并且,感受野是动态的并且随着训练过程不断变化,在bp过程产生的影响就是中心的像素会比边缘像素有更大的梯度幅值。