CNN中感受野大小的计算

摘要:

在分析CNN网络时,通常会考虑到网络的感受野,感受野是指特征图上一个像素点代表原图的多大区域像素点,一般网络感受野越大,提取到的特征就更高维,网络性能也越好。其实CNN中的池化层,或者说下采样层就是为了提高网络的感受野,提高网络的感受野的代价就是会丢弃部分信息。空洞卷积就是为了解决这个问题而提出的,此处不作介绍,想了解的可以看看DeepLab系列论文,本文主要介绍感受野如何计算。

感受野变化:

CNN中感受野大小的计算_第1张图片

上图是一个4x4的特征图经过一个3x3的卷积操作后,再经过一次2x2池化操作后,感受野的大小变化。很明显可以看出,卷积操作后,得到的每个像素,都对应原图一个3x3的区域,我们称该层的感受野为3x3(相对于输入特征图) ,而池化后输出的一个像素点,对应卷积输出特征图上一个2x2的区域,对应了输入特征图上一个4x4的区域(有2x2的重叠部分,如果stride比较大,重叠部分会变小,区域会变大,如果stride=3,没有重叠,那么对应的区域是6x6),我们称该层对应上一层的感受野为2x2,对应输入特征图的感受野是4x4。从图中可以看出,感受野的大小和是否填充没有关系(如果非要说有关系,只能说有些情况下边缘信息会部分丢失,造成视野变小,视野和感受野概念还是有点区别的),和核的大小,滑动步长有关系(图不好画,没有画出滑动步长大于1的情况,其实很容易类推出来)。

一般我们说一个网络的感受野,通常是只网络的顶部一个像素对应输出图像的多少像素区域,所以计算方式都是从网络顶部一直往输入层推算。

举个例子:

CNN中感受野大小的计算_第2张图片

 pool3输出的每个像素,对应于conv4卷积输出结果的一个2x2的区域,在conv4卷积层的特征图上对应一个4x4的区域(参考第一幅图)。同理对应pool2为8x8,对应conv3为10x10,对应conv2为12x12,对应pool1为24x24x,对应conv1为26x26。

你可能感兴趣的:(基础知识)