首页 > 其他分享 >[重读经典论文]VGG——传统串行卷积神经网络的极致

[重读经典论文]VGG——传统串行卷积神经网络的极致

时间:2023-04-02 17:11:30浏览次数:54  
标签:卷积 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 论文解读

(完)

标签:卷积,VGG,网络,神经网络,使用,连接,重读
From: https://www.cnblogs.com/harrymore/p/17280799.html

相关文章

  • 卷积神经网络(Convolutional Neural Network)
    前置芝士:神经网络前言人脑视觉机理,是指视觉系统的信息处理在可视皮层是分级的,大脑的工作过程是一个不断迭代、不断抽象的过程。视网膜在得到原始信息后,首先经由区域V1初步处理得到边缘和方向特征信息,其次经由区域V2的进一步抽象得到轮廓和形状特征信息,如此迭代地经由更多更高层......
  • [重读经典论文]Inception V4
    1.前言InceptionV4是google团队在《Inception-v4,Inception-ResNetandtheImpactofResidualConnectionsonLearning》论文中提出的一个新的网络,如题目所示,本论文还提出了Inception-ResNet-V1、Inception-ResNet-V2两个模型,将residual和inception结构相结合,以获得residual......
  • m基于FC全卷积网络和kalman的遮挡车辆跟踪算法matlab仿真,用matconvnet-1.0-beta20工
    1.算法描述1.1全卷积神经网络全卷积神经网络(FullyConvolutionalNetworks,FCN)是JonathanLong等人于2015年在FullyConvolutionalNetworksforSemanticSegmentation一文中提出的用于图像语义分割的一种框架,是深度学习用于语义分割领域的开山之作。我们知道,对于一个各层参数结......
  • CoordConv:给你的卷积加上坐标
    摘要:本文主要对CoordConv的理论进行了介绍,对其进行了复现,并展示了其在网络结构中的用法。本文分享自华为云社区《CoordConv:给你的卷积加上坐标》,作者:李长安。一、理论......
  • [重读经典论文]GoogLeNet——Inception模块的诞生
    1.前言GoogLeNet,也被称为InceptionV1网络,由Google公司的研究员在2014年的论文《Goingdeeperwithconvolutions》提出。本论文提出了Inception模块,引入并行结构和不同......
  • 基于CNN卷积神经网络的minst数据库手写字识别matlab仿真
    1.算法描述深度学习(DL,DeepLearning)是机器学习(ML,MachineLearning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI,ArtificialIn......
  • 深度学习的数学基础: 函数/参数优化/矩阵运算/向量化/卷积运算/张量运算
     1.函数与导数函数是一种映射关系,将一个或多个自变量的取值映射为一个因变量的取值。函数的导数表示函数在某一点处的变化率,即函数图像在该点的切线斜率。......
  • 什么是deconv操作(反卷积,转置卷积)
    1.前言zfnet在他们可视化的时候,利用到了《Zeiler,M.,Taylor,G.,andFergus,R.Adaptivedeconvolutionalnetworksformidandhighlevelfeaturelearning.InIC......
  • 利用tensorflow实现简单的卷积神经网络——迁移学习小记(二)
    一、什么是神经网络(CNN)  卷积神经网络(ConvolutionalNeuralNetwork,简称CNN),是一种前馈神经网络,人工神经元可以影响周围单元,可以进行大型图像处理。卷积神经网络包括卷积......
  • [重读经典论文] AlexNet笔记
    1.前言AlexNet是一个深度卷积神经网络模型,由AlexKrizhevsky、IlyaSutskever和GeoffreyHinton于2012年设计。这个模型在ImageNet图像识别挑战赛中获得了当时的冠军,并推......