VGG——Very Deep Convolution Network for Large-Scale Image Recognition

Absract

该论文主要阐述的是深度卷积神经网络——VGGNet。

VGGNet 探索了卷积神经网络的深度与其性能之间的关系,通过反复堆叠3x3的小型卷积核和2x2的最大池化层,VGGNet 成功地构筑了16~19层深的卷积神经网络。VGGNet 相比之前 state-of-the-art 的网络结构,错误率大幅下降,并取得了 ILSVRC 2014 比赛分类项目的第2名和定位项目的第1名。同时 VGGNet 的拓展性很强,迁移到其他图片数据上的泛化性非常好。VGGNet 的结构非常简洁,整个网络都使用了同样大小的卷积核尺寸(3x3)和最大池化尺寸(2x2)。

1.网络结构

基本参数:

(1)网络输入是固定结构224X224RGB的图像,对训练数据集进行处理——减去RGB均值

(2)用最小尺寸的卷积核——3X3滤波器

(3)stride=1,padding=1(保证卷积前后像素不变)

(4)5个最大值pooling层 f=2,s=2

(5)3个FC层,第一个FC层和第二个是4096个通道,第三个是1000通道

(6)最后一层是soft-max层

(7)除了最后一层全连接的分类层外,其他层都需要使用rectification non-linearity(RELU)。

(8)不需要添加Local Response Normalization(LRN),因为它不提升效果反而会带来计算花费和内存花费,增加计算时间。

VGGNet 拥有5段卷积,每一段内有2~3个卷积层,每段内的卷积核数量是一样的,同时每段尾部会连接一个最大pooling层用来缩小图片尺寸,经历过一个最大pooling层之后下一段内的卷积核数量会X2,每段卷积中卷积核数量:64 – 128 – 256 – 512 – 512。

如下图所示是VGG网络模型的实现的六个具体网络结构:

VGG——Very Deep Convolution Network for Large-Scale Image Recognition
Table1 卷及网络架构

C中采用了1x1的卷积核是用来做对比试验,1x1的卷积核可以在没有改变、影响卷积感受野的情况下增加线性变换次数,而保持输入通道数和输出通道数不变,没有发生降维。)

从上表可以看出VGGNet模型中经常出现多个完全一样的3x3的卷积层堆叠在一起的情况,这其实是非常有用的设计。两个3x3的卷积层串联相当于1个5x5的卷积层,即一个像素会跟周围5x5的像素产生关联,可以说感受野大小为5x5。而3个3x3的卷积层串联的效果则相当于1个7x7的卷积层。但是使用小尺寸的卷积核会有如下两个优点

(1)3个串联的3x3的卷积层,拥有比1个7x7的卷积层更少的参数量,只有后者的一半。

(2)最重要的是,3个3x3的卷积层拥有比1个7x7的卷积层更多的非线性变换(前者可以使用三次 ReLU **函数,而后者只有一次),使得 CNN 对特征的学习能力更强。

VGG——Very Deep Convolution Network for Large-Scale Image Recognition
Table2 参数数量

表2是各个CNN的参数总数,可以看到,虽然深度变化了,但是参数数目变化不大。

2. 训练

文章中将224x224作为网络的training scale

使用加动量的随机梯度下降方法来优化Logistic回归(SGD+momentum)

  • 动量: 0.9
  • 批数: 256
  • 权值衰减:5x10^-4,(weight decay)
  • 前两个全连接层使用dropout为: keep_prob = 0.5
  • 学习速率为: 0.01,当验证集准确度停止提升的时候以10倍速度衰减

    训练A网络:

  • W: 服从(0, 0,01)的高斯分布
  • Bias: 0

后续:

把A的前4个卷积层和最后的全连接层的权值当做其它网络的初始值,未赋值的中间层随机初始化。
有训练过的初始值的层不减小其学习速率,对于随机初始化的层,权重平均分布在均值为0方差为0.01,偏差b初始化为0。

训练图像尺寸:

在训练中,VGG使用了Multi-Scale的方法做数据增强,将原始的图像缩放到不同尺寸S,然后在随机裁切224x224的图片,这样可以增加很多数据量,对于防止过拟合有很不错的效果。
初始对原始图片进行裁剪时,原始图片的最小边不宜过小,这样的话,裁剪到224x224的时候,就相当于几乎覆盖了整个图片,这样对原始图片进行不同的随机裁剪得到的图片就基本上没差别,就失去了增加数据集的意义,但同时也不宜过大,这样的话,裁剪到的图片只含有目标的一小部分,也不是很好。

针对上述问题,文章提出了两种方法:

  • 固定尺寸为S=256 和 S=384, 训练后取均值
  • multi-scale training,训练数据随机从[256, 512]的确定范围进行抽样,这样原始图片尺寸不同,有利于训练。