VGG Net 论文细读

作者: 就良同学 | 来源:发表于2021-08-12 16:54 被阅读0次

    论文地址:《Very Deep Convolutional Networks for Large-Scale Image Recognition
    思维导图:https://mubu.com/explore/5JnjDt1vIng


    一、背景

    LSVRC:大规模图像识别挑战赛

    ImageNet Large Scale Visual Recognition Challenge 是李飞飞等人于2010年创办的图像识别挑战赛,自2010起连续举办8年,极大地推动计算机视觉发展。比赛项目涵盖:图像分类(Classification)、目标定位(Object localization)、目标检测(Object detection)、视频目标检测(Object detection from video)、场景分类(Scene classification)、场景解析(Scene parsing)。

    VGG Net由牛津大学的视觉几何组(Visual Geometry Group)参加2014年ILSVRC提出的网络模型,它主要的贡献是展示了卷积神经网络的深度(depth)是算法优良性能的关键部分。

    二、Abstract

    Q1:做了什么?

    研究了“卷积网络的深度”在大规模的图像识别环境下对准确性的影响(即神经网络的深度与其性能之间的关系)。

    Q2:怎么做的?

    使用一个非常小的卷积核(3\times3)对网络深度进行评估,评估发现将网络深度加至16层-19层,性能有了显著提升。

    Q3:做得怎么样?

    在ImageNet Challenge 2014竞赛中,定位赛道获得第一名,分类赛道获得第二名。

    三、Architecture

    论文提出了多种规模的网络架构(不同规模深度不尽相同),下图为其中性能表现良好的网络架构之一:VGG16结构图。

    VGG16结构图

    1、输入

    1. 规格:3@224x224(3个通道,宽高像素均为224);
    2. 唯一的预处理操作:计算出3个通道的平均值,在每个像素上减去平均值(处理后迭代更少,收敛更快);

    2、卷积

    1. 大部分网络架构使用非常小的3x3卷积核贯穿整个网络;
    2. 部分网络架构除了3x3卷积核之外还使用了1x1卷积核;
    3. 卷积层步长(stride)=1,3x3卷积核的填充(padding)=1;
    4. 所有隐藏卷积层都配备了ReLU非线性激活。

    3、池化

    1. 整个网络架构的池化总共由5个“MAX池化层”实现;
    2. 池化操作在一系列卷积操作之后执行;
    3. 池化窗口为2x2,步长=2。

    4、分类器

    所有卷积操作之后跟有3个全连接层(FC层):

    1. 前2个FC层:均为4096通道;
    2. 最后1个FC层:1000个通道;
    3. 全连接层之后是SoftMax分类器。

    四、Dicussion

    所有的ConvNet配置如图所示,VGG结构全部都采用较小的卷积核(3x3,部分1x1):

    ConvNet配置

    1、3x3卷积核的作用(优势)

    两个3×3的卷积层串联相当于1个5×5的卷积层(二者具有等效感受野5x5),3个串联的3×3卷积层串联的效果相当于一个7×7的卷积层;

    下图展示了为什么“两个3x3卷积层”与“单个5x5卷积层”具有等效的5x5的感受野。

    等效感受野

    1)作用1:减少网络层参数

    1. 对于两个3x3卷积核,所用的参数总量为2\times3^2\times{channels}(假设通过padding填充保证卷积层输入输出通道数不变);
    2. 对于单个5x5卷积核,参数量为5^2\times{channels}
    3. 参数量减少了(1-\frac{2\times3^2\times{channels}}{5^2\times{channels}})\times100\%=28\%

    2)作用2:增加更多的非线性变换

    2个3x3卷积层拥有比1个5x5卷积层更多的非线性变换(前者可以使用两次ReLU激活函数,而后者只有一次),使得卷积神经网络对特征的学习能力更强。

    2、1x1卷积核的作用

    1)作用1:降低运算量

    不影响输入输出的维度情况下(即图片宽高尺寸不变),降低了大量运算,同时改变了维度(通道数);

    2)作用2:提高非线性

    卷积之后再紧跟ReLU进行非线性处理,提高决策函数的非线性。

    五、Classification Framework

    1、训练

    1)参数设置

    1. 使用了mini-batch的梯度下降法(带有冲量),batch_size设为256,冲量设为0.9;
    2. 前两个FC层使用了dropout(失活概率为0.5),用来缓解过拟合;
    3. 训练通过权重衰减(L2惩罚乘子设定为5\times{10}^{-4})进行正则化;
    4. 学习率初始化为0.01
      • 当验证集准确率稳定时,学习率减少为原来\frac{1}{10}
      • 整个训练过程,学习率总共降低3次,学习在37万次迭代后停止(74个epochs)。

    2)预训练

    1. 先训练较浅的网络A,A收敛之后呢,将A的网络权重保存下来;
    2. 再复用A网络的权重来初始化后面的几个复杂模型
      • 只对“前四个卷积层”、“后三层全连接层”复用A的网络权重,其它的中间层都是随机初始化;
        • 随机初始化,均值是0,方差是0.01,bias是0。

    3)多尺度训练

    Q1:什么是多尺度训练(Multi-scale)?

    详见:https://www.cnblogs.com/xxxxxxxxx/p/11629657.html

    通俗点讲,就是将一张图片先进行等比例缩放到不同尺寸(实现1张图片变多张图片),再在缩放后的图片中随机裁剪出指定尺寸区域得到更多的图像。

    就这样,实现了训练集的数据增强。

    Q2:作用是什么?

    数据增强,有利于预防过拟合。

    Q3:步骤是什么?

    1. 步骤1:将原始图像缩放到不同尺寸S;
      • Q:S设为多大合适呢?(两种解决方法A1、A2)
        • S过小,裁剪到224x224的时候,就相当于几乎覆盖了整个图片,这样对原始图片进行不同的随机裁剪得到的图片就基本上没差别,就失去了增加数据集的意义;
        • S过大,,裁剪到的图片只含有目标的一小部分,也不是很好。
      • A1:单尺度训练(将S设为一个固定值)
        • 论文评估了S=256和S=384两种单尺度模型;
      • A2:多尺度训练(将S设为一个区间[S_{min}, S_{max}]
        • 论文随机从[256,512]的区间范围内进行抽样,这样原始图片尺寸不一,有利于训练,这个方法叫做尺度抖动(scale jittering),有利于训练集增强。
    2. 步骤2:从缩放后的图片随机裁剪224x224区域的图片;
    3. 步骤3:对裁剪后的图片进行水平翻转和随机RGB色差调整(改变训练图像中 RGB 通道的强度);

    2、测试

    测试阶段与训练阶段主要有两点不同:

    1. 对于测试集同样采用Multi-scale,将图像缩放到尺寸Q,但是Q可以≠训练尺度S;
    2. 将“FC全连接层”转换为“等效卷积层”

    六、Classification Experiments

    1、Single Scale Evaluation

    1. 若S采用单尺度,设Q=S;若S采用多尺度,设Q=0.5(S_{min}+S_{max});
    2. 通过“A-LRN”证明,网络中加入LRN没什么用;
    3. 通过比较A-E的“top-1 val.error”和“top-5 val.error”发现,网络深度越深,训练性能越好,且深度达19层时,性能趋于饱和;
    4. 通过比较D和C,证明3x3卷积效果优于1x1卷积;
    5. 通过将“B”和“带有5x5卷积的浅层网络”,发现两个3x3卷积效果优于单个5x5卷积(即使二者具有等效的感受野);
    6. 通过比较单尺度S和多尺度S,发现尺度抖动有利于训练集数据增强。
    在单测试尺度的ConvNet性能

    2、Multi-Scale Evaluation

    1. 保持S为单尺度(S=256 or S=384),查看多尺度Q的性能(Q=\{S-32, S, S+32\});
    2. 令S为多尺度(S\in[S_{min}, S_{max}]),查看多尺度Q的性能(Q=\{ S_{min}, 0.5(S_{min}+S_{max}, S_{max}) \});
    3. 证明测试时的尺度抖动导致了更好的性能。
    在多个测试尺度上的ConvNet性能

    3、Multi-Crop Evaluation

    1. 将“稠密ConvNet_{(即未进行多裁剪)}评估”与“多裁剪图像评估”进行比较;
    2. 通过平均其soft-max输出来评估两种评估技术的互补性;
    3. 证明了使用多裁剪图像表现比密集评估略好,而且这两种方法确实是互补的(因为它们的组合优于其中的每一种)。
    ConvNet评估技术比较

    4、Convnet Fusion

    1. 查看多个卷积网络融合结果;
    2. ILSVRC提交的是单规模网络;post-提交的是多规模网络;
    3. 表现最好的多尺度模型(配置D和E)的组合,它使用密集评估将测试误差降低到7.0%,使用密集评估和多裁剪图像评估将测试误差降低到6.8%。
    多个卷积网络融合结果

    七、我的总结

    VGGNet网络特点:

    1. 层数深(VGG拥有5段卷积,每段卷积内包含2-3个卷积层),同时每段尾部配有最大池化层,适用于大型数据集;
    2. 网络简洁,使用了同样大小的卷积核尺寸(3x3)和最大池化尺寸(2x2)贯穿整个网络架构;
    3. 采用“几个小滤波器(3x3)卷积层的串联组合”替代“一个大滤波器(5x5或7x7)卷积层”,效果更好;
    4. 训练和测试阶段都对数据集进行了Multi-scale将图片缩放并采样,实现了数据增强;
    5. 测试阶段将全连接层转换为等效卷积层,去除了FC层对输入图像尺寸的限制;
    6. 采用多GPU并行训练,每个GPU处理部分数据。

    相关文章

      网友评论

        本文标题:VGG Net 论文细读

        本文链接:https://www.haomeiwen.com/subject/mxilbltx.html