CNN感受野(VGG)

从图像中提取CNN特征,VGG模型是首选算法 。VGG是牛津大学 Visual Geometry Group(视觉几何组)的缩写,以研究机构命名。

VGG论文给出了一个非常振奋人心的结论:卷积神经网络的深度增加和小卷积核的使用对网络的最终分类识别效果有很大的作用,VGG基本全部是 3x3小卷积核 和 2x2池化核。

VGG16结构

VGG典型的有16层的VGG16和19层的VGG19,VGG之所以堆叠很多3x3的小卷积核的卷积层,就要说到CNN感受野的问题了。

关于感受野有一个说法:两个3x3卷积层等于一个5x5卷积层,三个3x3卷积层,等于一个7x7卷积层。

感受野(receptive field)用来表示网络内部的不同神经元对原图像的感受范围的大小,或者说,CNN每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小。

举个例子,在单个maxpooling层中,如果它的kenerl size是2x2,输出结果中的每一个元素都是其对应输入的2x2的区域中的最大值,所以这一层的感受野大小就是2。其实感受野的大小是由kernel size和stride size一起决定的,公式是: 

rfsize = f(out, stride, ksize) = (out - 1) * stride + ksize ( 其中out是指上一层感受野的大小)

注意:感受野在计算的时候不考虑“边界填充”,因为填充的边界已经不是原始图像本身的内容了,感受野描述的是输出特征到原始图像的映射关系,故而不考虑padding 。实际建模过程中可能需要填充边界,原理一样,只是计算稍微复杂点。 

而不考虑padding的卷积的正向维度计算公式是:    ,是上式反推

上面是递推的公式,下面是卷积过程的图解,为了简单,步幅设定为1.

第一次卷积计算

从上面可以看出:第一层网络输出的图像中,输出结果为8x8,output1输出的每一个特征(即每一个像素)受到原始图像的3x3区域内的影响,故而第一层的感受野为3,用字母表示为

RF1=3 (每一个像素值与原始图像的3x3区域有关)

第二次卷积计算

再说回VGG用多个3x3卷积层叠加而不是更少的大尺寸卷积核的原因

这样做的主要目的是:

(1)保证具有相同感知野的条件下,提升了网络的深度,在一定程度上提升了神经网络的效果;

(2)减少计算参数量。一个7x7卷积核的参数有49个,三个3x3卷积核的参数有27个,减少约一半

(3)多个 3x3 的卷基层比一个大尺寸 filter卷积层有更多的非线性(更多层的非线性函数),使得判决函数更加具有判决性


你可能感兴趣的:(CNN感受野(VGG))