VGG(2014),3x3卷积的胜利
博客:blog.shinelee.me | 博客园 | CSDN
写在前面
VGG(2014)网络出自paper《Very Deep Convolutional Networks for Large-Scale Image Recognition》,为ILSVRC2014 localization冠军和classification亚军方法(冠军为GoogLeNet),首次提交arXiv时间为2014年9月,后发表在ICLR2015,截止20191011引用量达27612。因为出自牛津大学Visual Geometry Group,所以网络被命名为VGG,根据层数不同,又分为VGG16、VGG19等。
论文的主要贡献:
- 探究了网络深度对性能的影响,通过叠加卷积层来增加深度,性能变好——“Our results yet again confirm the importance of depth in visual representations”。
- 只使用\(3\times 3\)的卷积核,通过多个\(3 \times 3\)卷积层叠加来获得与大卷积核相同的感受野,同时引入更多的非线性,减少了参数。若有\(C\)个channel,3个\(3\times 3\)的卷积层参数量为\(3(3^2C^2)=27C^2\),1个\(7\times 7\)卷积层的参数量为\(7^2C^2=49C^2\),两者的感受野相同。
网络结构
文中列举了配置不同的5个网络,分别命名为A、A-LRN、B、C、D、E,网络结构及参数量如下图所示,
这些网络配置的特点是:
- A-LRN与A相比,仅在第一个卷积层后加入LRN层,A和A-LRN含可学习参数的层数均为11层
- B比A多了2个\(3 \times 3\)卷积层,为13层
- C比B多了3个\(1\times 1\)卷积层,为16层
- D将C的3个\(1\times 1\)卷积层替换为\(3\times 3\)卷积层,仍为16层
- E在D的基础上又增加了3个\(3\times 3\)卷积层,为19层
- 每次maxpool后,feature map尺寸减半,紧随其后的卷积层会将feature map的数量加倍,64→128→256→512
B网络有个特点,每2个\(3\times 3\)卷积层一组,再接maxpool。实际上,在实验中还配置了另一个网络——将B的“each pair of \(3\times 3\) conv”替换为1个\(5\times 5\)卷积层,其性能要比B差7%,所以paper认为小卷积核深网络要比大卷积核浅网络好。
paper中的实验均在上述网络中进行,下面具体看一下。
multi-scale training and testing
在训练阶段,VGG的输入固定为\(224\times 224\),对尺寸不同的图像需要先scale再crop到\(224\times 224\),理论上只需要将图像最短的边scale到大于等于224即可进行crop,paper中设置了2种scale方式,第一种scale到256或384,第二种随机scale到\([256, 512]\)之间——384恰好位于256和512的中间,做了对比实验。
测试阶段,不再进行crop操作,而是采用了Overfeat中的一个技巧,将网络最后的3个全连接层在实现上转化成卷积层,以适应不同尺寸的输入,这个技巧在paper中称之为dense。全连接层的运算方式是输入向量与权重矩阵相乘,当权重矩阵的尺寸确定了,输入向量的长度就不可改变了,而卷积的运算方式是权重在输入上滑动内积,所以只需要输入的尺寸大于kernel的窗口即可。具体地,如果输入恰好为\(224\times 224\),经历过5次maxpool后,feature map尺寸变为\(7 \times 7\),当输入尺寸大于224时,这个feature map将大于等于\(7\times 7\)。将3个全连接层依次转化为\(7\times 7\)卷积和2个\(1\times 1\)卷积,这种转化并不改变权重,只是实现方式上的变化,此时整个网络为全卷积网络。如果输入图像大于\(224\times 224\),网络最后输出的class score map将大于\(1000 \times 1\),为了得到固定长度为1000的class score vetor,只需将其进行spatially average(sum-pooled),然后再softmax。更多可以参见Converting Fully-Connected Layers to Convolutional Layers的解释。
预测阶段的multi scale,即将输入图像做不同scale,分别输入网络,对预测结果取平均。
下图分别为single scale和mutiple scale测试的结果,测试库为ILSVRC-2012 dataset,
上面的对比实验,可得出以下结论:
- 随着深度增加,性能变好
- 与A相比,A-LRN性能没有改善,LRN用途不大
- 无论是training还是testing,multiple scale均能改善性能,两者结合使用效果更佳
- 在当前数据集和网络结构配置上,VGG16(D)和VGG19(E)性能基本一样,接近饱和
对于multi scale对性能的改善,想来也是合理的,因为图像中目标的尺寸并不确定,有大有小,在训练阶段通过scale jittering来增广数据,可让网络在一定程度上cover这种变化,而在预测阶段,multi scale可以看成在输入数据上做的集成学习,亦是提升性能的常规操作。
其他有意思的点
论文中还有一些其他有意思的点,简单总结如下,
- 为了网络能正常收敛,权重的初始化很重要,原来是先训练浅层网络A,然后用A的权重初始化后面深层网络前4个卷积层和最后3个全连接层,其他层从高斯分布中随机初始化。在paper submission后发现,直接采用Understanding the difficulty of training deep feedforward neural networks中的初始化方法就可以,即Xavier方法。
- paper中评论,因为A-LRN中的Local Response Normalisation(LRN)没有效果,还增加了内存使用和计算量,所以后面的BCDE网络就不用了(微笑)。
- 在ILSVRC-2014 challenge中,VGG提交的是7模型融合结果,提交后他们测试2模型的融合结果要更好,top1 val好1%,top5 val好0.5%,不过是在multi-scale traing、multi-crop和dense一起加成下取得的结果。
- VGG (1 net, multi-crop & dense eval) 单网络比GoogLeNet单网络的性能要好约1%。
- 2014年,ImageNet竞赛Top5错误率首次进入0~10%区间。
以上。
参考
- arXiv: Very Deep Convolutional Networks for Large-Scale Image Recognition
- Large Scale Visual Recognition Challenge 2014 (ILSVRC2014)
- Review: VGGNet — 1st Runner-Up (Image Classification), Winner (Localization) in ILSVRC 2014
VGG(2014),3x3卷积的胜利的更多相关文章
- 【深度学习系列】用PaddlePaddle和Tensorflow实现经典CNN网络Vgg
上周我们讲了经典CNN网络AlexNet对图像分类的效果,2014年,在AlexNet出来的两年后,牛津大学提出了Vgg网络,并在ILSVRC 2014中的classification项目的比赛中取得 ...
- 利用卷积神经网络(VGG19)实现火灾分类(附tensorflow代码及训练集)
源码地址 https://github.com/stephen-v/tensorflow_vgg_classify 1. VGG介绍 1.1. VGG模型结构 1.2. VGG19架构 2. 用Ten ...
- 从LeNet到SENet——卷积神经网络回顾
从LeNet到SENet——卷积神经网络回顾 从 1998 年经典的 LeNet,到 2012 年历史性的 AlexNet,之后深度学习进入了蓬勃发展阶段,百花齐放,大放异彩,出现了各式各样的不同网络 ...
- CNN Architectures(AlexNet,VGG,GoogleNet,ResNet,DenseNet)
AlexNet (2012) The network had a very similar architecture as LeNet by Yann LeCun et al but was deep ...
- 论文笔记:CNN经典结构1(AlexNet,ZFNet,OverFeat,VGG,GoogleNet,ResNet)
前言 本文主要介绍2012-2015年的一些经典CNN结构,从AlexNet,ZFNet,OverFeat到VGG,GoogleNetv1-v4,ResNetv1-v2. 在论文笔记:CNN经典结构2 ...
- 关于VGG网络的介绍
本博客参考作者链接:https://zhuanlan.zhihu.com/p/41423739 前言: VGG是Oxford的Visual Geometry Group的组提出的(大家应该能看出VGG ...
- CNN-3: VGGNet 卷积神经网络模型
1.VGGNet 模型简介 VGG Net由牛津大学的视觉几何组(Visual Geometry Group)和 Google DeepMind公司的研究员一起研发的的深度卷积神经网络,在 ILSVR ...
- CNN-4: GoogLeNet 卷积神经网络模型
1.GoogLeNet 模型简介 GoogLeNet 是2014年Christian Szegedy提出的一种全新的深度学习结构,该模型获得了ImageNet挑战赛的冠军. 2.GoogLeNet 模 ...
- VGG Net 论文细读
论文地址:<Very Deep Convolutional Networks for Large-Scale Image Recognition> 一.背景 LSVRC:大规模图像识别挑战 ...
随机推荐
- powershell6,7新特性
powershell 6,7的新特性.1每个特性都注明了版本号,从这个版本开始,才支持这个特性.2欢迎挑毛病,让我更完善帖子.3大都是ps6的新特性.ps7刚刚开始开发,新特性也只有一点点. ...
- 【入门】广电行业DNS、DHCP解决方案详解(三)——DNS部署架构及案
[入门]广电行业DNS.DHCP解决方案详解(三)——DNS部署架构及案 DNS系统部署架构 宽带业务DNS架构 互动业务DNS架构 案例介绍 案例一 案例二 本篇我们将先介绍DNS系统部署架构体系, ...
- mysql之explain详解
mysql之explain详解 mysql之explain各个字段的详细意思: 字段 含义 select_type 分为简单(simple)和复杂 type all : 即全表扫描 index : 按 ...
- lambda表达式不同对象根据对象某个属性去重
1.有时候有两个list对象,我们想要去重,比如: List<User> userList和List<Person>personList 想通过User的id和Person的i ...
- Mysql高手系列 - 第9篇:详解分组查询,mysql分组有大坑!
这是Mysql系列第9篇. 环境:mysql5.7.25,cmd命令中进行演示. 本篇内容 分组查询语法 聚合函数 单字段分组 多字段分组 分组前筛选数据 分组后筛选数据 where和having的区 ...
- 一篇RPO漏洞挖掘文章翻译加深理解。
这是我第一次尝试翻译一篇漏洞挖掘文章,翻译它也是为了加深理解它.这是一篇很有意思的漏洞挖掘文章. 前几天在看fd的博客,偶然看到了这篇文章,虽然有点老了.但是思路真的牛皮.我决定花费时间和精力研究它们 ...
- SpringBoot整合Elasticsearch详细步骤以及代码示例(附源码)
准备工作 环境准备 JAVA版本 java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121 ...
- 查看 Linux 系统版本信息
博客地址:http://www.moonxy.com 一.前言 Linux 下如何查看内核信息.发行版信息,系统位数.CPU 信息等等,Windows 下我们可以通过各种图形化软件来查看,但是对于 L ...
- Linux 中 Xampp 的 https 安全证书配置
博客地址:http://www.moonxy.com 一.前言 HTTP 协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的 HTTP 的 ...
- ASP.NET Core 2.2 : 二十三. 深入聊一聊配置的内部处理机制
上一章介绍了配置的多种数据源被注册.加载和获取的过程,本节看一下这个过程系统是如何实现的.(ASP.NET Core 系列目录) 一.数据源的注册 在上一节介绍的数据源设置中,appsettings. ...