VGG网络

VGGNet是牛津大学计算机视觉组和Google DeepMind公司的研究员仪器研发的深度卷积神经网络。VGG主要探究了卷积神经网络的深度和其性能之间的关系,通过反复堆叠3*3的小卷积核和2*2的最大池化层,VGGNet成功的搭建了16-19层的深度卷积神经网络。与之前的state-of-the-art的网络结构相比,错误率大幅度下降;同时,VGG的泛化能力非常好,在不同的图片数据集上都有良好的表现。到目前为止,VGG依然经常被用来提取特征图像。


VGGNet使用的全部都是3x3的小卷积核和2x2的池化核,通过不断加深网络来提升性能。各个级别VGG的模型结构如下表所示,其下方为不同模型的参数数量。可以看到,虽然从A到E每一级网络逐渐变深,但是网络的参数量并没有增长很多,这是因为参数量主要都消耗在最后3个全连接层了。前面的卷积层数量虽多,但是参数量其实都不大,不过训练时候耗时的依然是卷积层,因为这部分计算量比较大。其中D,E分别为VGG16和VGG19。


不同VGG模型的网络结构

不同模型参数数量

与B相比,C多使用了几个1x1的卷积层,1x1的卷积层的主要意义在于非线性变换和降维,在这里则是非线性变换。

VGG拥有5个卷积段,每一个卷积段有2-3个卷积层,同时每段的结尾都会连接一个最大池化层,来缩小图片尺寸。每段内的卷积核数量都一样,越靠后的段的卷积核数量越多:64-128-256-512-512。其中经常出现多个完全一样的3x3卷积层堆叠在一起的情况,这是个非常有用的设计。如下图所示,两层3x3的串联卷积结果相当于一个5x5的卷积,即最后一个像素会与周围5x5个像素产生关联,可以说感受野大小为5x5。而3层3x3的卷积核的串联结果则相当于1个7x7的卷积层。除此之外,3个串联的3x3卷积层的参数数量要比一个7x7卷积层的参数数量小得多,即3*3*3*C2/7*7C2 = 55%,__更少的参数意味着减少过拟合,而且更重要的是3个3x3卷积层拥有比1个7x7的卷积层更少的非线性变换(前者拥有3次而后者只有一次),使得CNN对特征的学习能力更强。

3x3卷积核

在训练时,VGG除了使用AlexNet中的图像增强方法外,还尝试了多尺度训练进行数据增强,即将图片缩放到S大小,然后从中随机裁剪224x224大小的图片来进行训练,同时被裁剪的图片的大小S也分为固定的和某一个范围,理论上只要满足S》=就够了,而对于不同的S,测试的尺寸Q也是不同。同时,测试时对于同一张图片作者对其进行翻转裁剪预测多次,取最后的平均结果。最后,作者还尝试了多模型融合,发现,DE模型融合的结果最好。

在对比测试结果后作者主要总结了以下几个观点:
(1)LRN层作用不大;
(2)越深的网络效果越好;
(3)1x1的卷积很有效,但是没有3x3的卷积好,大一些的卷积可以学习更大的空间特征。

参考:
TensorFlow实现经典卷积网络. 黄文坚,唐源
Very deep convolutional networks for large-scale image recognition.

你可能感兴趣的:(VGG网络)