目标检测学习笔记6——VGG学习与论文解读

文章目录

  • 一、引言
  • 二、网络结构
  • 三、VGG论文重点解读
    • 1.结构
    • 2.训练过程
    • 3.实验
    • 4.dense evaluation 与multi-crop evaluation两种预测方法的区别以及效果

一、引言

在学习ResNet神经网络时,提到VGG神经网络,因此对此展开学习。

VGG网络在2014年ImageNet图像分类竞赛中获得亚军(当年的冠军是GoogleNet)、定位竞赛获得冠军
VGG最大的贡献就是证明了卷积神经网络的深度增加和小卷积核的使用对网络的最终分类识别效果有很大的作用。

创新点:

  • 用多层3×3小卷积代替大卷积;
  • 网络深度至19层,宽度(channel)逐层加宽;
  • VGG16、VGG19是迁移学习的基模型,模型简洁,是常规经典CNN结构的极致。

缺点:

  • 参数量大、主要集中在FC1层,略显臃肿。

二、网络结构

以VGG-16为例,有13个卷积层和3个全连接层。
目标检测学习笔记6——VGG学习与论文解读_第1张图片
目标检测学习笔记6——VGG学习与论文解读_第2张图片

网络特点:

  • 有5个block都是卷积,每个block内卷积核数量一样;
  • 卷积的输入输出长宽相同,因为会有same padding;
  • 每个block后接池化层maxpool,池化后特征size减半;
  • 深度较深、参数量十分巨大;
  • 更小的感受野和步长。
  1. vgg-block内的卷积层都是同结构输入和输出的尺寸一样,且卷积层可以堆叠复用,其中的实现是通过统一的size为3×3卷积核+ stride1 + padding(same)实现。
  2. 池化层将前一层(vgg-block层)的特征缩减一半,使得尺寸缩减的很规整,从224-112-56-28-14-7。其中是通过pool size2 + stride2实现
  3. 深度较深,参数量够大。较深的网络层数使得训练得到的模型分类效果优秀,但是较大的参数对训练和模型保存提出了更大的资源要求
  4. 全局的卷积核大小都为3×3,相比以前的网络模型来说,尺寸足够小。

具体的尺寸变化如下图所示:
目标检测学习笔记6——VGG学习与论文解读_第3张图片
对比不同的6个结构的VGG,其中D就是VGG-16,E是VGG-19:
目标检测学习笔记6——VGG学习与论文解读_第4张图片
各结构的参数量如下表所示:
目标检测学习笔记6——VGG学习与论文解读_第5张图片
下表是我整理的参数计算过程,可见在FC1层的参数量是最最最多的,整体的参数量也上亿了,十分庞大。
目标检测学习笔记6——VGG学习与论文解读_第6张图片

三、VGG论文重点解读

深度是卷积神经网络架构的一个重要方面。为了使深度更深,作者将卷积层中filter size尺寸都设为很小的3×3,将卷积层数量加大,使深度更深,事实证明是可行的。

1.结构

  • 训练时唯一的预处理:将输入的224×224×3通道的像素值,减去平均RGB值,然后进行训练
  • 使用最小尺寸的fliter size 3×3,这个尺寸也是能捕捉上下左右和中间方位的最小尺寸
  • block块之间的卷积层stride固定为1且padding为1使得卷积层之间保持相同的尺寸。maxpooling层的特点是stride = 2,pool size尺寸2×2。 网络中全连接层的配置相同,都会通过ReLU进行修正。

为什么这里使用了卷积核为3×3叠加卷积层的block,而不是直接用单层的7×7的卷积层?

  • 首先,3个卷积层叠加,带来了3次relu的非线性校正,比使用一个relu的单层layer更具有识别力;
  • 第二,降低了参数量,7×7×C×C 比3×3×C×C的参数量大。作者提到了,使用诸如2014年的Network in Network中的1×1卷积,不改变shape只改变通道数,也可以增加非线性。还提到2014年的GoogLeNet,作者表明:虽然架构不同,不过两者有共同点:1.深度足够深;2.都使用了较小尺寸的filter size用来减少参数量,故其模型效果很好。

如下图所示,两个3×3卷积==一个5×5卷积。
目标检测学习笔记6——VGG学习与论文解读_第7张图片

2.训练过程

