深度学习下海血泪史【2】VGG回顾

0 摘要

   VGG模型(由牛津大学Visual Geometry Group提出)是2014年ILSVRC竞赛的第二名,第一名是GoogLeNet。VGG模型在多个迁移学习任务中的表现要优于GoogLeNet,缺点是其参数量达140M之多,需要更大的存储空间。
   VGGNet 特点

  • 小卷积核。作者将卷积核全部替换为3x3(极少用了1x1)
  • 小池化核。相比AlexNet的3x3的池化核,VGG全部为2x2的池化核
  • 层数更深特征图更宽。基于前两点外,由于卷积核专注于扩大通道数、池化专注于缩小宽和高,使得模型架构上更深更宽的同时,计算量的增加放缓
  • 全连接转卷积。网络测试阶段将训练阶段的三个全连接替换为三个卷积,测试重用训练时的参数,使得测试得到的全卷积网络因为没有全连接的限制,因而可以接收任意宽或高为的输入

1 网络架构

VGG使用两种卷积核
1x1卷积核:降维,增加非线性性(ReLU的效果)
3x3卷积核:多个卷积核叠加,增加空间感受野,减少参数

1.1 小卷积核

   卷积不仅涉及到计算量(卷积核尺寸小的计算量小,由下图可知),还影响到感受野。前者关系到是否方便部署到移动端、是否能满足实时处理、是否易于训练等,后者关系到参数更新、特征图的大小、特征是否提取的足够多、模型的复杂度和参数量等等。
由 【1.2 感受野】可知,可用两层3*3的卷积层替代5*5卷积,层数更多,经历两次ReLU使得决策函数(decision function)的判断力更强,同时减少计算量

1.2 感受野

   作者认为两个3x3的卷积堆叠获得的感受野大小,相当一个5x5的卷积;而3个3x3卷积的堆叠获取到的感受野相当于一个7x7的卷积。

1.3 全连接转卷积

   下图的上半部分是训练阶段,最后三层都是FC。下半部分是测试阶段,最后三层都是CONV。VGG的作者把训练阶段的全连接替换为卷积是参考了OverFeat的工作,OverFeat将全连接换成卷积后,带来可以处理任意分辨率(在整张图)上计算卷积,而无需对原图resize的优势。

1.4 1x1卷积

   VGG在最后的三个阶段都用到了1x1卷积核,选用1x1卷积核的最直接原因是在维度上继承全连接,然而作者首先认为1x1卷积可以增加决策函数(decision function,这里的决策函数我认为就是softmax)的非线性能力,非线性是由激活函数ReLU决定的,本身1x1卷积则是线性映射,即将输入的feature map映射到同样维度的feature map。

2 训练细节

2.1 初始化策略

    对于深度网络来说,网络权值的初始化十分重要。为此,论文中首先训练一个浅层的网络结构A,训练这个浅层的网络时,随机初始化它的权重就足够得到比较好的结果。然后,当训练深层的网络时,前四层卷积层和最后的三个全连接层使用的是学习好的A网络的权重来进行初始化,而其余层则随机初始化。这也就是上一点提到的某些层的预初始化。(随机初始化权重时,使用的是0均值,方差0.01的正态分布;偏置则都初始化为0)。

2.2 训练数据增强

    S是训练图像的最小边。训练尺度
    Q是测试图像的最小边。测试尺度
对原始图片进行等比例缩放,使得S大于224,然后在图片上随机提取224x224窗口,进行训练。

  • 单一尺度训练:固定 S 的大小,对应了单一尺度的训练,训练多个分类器。训练S=256和S=384两个分类器,其中S=384的分类器用S=256的权重进行初始化;
  • 多尺度(Multi-scale)训练(尺度抖动):直接训练一个分类器,每次数据输入的时候,每张图片被重新缩放,缩放的短边S随机从[256,512]中选择一个,也可以认为通过尺度抖动(scale jittering)进行训练集增强。图像中的目标可能具有不同的大小,所以训练时认为这是有用的。

3 实验结论

  • LRN层无性能增益(A和A-LRN)。作者通过网络A和A-LRN发现AlexNet曾经用到的LRN层(local response normalization,LRN是一种跨通道去normalize像素值的方法)没有性能提升,因此在后面的4组网络中均没再出现LRN层。 当然我也感觉没啥用,想到max-pooling比average-pooling效果好,我就感觉这个LRN没啥用,不过如果把LRN改成跨通道的max-normal,我感觉说不定会有性能提升。特征得到retain更明显。
  • 深度增加,分类性能提高(A、B、C、D、E)。从11层的A到19层的E,网络深度增加对top1和top5的error下降很明显,所以作者得出这个结论,但其实除了深度外,其他几个网络宽度等因素也在变化,depth matters的结论不够convincing。
  • conv1x1的非线性变化有作用(C和D)。C和D网络层数相同,但D将C的3个conv3x3换成了conv1x1,性能提升。这点我理解是,跨通道的信息交换/融合,可以产生丰富的特征易于分类器学习。conv1x1相比conv3x3不会去学习local的局部像素信息,专注于跨通道的信息交换/融合,同时为后面全连接层(全连接层相当于global卷积)做准备,使之学习过程更自然。
  • 多小卷积核比单大卷积核性能好(B)。作者做了实验用B和自己一个不在实验组里的较浅网络比较,较浅网络用conv5x5来代替B的两个conv3x3。多个小卷积核比单大卷积核效果好,换句话说当考虑卷积核大小时:depths matters。

4 附图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值