VGGNet

VGGNet[1]是University of Oxford(牛津大学)的Visual Geometry GroupKaren小组的 Simonyan和Andrew Zisserman提出的一种经典网络结构,以机构Visual Geometry GroupKaren的缩写VGG命名。VGGNet赢得了ILSVRC 2014中localisation(定位)的第一名和classification(分类)的第二名(分类第一名是GoogLeNet)。该网络结构的主要工作时证明了增加网络结构深度能够在一定程度上影响网络的最终性能。VGG有两种网络结构,分别是VGG16和VGG19。两者没有本质区别,只是网络深度不一样。

1. 卷积网络配置

1.1 架构/结构

卷积网络的输入是 $224\times 224$RGB图像。 仅有的预处理是减去训练集的RGB均值。

全部使用3*3的卷积核,该卷积核恰好能看到上下左右及中心。使用了1*1的卷积滤波器,可以认为是输入通道的线性转换,后面紧跟着一个分线性转换。3*3的padding是1像素,这样能保证图像大小不变。使用max-pooling,窗口为2*2,步长为2。

三个全连接层4096,4096,1000。后面是softmax层。

所有隐层使用relu非线性激活。

1.2 配置

卷积网络的配置如图2。图3中标识了不同配置的参数多少。尽管非常深,我们的权重个数并没有比浅的网络参数多多少(比如Sermanet 2014的144M个权重)。

1.3 讨论

AlexNet第一层使用的11*11的卷积核,ZFNet使用的是7*7。我们全部使用3*3的卷积核,步长为1。很容易看到两个3*3的卷积核堆叠(他们之间不使用pooling)的感受野(receptive field)等价于5*5的。三层堆叠可以有7*7的感受野。所以,当我们使用堆叠的3*3的卷积核,而不是7*7的卷积核,我们获得了什么收益呢?

首先,决策函数更有分辨性。其次,我们减少了参数的个数。假设输入和输出的3*3卷积堆有C个channel,则该堆具有的参数的个数是$3(3^2 C^2)=27C^2$,而相对应的7*7的参数个数为$7^7C^2=49C^2$。比前面的多了81%还多。可以看做是对7*7的滤波器上做了一个强制的正则化,让他们强制分解为3*3的滤波器,并且中间插入了非线性。

VGG C在最后的三个阶段都用到了1x1卷积核,选用1x1卷积核的最直接原因是在维度上继承全连接,然而作者首先认为1x1卷积可以增加决策函数(decision function,这里的决策函数我认为就是softmax)的非线性能力,非线性是由激活函数ReLU决定的,本身1x1卷积则是线性映射,即将输入的feature map映射到同样维度的feature map。作者还提到“Network in Network” architecture of Lin et al. (2014).这篇文章就大量使用了1x1卷积核。

此外,查了知乎简单总结下1x1卷积的特点(就不说加入非线性这个conv自带的特点了):

  1. 专注于跨通道的特征组合:conv1x1根本不考虑单通道上像素的局部信息(不考虑局部信息),专注于那一个卷积核内部通道的信息整合。conv3x3既考虑跨通道,也考虑局部信息整合;
  2. 对feature map的channel级别降维或升维:例如224x224x100的图像(或feature map)经过20个conv1x1的卷积核,得到224x224x20的feature map。尤其当卷积核(即filter)数量达到上百个时,3x3或5x5卷积的计算会非常耗时,所以1x1卷积在3x3或5x5卷积计算前先降低feature map的维度。
1.4 内存与参数个数计算

下图5中,可以看出。像其他卷积神经网络一样,内存(memory)同样也是计算时间(compute time)在早期的卷积网络中,而多数的参数则在全连接层(FC)。在VGGNet中,第一层FC(全连接)中有100M个参数,而总参数是140M个。

2. 分类框架

2.1 训练

训练的详细参数可以参考论文。

Training image size。训练图片大小。是这样,类似于AlexNet,先把图片缩放到一定大小,比如最小边长为S。S是大于224的。然后再从这个图片中裁剪一些224*224的图片作为输入。

这里使用了两种方法设置S。一种是S=256,也是AlexNet使用的。及使用S=384。

另一种是S从Smin和Smax中每次随机挑选。这里Smin=256,Smax=512。

2.2 测试 && 实施细节

这里是细节。参考论文就好。

3. 分类实验

数据集是ILSVRC 2012,其中training 1.3m,validation 50k,testing 100k。

3.1 单尺度评估(Single Scale Evaluation)

如图6,结果如下。证明了。

  1. local response normalization(LRN)无效,开从A-LRN可以看出。所以B-E不再使用。
  2. 1*1的卷积是有效果的,可以从C比B好看出。
  3. D比C好,说明通过卷积获取空间内容还是有效的。
  4. 深度越深越好。
3.2 多尺度评估(Multi-Scale Evaluation)

对比图7与图6,说明多尺度评估明显有效果。

3.3 多裁剪评估

多种裁剪方法进行评估,然后评估预测结果。这里只使用了D和E两个网络。结果如图8。

3.4 卷积网络混淆

至此,我们尝试用了多种单一网络的模型。在这部分,我们尝试将多种模型的结果进行平均。AlexNet,ZFNet都证明了多种模型的预测是有效的,能够获得很好的结果。

结果如图9所示。

By the time of ILSVRC submission we had only trained the single-scale networks, as well as a multi-scale model D (by fine-tuning only the fully-connected layers rather than all layers). The resulting ensemble of 7 networks has 7.3% ILSVRC test error. After the submission, we considered an ensemble of only two best-performing multi-scale models (configurations D and E), which reduced the test error to 7.0% using dense evaluation and 6.8% using combined dense and multi-crop evaluation. For reference, our best-performing single model achieves 7.1% error.

3.5 与最先进的网络进行对比

对比结果如图10所示。

3.6 VGGNet的泛化能力

VGGNet对于其他数据集一样有非常好的泛化能力。多尺度卷积特征和线性SVM的组合或许优于更复杂的的识别管道加不太深的特征组合。我们对PASCAL VOC和Caltech图像分类的基准如下:

4. 结论

这篇工作中,使用了深达19层的卷积神经网络进行大量图片分类。证明了网络的深度对于分类的准确率是有提升的。

参考资料

  1. Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition[J]. arXiv preprint arXiv:1409.1556, 2014.
  2. https://mp.weixin.qq.com/s?__biz=MzUxNjcxMjQxNg==&mid=2247485161&idx=1&sn=0d836d81ba051e37675bbf6f25504e9d&chksm=f9a27466ced5fd701d93c4fd5ac9f286deab61bc0bc0448acc2876d7d251becf2eceb306fba5&scene=0#rd
  3. https://blog.heuritech.com/2016/02/29/a-brief-report-of-the-heuritech-deep-learning-meetup-5/
  4. https://blog.csdn.net/qq_40027052/article/details/79015827
  5. http://www.robots.ox.ac.uk/~vgg/research/very_deep/
  6. http://cs231n.github.io/convolutional-networks/
谢谢你!