小马&博客

不爱码字的小懒马儿

VGG网络


关于

  • 个人微信公众号: Mn2+
  • 个人博客首页
  • 注:学习交流使用!
  • 本文简介:VGG网络详解

正文

1、VGG 在2014年由牛津大学著名研究组 VGG(Visual Geometry Group)提出。

2、VGG网络的创新点
(1)通过堆叠多个小卷积核来替代大尺度卷积核,可以减少训练参数,同时能保证相同的感受野。
(2)论文中提到,可以通过堆叠两个3×3的卷积核替代5x5的卷积核,堆叠三个3×3的卷积核替代7x7的卷积核。

3、CNN感受野
(1)卷积神经网络中,决定某一层输出结果中一个元素所对应的输入层的区域大小,被称作感受野(receptive field)。
(2)通俗的解释是,输出feature map上的一个单元 对应 输入层上的区域大小。
(3)以下图为例,输出层 layer3 中一个单元 对应 输入层 layer2 上区域大小为2×2(池化操作),对应输入层 layer1 上大小为5×5(可以这么理解,layer2中 2×2区域中的每一块对应一个3×3的卷积核,又因为 stride=2,所以layer1的感受野为5×5)
感受野
(4)感受野的计算公式为:
  F(i)=(F(i+1)−1)×Stride +Ksize
  * F(i) 为第i层感受野
  * Stride为第i层的步距
  * Ksize为 卷积核 或 池化核 尺寸
  以上图为例:
  * Feature map: F ( 3 ) = 1
  * Pool1:F ( 2 ) = ( 1 − 1 ) × 2 + 2 = 2
  * Conv1: F ( 1 ) = ( 2 − 1 ) × 2 + 3 = 5

4、小卷积核
(1)堆叠两个3×3的卷积核替代5x5的卷积核,堆叠三个3×3的卷积核替代7x7的卷积核。替代前后感受野是否相同?
(注:VGG网络中卷积的Stride默认为1)
  Feature map: F = 1 F=1F=1
  * Conv3x3(3): F = ( 1 − 1 ) × 1 + 3 = 3
  * Conv3x3(2): F = ( 3 − 1 ) × 1 + 3 = 5 (5×5卷积核感受野)
  * Conv3x3(1): F = ( 5 − 1 ) × 1 + 3 = 7 (7×7卷积核感受野)

(2)堆叠3×3卷积核后训练参数是否真的减少了?
  注:CNN参数个数 = 卷积核尺寸×卷积核深度 × 卷积核组数 = 卷积核尺寸 × 输入特征矩阵深度 × 输出特征矩阵深度。
  现假设 输入特征矩阵深度 = 输出特征矩阵深度 = C
  *使用7×7卷积核所需参数个数:7 × 7 × C × C = 49 C**2
  *堆叠三个3×3的卷积核所需参数个数:3 × 3 × C × C + 3 × 3 × C × C + 3 × 3 × C × C = 27 C**2

5、VGG-16
(1)VGG网络有多个版本,一般常用的是VGG-16模型,其网络结构如下如所示:
VGG16
(2)稍作计算可以发现,经3×3卷积的特征矩阵的尺寸是不改变的:


关注

  • 个人微信公众号:Mn2+

  • 哔哩哔哩:不爱码字的小懒马儿

  • GitHub

-------------本文结束感谢您的阅读-------------