[重读经典论文]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. 网络结构

微信截图_20230402154019

如上图所示,为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的具体网络图:

下载 (1)

下载

随着网络的加深,feature map的宽高逐渐减少,通道数逐渐增加(每个block是上一个block的2倍),最后一个卷积层后接三个全连接层,最后用softmax输出概率。

3. 为什么使用3*3卷积核

  • 堆叠的卷积层能够提供更大的感受野,如两个3*3卷积层,可以提供5*5的感受野,3个3*3卷积层可以提供7*7的感受野。
  • 引入更多的非线性
  • 减少参数数量

4. VGG网络横向对比

首先根据2.中的网络配置表,各个网络的参数量如下:

微信截图_20230402161838

其中VGG19(E)是最臃肿的,达到1.44亿的参数量。

然后是网络在测试集上的性能对比:

image

可以看到VGG16和VGG19的精度是差不多的,但是VGG16比VGG19少了4百万参数,因此也导致人们更喜欢使用VGG16在自己的任务上进行迁移学习。

在这篇论文中,作者证明了AlexNet中使用的LRN技巧是没什么作用的(模型A-LRN),另外没有采用1*1卷积(模型C)。

5. 训练

微信截图_20230402162722

这里提一下数据处理部分,如上图所示,训练图片的尺寸,选取一个固定的最小边 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,因此输入的宽高是不定的。

作者将最后的三个全连接层,转为等价的卷积层,如下图所示:

v2-3f515748e2cdb25611f8c6bdd1bdb8b8_r

原始网络(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. 参考

[1] 【精读AI论文】VGG深度学习图像分类算法

[2] VGG 论文阅读记录

[3] 【深度学习】经典神经网络 VGG 论文解读

(完)

posted @ 2023-04-02 17:02  大师兄啊哈  阅读(831)  评论(0编辑  收藏  举报