使用小批量梯度下降(mini-batch gradient descent)

  • batch设为 256 256 256,动量设为 0.9 0.9 0.9
  • 除最后一层外的全连接层都使用了丢弃率 0.5 0.5 0.5的dropout;
  • learning rate初始化为 0.01 0.01 0.01,权重衰减系数为 5 × 1 0 − 4 5×10^{-4} 5×104;
  • 对于权重层采用了随机初始化,初始化为均值0,方差0.01的正态分布。
  • 训练的图像数据方面,为了增加数据集,和AlexNet一样,这里也采用了随机水平翻转随机RGB色差进行数据扩增。对经过重新缩放的图片随机排序并进行随机剪裁得到固定尺寸大小为224×224的训练图像。

具体方式如下: 这里定义 S S S为经过isotropically-rescaled(宽高等比例缩放,对图像进行成比例处理,即图片不会变形)后的图片的最小边长度。原则上,缩放后的图像中只有 S > = 224 S>=224 S>=224的部分才可以被用来做随机剪裁,进行训练。论文中,将 S S S称为training scale。

图片缩放和随机裁剪 举个例子,这里设training scale S = 224。有三幅经缩放后的图片:A,B,C。尺寸长×宽分别为:A 200×400,B 224×600 C 600×900 则A的最小边200<224,不可以进行裁剪;B、C可以(且对B的任何裁剪范围,都只能在宽600所在的边上移动)

在论文实现中,采用了两种方式来设定S:

  • 固定尺度fix scale
  • 多尺度multi scale
  1. 固定尺度fix scale 训练中评估了两种scale:S = 256和S = 384

  2. 多尺度multi scale 训练中设置了[Smin, Smax]的浮动尺度,范围设为[256,512]。作者认为,对于即使同一类别的物体,其在不同图片上的大小也不尽相同,所以浮动尺度会更好,更接近真实情况

3.实验

图像的最小边被各向同性的缩放成预定义的尺寸,设为Q(我们也将此称为测试尺寸)。我们注意到Q并不一定要与训练尺寸S相同。

①single scale

测试时所用的scale固定。这里把训练scale和测试的scale分别用S和Q表示。当S为固定值时,令Q = S固定;当S为[Smin,Smax]浮动时,Q固定为 = 0.5[Smin + Smax]。 测试发现LRN局部响应归一化并没有带来精度提升,故在A-LRN之后的B~E类VGG网络中,都没有使用。
目标检测学习笔记6——VGG学习与论文解读_第8张图片
结论,Q固定的情况下:
1.变动的S比固定的S准确率高。在训练中,采用浮动尺度效果更好,因为这有助于学习分类目标在不同尺寸下的特征
2.卷积网络越深,损失越小,效果越好。
3.C优于B,表明增加的非线性relu有效
4.D优于C,表明了卷积层3×3对于捕捉空间特征有帮助
5.E深度达到19层后达到了损失的最低点,但是对于其他更大型的数据集来说,可能更深的模型效果更好。
6.B和同类型filter size为5×5的网络进行了对比,发现其top-1错误率比B高7%,表明小尺寸filter效果更好

②multi scale

multi scale表示测试时的scale不固定。 这里当训练时的S固定时,Q取值是{S - 32, S, S+32}这三个值,进行测试过后取平均结果。 当S为[Smin,Smax]浮动时,Q取{Smin, 0.5(Smin+Smax), Smax},测试后取平均。
目标检测学习笔记6——VGG学习与论文解读_第9张图片
结论,Q不固定的情况下:
1.同single scale一样,模型越深,效果越好;
2.同深度下,浮动scale效果好于固定scale。

4.dense evaluation 与multi-crop evaluation两种预测方法的区别以及效果

①multi-crop
即对图像进行多样本的随机裁剪,然后通过网络预测每一个样本的结构,最终对所有结果平均。GoogleNet中使用了很多multi crop的技巧,可以显著提升精度,因为有更精细的采样。
②densely
利用FCN的思想,将原图直接送到网络进行预测,将最后的全连接层改为1x1的卷积,这样最后可以得出一个预测的score map,再对结果求平均。
目标检测学习笔记6——VGG学习与论文解读_第10张图片

参考链接:
https://zhuanlan.zhihu.com/p/107884876
https://blog.csdn.net/qq_42666483/article/details/87627270

你可能感兴趣的:(目标检测,神经网络,机器学习,计算机视觉,网络,卷积)