前言
VGG网络于2014年被提出,在ImageNet数据集上面获得了定位项目的第一名和分类项目的第二名,虽然在2014年被提出的GoogLeNet网络在定位项目之外的其他项目中都取得了第一名,风头盖过了VGG,但VGG以其简约的网络结构被人使用,VGG网络参数量巨大,但提出者公开了训练好的模型,后续使用仅需在此基础上做微调,比较方便。之前做了VGG网络Paper的翻译,这篇文章介绍VGG论文理解,以及对比VGG与其他网络结构的异同。
VGG网络结构
Paper中介绍了六种结构,网络层数逐层加深,其网络效果也越来越好,先看一下结构配置:
从上图可以看到,除了结构C中用到了1x1的卷积核之外,其他均使用3x3的卷积核,3x3的卷积核既可以减少参数量,又可以增加非线性:Paper中给出7x7的卷积核与3x3的卷积核实现同样效果所需要的参数量的对比,假设在stride为1的情况下,一个7x7的卷积核扫过特征图(假设特征图的channel数为C),需要7Cx7C=49C^2个参数,而想要实现与之相同的效果,只需要三个3x3的卷积核堆叠,此时需要的参数量为3x3Cx3C=27C^2,相比可知,用小尺寸的卷积层叠加需要的参数量要少很多;与此同时,每个卷积层后面都接着ReLU激活层,这样增加了非线性,有利于提高网络对高维特征的判别能力。至于为什么选择3x3的卷积核,作者在Paper中介绍说3x3的卷积核是能够捕获图片上下左右中心概念的最小尺寸。
由上图可知,VGG网络相当巨大,远比AlexNet大得多,大部分参数集中在最后三层的全连接层,可以看到FC-1就包含102760448个参数。
模型训练
momentum:0.9
regularization: L2罚项,大小为:5*10^-4
learning rate:初始学习率为0.01,当训练阶段准确率不再提升时学习率缩小10倍
尽管模型参数很多,但只需要很少的epoch就可以收敛,原因如下:
(b) pre-initialisation of certain layers.