[重读经典论文]VGG——传统串行卷积神经网络的极致
1. 前言
VGG是由牛津大学视觉组(Visual Geometry Group,Vgg的名称也是来源于此)在2014年的论文《Very Deep Convolutional Networks for Large-Scale Visual Recognition》中提出的卷积神经网络模型。
VGG将LeNet和AlexNet奠定的经典串行卷积神经网络结构的深度和性能发挥到极致,主要特点是网络层数较深,有16层或19层,宽度(卷积核个数)逐层加宽。
将所有卷积核设置为3 x 3,减少参数量和计算量,共设置5个block,每进入新的block,卷积核个数翻倍。
使用2×2的最大池化操作,将输入图像的空间维度减半。
这种小卷积核的使用减少了网络中的参数数量,并使其更易于训练。此外,VGG采用了全连接层作为输出层,以实现对图像的分类。
VGG在多个计算机视觉任务中表现出色,例如图像分类、物体检测和语义分割等。在ImageNet大规模视觉识别竞赛中,VGG取得了非常好的成绩,是2014年ImageNet图像分类竞赛亚军,定位竞赛冠军。
VGG16和VGG19经常作为各类计算机视觉任务的迁移学习骨干网络(足够简单)。
VGG模型结构虽然简单,但臃肿复杂,参数过多(超过一亿个),速度慢,第一个全连接层占据了大量参数。
2. 网络结构
如上图所示,为VGG的主要结构和6种配置,VGG实际上是在前面的Alexnet和Zfnet上改进而来,同样也是分为5个卷积block,与前面两个网络不同的是,VGG放弃7*7的大卷积核和stride=2的下采样操作,选择几乎全部使用3*3卷积(配置C中尝试了1*1)。
网络设计细节:
- 使用3*3卷积
- 卷积的stride都使用1
- 使用Relu激活函数
- 5个max-pooling 层,2*2的范围,也就是缩小两倍
- 没有归一化
- 3个全连接层
上面尝试了11到19层的网络,这里的层数主要只可学习的层的数量,下面是VGG16的具体网络图:
随着网络的加深,feature map的宽高逐渐减少,通道数逐渐增加(每个block是上一个block的2倍),最后一个卷积层后接三个全连接层,最后用softmax输出概率。
3. 为什么使用3*3卷积核
- 堆叠的卷积层能够提供更大的感受野,如两个3*3卷积层,可以提供5*5的感受野,3个3*3卷积层可以提供7*7的感受野。
- 引入更多的非线性
- 减少参数数量
4. VGG网络横向对比
首先根据2.中的网络配置表,各个网络的参数量如下:
其中VGG19(E)是最臃肿的,达到1.44亿的参数量。
然后是网络在测试集上的性能对比:
可以看到VGG16和VGG19的精度是差不多的,但是VGG16比VGG19少了4百万参数,因此也导致人们更喜欢使用VGG16在自己的任务上进行迁移学习。
在这篇论文中,作者证明了AlexNet中使用的LRN技巧是没什么作用的(模型A-LRN),另外没有采用1*1卷积(模型C)。
5. 训练
这里提一下数据处理部分,如上图所示,训练图片的尺寸,选取一个固定的最小边 S对原图进行缩放(蓝色区域),然后在 S 上截取大小为 224×224 的区域。S 的选取有两种方式:
- 第一种:固定 S 的方式,一个是选取一个固定的 S,另一个是选取两个固定的 S,分别为 256(AlexNet、ZFNet有使用) 和 384 。对于一个给定的神经网络配置,首先训练 S=256。为了加速训练 S=384 的网络,会使用预训练的 S=256 网络的权重来初始化参数,然后使用更好的初始化学习速率 1e-3 。
- 第二种:设置 S 为多尺度,每次训练图片,都通过从一确定的范围[Smin, Smax] (通常值为 Smin=256 、Smax=512)随机采样一个 S ,使用此 S 来缩放图片。因为图片中的物体有不同的尺寸,通过 S 多尺度,这样的情况就被考虑了进去。
因为速度的原因,论文中训练多尺寸模型时,是通过微调( fine-tuning)具有相同配置的,固定尺寸 S=384 的预训练模型的所有层。
6. 测试
测试是一个比较迷的操作,作者将测试时的图片最小边定义为Q,而且并不等于训练时的输入边长S,因此输入的宽高是不定的。
作者将最后的三个全连接层,转为等价的卷积层,如下图所示:
原始网络(Fc部分),以224*224*3为输入,最后一个一个卷积层输出尺寸为7*7*512,后面接一个4096维的全连接层,可以将此全连接层等价成一个7*7*512*4096的卷积层,然后同样的第二、三个全连接层可以等价为一个1*1*4096*4096的全连接层,最后得到一个n*n*1000的张量(取决于输入图片的大小),然后使用全局平均池化,将其转为1*1*1000,flatten后就是一个1000的向量,接softmax之后输出概率。
7. 其他
后面做了很多评估实验,如单尺寸评估,多尺寸评估,多裁剪评估,多模型融合等技巧。
他们在定位、动作识别等任务中的表现。
总的来说,VGG是在传统的串行卷积神经网络中的王者,进一步证明了增加网络深度对模型学习的有利性,而且3*3卷积的大量使用,也为后面的人提供了一个很好的方向,由于其简单有效,后续很多人在自己的任务中都选择了VGG做为主干网络。
不过VGG的弊病是,最后的全连接层,导致参数量过大,网络总体显得特别臃肿。
8. 参考
[2] VGG 论文阅读记录
(完)