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

一、引言

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

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

创新点:

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

缺点:

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

二、网络结构

以VGG-16为例,有13个卷积层和3个全连接层。
在这里插入图片描述
在这里插入图片描述

网络特点:

  • 有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,其中D就是VGG-16,E是VGG-19:
在这里插入图片描述
各结构的参数量如下表所示:
在这里插入图片描述
下表是我整理的参数计算过程,可见在FC1层的参数量是最最最多的,整体的参数量也上亿了,十分庞大。
在这里插入图片描述

三、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卷积。
在这里插入图片描述

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网络中,都没有使用。
在这里插入图片描述
结论,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},测试后取平均。
在这里插入图片描述
结论,Q不固定的情况下:
1.同single scale一样,模型越深,效果越好;
2.同深度下,浮动scale效果好于固定scale。

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

①multi-crop
即对图像进行多样本的随机裁剪,然后通过网络预测每一个样本的结构,最终对所有结果平均。GoogleNet中使用了很多multi crop的技巧,可以显著提升精度,因为有更精细的采样。
②densely
利用FCN的思想,将原图直接送到网络进行预测,将最后的全连接层改为1x1的卷积,这样最后可以得出一个预测的score map,再对结果求平均。
在这里插入图片描述

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

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: VGG是一个用于图像分类的深度卷积神经网络,它的主要作用是对图像进行分类。然而,可以使用 VGG 作为目标检测的基础模型,通过在其基础上添加额外的层和结构,使其能够识别并定位图像中的目标物体。这种方法被称为单阶段目标检测方法。另外,也可以将 VGG 用作两阶段目标检测方法中的特征提取器。但是,相对于专门设计的目标检测模型,VGG 的检测性能可能会有所下降。 ### 回答2: VGG模型本身并不是专门用于目标检测的模型,而是用于图像分类任务的深度卷积神经网络模型。然而,我们可以通过一些修改使VGG模型能够用于目标检测。 通常,在目标检测中我们需要对图像中的物体进行定位和分类。VGG模型的最后几层是全连接层,这些层丧失了位置信息,无法直接用于目标检测。因此,我们通常会进行修改,将全连接层替换为卷积层和池化层来保留位置信息。 一种常用的修改方法是在VGG模型的最后几层添加额外的卷积层和池化层,形成多尺度特征图。然后通过将这些特征图输入到分类器和回归器中,进行物体的定位和分类。这样我们就可以使用VGG模型进行目标检测。 另外,还有一种更先进的目标检测方法叫做R-CNN(Region-based Convolutional Neural Networks)。这种方法使用区域提取算法(如Selective Search)生成候选物体区域,然后将这些区域输入到深度卷积神经网络进行分类和定位。VGG模型可以作为R-CNN中的特征提取器来使用。 总之,尽管VGG模型本身不是为目标检测任务而设计的,但我们可以通过适当的修改或结合其他算法,使其在目标检测中发挥其优秀的特征提取能力。 ### 回答3: VGG(Visual Geometry Group)是一种卷积神经网络模型,最初用于图像分类任务。虽然VGG最初并没有被设计用于目标检测,但它可以通过一些变体或者结合其他技术来进行目标检测。 一种常见的方法是通过将VGG与额外的网络层结合起来,使其能够预测目标的位置和类别。例如,可以在VGG的最后几个全连接层之后添加一些额外的卷积层和全连接层,这些层被用来生成目标的坐标框和类别概率值。然后,使用这些信息来对图像中的目标进行定位和识别。 另一种方法是使用VGG作为特征提取器。在目标检测中,通常是将图像输入到模型中,获得中间的卷积层输出,并将这些特征用于后续的目标检测任务。VGG的层次结构使得它能够提取具有不同语义级别的特征,从而有助于目标检测算法更好地理解图像内容。 尽管VGG在图像分类任务中表现出色,但在目标检测任务中,其模型可能过于庞大和计算复杂。因此,为了提高效率和准确性,研究人员已经提出了一些改进的VGG架构,如Faster R-CNN、YOLO和SSD等。这些改进的方法在VGG的基础上进行了调整和优化,用于目标检测,并在目标检测领域取得了很好的效果。 综上所述,虽然VGG最初是为图像分类而设计的,但可以通过一些变体和改进方法将其用于目标检测任务,并且已经取得了一定的成功。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值