论文笔记 - VGG

VGG

参考资料

理论

核心点:堆叠3x3的卷积层,并不断加深网络。

VGG的设计理念(源于ResNet的论文)

  1. 对于输出feature map大小相同的层,有相同数量的filters,即channel数相同;
  2. 当feature map大小减半时(池化),filters数量翻倍,以此来保证每一层的时间复杂度(preserve the time complexity per layer)。

超参数

  • batch size为256
  • momentum为0.9
  • L2正则项,权值为5*10^-4
  • FC的前两层dropout为0.5
  • learning rate初始化为0.01,当accuracy不变时则衰减10倍,最终衰减了三次
  • 370K迭代(74 epochs)后训练停止

随着网络的加深,参数的数量并不会增加很多(133M-144M)。

使用1x1卷积层可以在不影响感受野的情况下,增加判别函数的非线性能力。

和GoogLeNet的对比:GoogLeNet的结构更复杂,且为了减少计算量,在第一层特征图的空间分辨率降低的很厉害。

权值的初始化是很重要的,因为坏的初始化会让网络中的梯度不稳定,从而导致训练停滞。为了避免这一问题,在训练更深层的网络时,前4个卷积层和后3个FC层会使用浅层网络预训练的权值。但其实可以不用这么做,使用Xavier初始化权值就行

训练

训练时,将图像随机缩放到固定尺寸256~512,然后进行以下操作:

  • random crop 224x224
  • random horizontal flipping
  • random RGB colour shift

测试

在测试时,将FC层转换为卷积层,原因:

  • 减小计算了
  • 不限制输入图像的大小,可以高效地对图像作滑动窗式预测
  • 例如输入为7x7x512,第一层全连接层输出4096;我们可以将其看作卷积核大小为7x7,步长为1,没有填充,输出为1x1x4096的卷积层

问题

  • 1、虽然 VGGNet 减少了卷积层参数,但实际上其参数空间比 AlexNet 大,其中绝大多数的参数都是来自于第一个全连接层,耗费更多计算资源。在随后的 NIN 中发现将这些全连接层替换为全局平均池化,对于性能影响不大,同时显著降低了参数数量。
  • 2、采用 Pre-trained 方法训练的 VGG model(主要是 D 和 E),相对其他的方法参数空间很大,所以训练一个 VGG 模型通常要花费更长的时间,所幸有公开的 Pre-trained model 让我们很方便的使用。