VGG(2014),3x3卷积的胜利

博客:blog.shinelee.me | 博客园 | CSDNgit

写在前面

VGG(2014)网络出自paper《Very Deep Convolutional Networks for Large-Scale Image Recognition》,为ILSVRC2014 localization冠军和classification亚军方法(冠军为GoogLeNet),首次提交arXiv时间为2014年9月,后发表在ICLR2015,截止20191011引用量达27612。由于出自牛津大学Visual Geometry Group,因此网络被命名为VGG,根据层数不一样,又分为VGG1六、VGG19等。github

VGG citations

论文的主要贡献:网络

  • 探究了网络深度对性能的影响,经过叠加卷积层来增长深度,性能变好——“Our results yet again confirm the importance of depth in visual representations”。
  • 只使用\(3\times 3\)的卷积核,经过多个\(3 \times 3\)卷积层叠加来得到与大卷积核相同的感觉野,同时引入更多的非线性,减小了参数。如有\(C\)个channel,3个\(3\times 3\)的卷积层参数量为\(3(3^2C^2)=27C^2\),1个\(7\times 7\)卷积层的参数量为\(7^2C^2=49C^2\),二者的感觉野相同。

网络结构

文中列举了配置不一样的5个网络,分别命名为A、A-LRN、B、C、D、E,网络结构及参数量以下图所示,性能

VGG configurations

这些网络配置的特色是:学习

  • A-LRN与A相比,仅在第一个卷积层后加入LRN层,A和A-LRN含可学习参数的层数均为11层
  • B比A多了2个\(3 \times 3\)卷积层,为13层
  • C比B多了3个\(1\times 1\)卷积层,为16层
  • D将C的3个\(1\times 1\)卷积层替换为\(3\times 3\)卷积层,仍为16层
  • E在D的基础上又增长了3个\(3\times 3\)卷积层,为19层
  • 每次maxpool后,feature map尺寸减半,紧随其后的卷积层会将feature map的数量加倍,64→128→256→512

B网络有个特色,每2个\(3\times 3\)卷积层一组,再接maxpool。实际上,在实验中还配置了另外一个网络——将B的“each pair of \(3\times 3\) conv”替换为1个\(5\times 5\)卷积层,其性能要比B差7%,因此paper认为小卷积核深网络要比大卷积核浅网络好测试

paper中的实验均在上述网络中进行,下面具体看一下。spa

multi-scale training and testing

在训练阶段,VGG的输入固定为\(224\times 224\),对尺寸不一样的图像须要先scale再crop到\(224\times 224\),理论上只须要将图像最短的边scale到大于等于224便可进行crop,paper中设置了2种scale方式,第一种scale到256或384,第二种随机scale到\([256, 512]\)之间——384刚好位于256和512的中间,作了对比实验。.net

测试阶段,再也不进行crop操做,而是采用了Overfeat中的一个技巧,将网络最后的3个全链接层在实现上转化成卷积层,以适应不一样尺寸的输入,这个技巧在paper中称之为dense全链接层的运算方式是输入向量与权重矩阵相乘,当权重矩阵的尺寸肯定了,输入向量的长度就不可改变了,而卷积的运算方式是权重在输入上滑动内积,因此只须要输入的尺寸大于kernel的窗口便可。具体地,若是输入刚好为\(224\times 224\),经历过5次maxpool后,feature map尺寸变为\(7 \times 7\),当输入尺寸大于224时,这个feature map将大于等于\(7\times 7\)。将3个全链接层依次转化为\(7\times 7\)卷积和2个\(1\times 1\)卷积,这种转化并不改变权重,只是实现方式上的变化,此时整个网络为全卷积网络。若是输入图像大于\(224\times 224\),网络最后输出的class score map将大于\(1000 \times 1\),为了获得固定长度为1000的class score vetor,只需将其进行spatially average(sum-pooled),而后再softmax。更多能够参见Converting Fully-Connected Layers to Convolutional Layers的解释。orm

预测阶段的multi scale,即将输入图像作不一样scale,分别输入网络,对预测结果取平均。

下图分别为single scale和mutiple scale测试的结果,测试库为ILSVRC-2012 dataset,

single test scale

multiple test scales

上面的对比实验,可得出如下结论:

  • 随着深度增长,性能变好
  • 与A相比,A-LRN性能没有改善,LRN用途不大
  • 不管是training仍是testing,multiple scale均能改善性能,二者结合使用效果更佳
  • 在当前数据集和网络结构配置上,VGG16(D)和VGG19(E)性能基本同样,接近饱和

对于multi scale对性能的改善,想来也是合理的,由于图像中目标的尺寸并不肯定,有大有小,在训练阶段经过scale jittering来增广数据,可以让网络在必定程度上cover这种变化,而在预测阶段,multi scale能够当作在输入数据上作的集成学习,亦是提高性能的常规操做。

其余有意思的点

论文中还有一些其余有意思的点,简单总结以下,

  • 为了网络能正常收敛,权重的初始化很重要,原来是先训练浅层网络A,而后用A的权重初始化后面深层网络前4个卷积层和最后3个全链接层,其余层从高斯分布中随机初始化。在paper submission后发现,直接采用Understanding the difficulty of training deep feedforward neural networks中的初始化方法就能够,即Xavier方法
  • paper中评论,由于A-LRN中的Local Response Normalisation(LRN)没有效果,还增长了内存使用和计算量,因此后面的BCDE网络就不用了(微笑)。
  • 在ILSVRC-2014 challenge中,VGG提交的是7模型融合结果,提交后他们测试2模型的融合结果要更好,top1 val好1%,top5 val好0.5%,不过是在multi-scale traing、multi-crop和dense一块儿加成下取得的结果。
  • VGG (1 net, multi-crop & dense eval) 单网络比GoogLeNet单网络的性能要好约1%。
  • 2014年,ImageNet竞赛Top5错误率首次进入0~10%区间。

以上。

参考

相关文章
相关标签/搜索