网络结构
这里主要是熟悉下VGGNet的网络结构。在网上搜索关于VGG网络的信息,最终在知乎上搜到了一个对这个网络结果容易理解的文章,这里简单介绍下该网络的结构,加强自己对VGG网络结构的理解。
首先说明下,VGG是牛津大学计算机视觉组(Visual Geometry Group)的缩写。该网络是VGG与Deep Mind公司研究院一起研发的深度卷积神经网络。该网络探索了卷积神经网络的深度与其性能的关系,通过反复堆叠3*3的小型卷积核,和2*2的最大池化层,成功构建了16~19层的卷积网络,取得了在ILSVRC2014中分类项目第2名和定位项目第1名。
这里介绍下VGG16的网络结构。VGGNet拥有5段卷积,每一段内有2~3个卷积层,段尾连接最大池化层用于缩小图片尺寸。其中,卷积层使用3*3的卷积核,步长为1,padding参数为SAME;最大池化层使用2*2的kernel size,步长为2。

上图中,卷积层*2,表示该段中包含两个卷积层。网络的输入是224*224*3,在卷积过程中,如上说明不改变尺寸大小,仅在max pooling处缩小图片尺寸一半。5段卷积层,各段各包含2, 2, 3, 3, 3个卷积层;各段各输出64, 128, 256, 512, 512个通道;各段输出图片大小分别为112*112,56*56,28*28,14*14,7*7;加上后面的3个全连接层,共16层。
从上面的说明来看,虽然网络达16层,但网络结构并不复杂。
结构解读
基本参数
共有A、A-LRN、B、C、D、E6个网络,其中的D、E就是我们常说的VGGNet-16和VGGNet-19;

全部使用3*3的卷积核以及2*2的max pooling;
采用Relu作为激活函数
使用3*3卷积核原因
多层串联小卷积核,其感受野效果相当于大卷积核,但所包含的参数两更少。例如两个3*3的卷积核串联,效果相当于一个5*5的卷积核,三个3*3的卷积核,效果相当于一个7*7的卷积核,但参数量减少近一半。

训练方式
- 优化方法为SGD+momentum
- 动量:0.9
- 批数:256
- 权值衰减:5*pow(10, -4)
- 前两个全连接层使用dropout,keep_prob=0.5


