文章目录

前言

AlexNet在LeNet的基础上增加了3个卷积层。但AlexNet作者对它们的卷积窗口、输出通道数和构造顺序均做了大量的调整。虽然AlexNet指明了深度卷积神经网络可以取得出色的结果,但并没有提供简单的规则以指导后来的研究者如何设计新的网络。

本文介绍VGG,它的名字来源于论文作者所在的实验室Visual Geometry Group,其发布了一系列以VGG开头的卷积网络模型(VGG11~VGG19),可以应用在人脸识别、图像分类等方面。VGG提出了可以通过重复使用简单的基础块来构建深度模型的思路。

VGG块

VGG块的组成规律是:连续使用数个相同的填充为1、卷积核为3×3的卷积层后接上一个步幅为2、池化核为2×2的最大池化层。卷积层保持输入的高和宽不变(依靠填充来达到目的),而池化层则对其减半。

虽然AlexNet有使用了11×11和5×5的大卷积,但大多数还是3×3卷积,对于stride=4的11×11的大卷积核,一开始原图的尺寸很大因而冗余,最为原始的纹理细节的特征变化用大卷积核尽早捕捉到,后面的更深的层数害怕会丢失掉较大局部范围内的特征相关性,后面转而使用更多3×3的小卷积核(和一个5×5卷积)去捕捉细节变化。

而VGGNet则清一色使用3×3卷积。使用了3个3×3卷积核来代替7×7卷积核,使用了2个3×3卷积核来代替5×5卷积核,这样做的主要目的是在保证具有相同感知野的条件下,提升了网络的深度,在一定程度上提升了神经网络的效果。

可以看到,2个3×3的卷积核与1个5×5的卷积核的感受野一致。而2个3×3的卷积核只需要18个参数,5×5的卷积核为25个;且网络越深、可加入的非线性操作(激活函数)越多。

VGG块可以直接封装在函数中:

网络结构

下图表是VGG11、VGG13、VGG16、VGG19等各种VGG系列的网络结构表。不同VGG模型之间的结构大同小异,均是由数个VGG块加三个全连接层构成。

在VGG网络中,只有C结构设置了1×1的卷积核,其余都是3×3的卷积,这种操作减小了参数量,论文中给出的参数量对比如下:

– VGG11包含了11个隐藏层(8个卷积层和3个全连接层)   ,如上图中的A列所示

– VGG16包含了16个隐藏层(13个卷积层和3个全连接层),如上图中的D列所示

– VGG19包含了19个隐藏层(16个卷积层和3个全连接层),如上图中的E列所示

下面以VGG11为例,使用torch构造其网络结构

得到以下网络结构输出

 

VGG优缺点

优点

  1. VGGNet的结构非常简洁,整个网络都使用了同样大小的卷积核尺寸(3×3)和最大池化尺寸(2×2)
  2. 几个小滤波器(3×3)卷积层的组合比一个大滤波器(5×5或7×7)卷积层好
  3. 验证了通过不断加深网络结构可以提升性能。

缺点

VGG耗费更多计算资源,并且使用了更多的参数(这里不是3×3卷积的锅),导致更多的内存占用(140M)。其中绝大多数的参数都是来自于第一个全连接层,而VGG有整整3个全连接层。