前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度卷积神经网络VGG 学习笔记

深度卷积神经网络VGG 学习笔记

作者头像
Natalia_ljq
发布2020-06-03 10:18:41
6910
发布2020-06-03 10:18:41
举报

介绍

VGGNet是2014年 ImageNet Large-ScaleVisual Recognition Challenge(ILSVRC)竞赛的第二名实现的卷积神经网络,第一名是GoogLeNet(谷歌为了纪念LeNet)。它的主要贡献是解决了网络结构设计的一个重要方面——深度。 至于为什么这个网络叫VGG,是因为Andrew Zisserman是牛津大学Visual Geometry Group(视觉几何组)的,所以叫VGG。

结构

网络的输入图像时224*224RGB的图像,预处理是对于每一个像素减去它们的均值。整体使用的卷积核大小均为3*3,这是表示左/右/上/下/中心这些模式的最小单元。在其中的一层结构使用11的卷积核,相当于输入通道的线性变换。空间池化采用5个池化层max-pooling,大小为2\2。 前面几层是卷积层的堆叠,卷积层的后面加了3个全连接层,前两个大小为4096,最后一个为1000,即1000种类别,最后一层是soft-max。所有隐藏层的激活函数都是ReLU,论文中会介绍好几种网络结构,只有其中一种使用了局部响应归一化Local Response Normalisation (LRN)。这种归一化并没有提高网络的性能,反而增加了内存的消耗和计算时间。

网络结构

表1中主要介绍了从11层的网络A到19层的网络E6中不同的网络结构。 A:和AlexNet类似,使用了8个卷积层和3个全连接层,其中卷积层用的都是33的卷积核。 A-LRN:在第1层卷积的时候使用了局部响应归一化(LRN),实际并没有提高网络的性能。 B:在结构A的基础上,stage1和stage2中分别增加一个33的卷积层,一共是10个卷积层和3个全连接层。 C:在结构B的基础上,stage3,stage4,stage5分别增加一个11的卷积层,一共是13个卷积层和3个全连接层。 D:在结构C的基础上,stage3,stage4,stage5分别增加一个33的卷积层,一共是13个卷积层和3个全连接层。 E:在结构D的基础上,stage3,stage4,stage5分别增加一个3*3的卷积层,一共是16个卷积层和3个全连接层。

各个网络所需的参数所占的内存大小,单位(M),如下:

测试

单尺度评估的实验结果

第一,我们发现使用局部响应归一化的A-LRN在A的基础上性能并没有很大提升,所以在B-E的网络结构中不再使用; 第二,我们发现top-1和top-5的错误率随着神经网络的深度增加而下降。C中使用1 *1的卷积核,增加了额外的非线性,性能比B有所提高;D中33的卷积核比C中1\1的效果好。 最后,在训练时使用scale jittering进行数据增强能有效降低错误率。关于scale jittering的介绍,参考了大牛的讲解,简单来说,就是crop size是固定的,而image size是随机可变的。举例来说,比如把crop size固定在224×224,而image的短边可以按比例缩放到[256, 512]区间的某个随机数值,然后随机偏移裁剪个224×224的图像区域。 数据增强比较常用的有2种方法:一是使用Scale Jittering,VGG和ResNet模型的训练都用了这种方法。二是尺度和长宽比增强变换,最早是Google提出来训练他们的Inception网络的。我们对其进行了改进,提出Supervised Data Augmentation方法。 具体可以参考https://zhuanlan.zhihu.com/p/23249000

多尺度评估的实验结果

测试集同样使用scale jittering,若S为单一值,则 Q = {S − 32,S,S + 32}.若 S ∈ [Smin;Smax] ,则Q = {Smin,0.5(Smin + Smax),Smax}.

结论

本文主要展示了深度对于分类网络的重要性。 简单地对VGG和AlexNet做一个比较: 相同点: 最后3个全连接层的结构相同;都有5个stage,每个stage之间都使用maxpooling 不同点: AlexNet每个stage只含有一个卷积层,且卷积核大小为7*7;VGG每个stage含有2-4个卷积层,卷积核大小为3*3。两个33的卷积层连在一起可视为5\5的filter,三个连在一起可视为7*7的filter,假设有C个通道,那么77的卷积需要77CC=49C2个参数,而3个3*3的只需要3(33CC)=27C2个参数,由此可见,小的filter具有更少的参数,所以可以增大其Channel。 虽然VGG比AlexNet有更多的参数,更深的层次,但是VGG只需要很少的迭代次数就开始收敛,原因如下: (a)深度和小的滤波器尺寸起到了隐式正则化的作用; (b)VGG采用了一些预处理,对结构A全部随机初始化;后面深层的网络用结构A的参数作为前四个卷积层(应该是每个stage中的第一个Conv)和三个全连接层的初始化值,中间层随机初始化。同时,对初始化的层不减小其学习率,使其在学习过程中改变。使用随机初始化的层weights服从均值为0,方差为0.01的正态分布,biases为0.

参考文章链接: https://blog.csdn.net/wcy12341189/article/details/56281618 https://www.jianshu.com/p/9c6d90e4f20e https://blog.csdn.net/Teeyohuang/article/details/75214758

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 结构
  • 测试
    • 单尺度评估的实验结果
      • 多尺度评估的实验结果
      • 结论
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档