前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习与TensorFlow: VGG论文笔记

深度学习与TensorFlow: VGG论文笔记

作者头像
用户1332428
发布2018-07-30 15:33:48
3950
发布2018-07-30 15:33:48
举报
文章被收录于专栏:人工智能LeadAI人工智能LeadAI

正文共3220个字,11张图,预计阅读时间15分钟。

马毅老师曾说过:”如果你没有看过近30年的经典论文,你是做不出成果的”.现如今深度学习如此火热,一些关键节点发布的文章更应该好好的阅读,因此我想在未来的一段时间内去阅读一些经典的论文,去推敲和分析,并且争取可以使用TensorFlow去复现他.而这篇文章我们将会阅读VGG这篇经典文章,希望和大家交流,如果有理解不到位的地方,也请大家多多指正。

一、VGG的意义

这篇论文的模型的名称”VGG”其实是牛津大学的Oxford Visual Geometry Group

这篇文章起初是以2014年该组参加imageNet的1000类图像分类与定位的比赛的模型为基础,使用该模型后该组获得了2014年分类第二,定位任务第一的好成绩.我们复现该文章的时候,是使用的VGG-16的模型.

论文下载地址:https://arxiv.org/pdf/1409.1556.pdf

二、文章内容

1、摘要

这篇文章主要讨论的是在大规模的数据集的情况下,卷积网络深度对其准确率的影响,纵观整篇文章,我们可以看到,他们的主要贡献是使用了3*3的小型卷积核的网络结构去对逐渐加深的网络进行全面的评估,然后得出的结果表明加深网络到16-19层可以极大地超越之前的网络结构的效果.这些成果是基于2014年的imageNet挑战赛,他获得成绩上文也有提到,并且这个模型的泛化能力也不错,最后公布了VGG-16和VGG-19模型供大家研究。

2、介绍

我们想卷积网络(ConvNets)之所以能够成功,无外乎有两个原因:

1、大型的公共图像数据集的出现,比如ImageNet

2、高性能的计算系统,比如GPU集群

下图是卷积神经网络发展的一些主要网络,而我们今天要聊到的VGG其实是基于LeNet和AlexNet来提出更深的卷积神经网络。

之前人们一直尝试在AlexNet的原始框架上做一些改进,像是在第一个卷积上使用较小的卷积核以及较小的滑动步长,另一种思路就是在全图以及多个尺寸上,更加稠密的进行训练和测试网络。

VGG模型主要关注的是网络的深度,因此文章固定了网络的其他参数,通过增加卷积层来增加网络的深度,事实证明这是可行的,不难发现,文中的每个层都是小的3*3的卷积核。

3、卷积配置

模型为了凸显深度对于模型效果的影响,因此所有的卷积配置相同,上边也提到过,因此在这一个章节,先是介绍卷积网络的通用架构,再去描述其评估的具体细节,最后再和之前的网络进行比较。

a) 架构

训练输入:固定尺寸224*224的RGB图像。

预处理:每个像素值减去训练集上的RGB均值。

卷积核:一系列3*3卷积核堆叠,步长为1,采用padding保持卷积后图像空 间分辨率不变。

空间池化:紧随卷积“堆”的最大池化,为2*2滑动窗口,步长为2。

全连接层:特征提取完成后,接三个全连接层,前两个为4096通道,第三个为1000通道,最后是一个soft-max层,输出概率。

所有隐藏层都用非线性修正ReLu.

b) 详细配置

上图中每列代表不同的网络,这些网络只有深度的不同(层数计算不包含池化层).卷积的通道数量都很少,第一层仅仅64通道,每经过一次最大池化,通道数翻翻,直到到达512通道停止。

图2表示的是每一种模型的参数的数量,从图中我们可以发现,尽管网络加深了,但是权重并没有大幅度的增加,因此参数量主要集中在全连接层。

c) 使用3*3卷积核的意义

两个3*3卷积核相当于一个5*5卷积核的感受域,三个3*3卷积核相当于一个 7*7卷积核的感受域。

优点:三个卷积堆叠具有三个非线性修正层,使模型更具判别性;其次三个 3*3卷积参数量更少,相当于在7*7卷积核上加入了正则化,便于加快训练。

从下图来看,在计算量这里,为了突出小卷积核的优势,拿同conv3x3、conv5x5、conv7x7、conv9x9和conv11x11,在224x224x3的RGB图上(设置pad=1,stride=4,output_channel=96)做卷积,卷积层的参数规模和得到的feature map的大小如下:

4、分类框架

a)训练

训练方法基本与AlexNet一致,除了多尺度训练图像采样方法不一致。 训练采用mini-batch梯度下降法,batch size=256;

采用动量优化算法,momentum=0.9;

采用L2正则化方法,惩罚系数0.00005;

dropout比率设为0.5;

初始学习率为0.001,当验证集准确率不再提高时,学习率衰减为原来的0.1 倍,总共下降三次;

总迭代次数为370K(74epochs);

数据增强采用随机裁剪,水平翻转,RGB颜色变化;

设置训练图片大小的两种方法:

定义S代表经过各向同性缩放的训练图像的最小边。

第一种方法针对单尺寸图像训练,S=256或384,输入图片从中随机裁剪 224*224大小的图片,原则上S可以取任意不小于224的值。

第二种方法是多尺度训练,每张图像单独从[Smin ,Smax ]中随机选取S来进行尺 寸缩放,由于图像中目标物体尺寸不定,因此训练中采用这种方法是有效的,可看作一种尺寸抖动的训练集数据增强。

论文中提到,网络权重的初始化非常重要,由于深度网络梯度的不稳定性, 不合适的初始化会阻碍网络的学习。因此我们先训练浅层网络,再用训练好的浅层网络去初始化深层网络。

b) 测试

测试阶段,对于已训练好的卷积网络和一张输入图像,采用以下方法分类:

首先,图像的最小边被各向同性的缩放到预定尺寸Q;

然后,将原先的全连接层改换成卷积层,在未裁剪的全图像上运用卷积网络, 输出是一个与输入图像尺寸相关的分类得分图,输出通道数与类别数相同;

最后,对分类得分图进行空间平均化,得到固定尺寸的分类得分向量。

我们同样对测试集做数据增强,采用水平翻转,最终取原始图像和翻转图像 的soft-max分类概率的平均值作为最终得分。 由于测试阶段采用全卷积网络,无需对输入图像进行裁剪,相对于多重裁剪效率会更高。但多重裁剪评估和运用全卷积的密集评估是互补的,有助于性能提升。

5、分类实验

a) 单尺寸评估

上图展示了单一测试尺寸下的卷积网络性能

b)多尺寸评估

上图展示了多个测试尺寸上的卷积网络性能

c) 多重裁剪与密集网络评估

上图展示多重裁剪与密集网络对比,并展示两者相融合的效果

d) 卷积模型的融合

这部分探讨不同模型融合的性能,计算多个模型的 soft-max 分类概率的平均 值来对它们的输出进行组合,由于模型的互补性,性能有所提高,这也用于比赛的最佳结果中。示多个卷积网络融合的结果

e) 与当前最好算法的比较

6、结论

VGG这篇论文评估了非常深的卷积网络在大规模图像分类上的性能。结果表明深度有利于分类准确率的提升。附录中展示了模型的泛化能力,再次确认了视觉表达中深度的重要性,并且一个比较重要的思想是卷积可代替全连接。整体参数达1亿4千万,主要在于第一个全连接层,用卷积来代替后,参数量下降且无精度损失,这个的确可以好好琢磨一下。

6、参考资料

1、VGG网络中测试时为什么全链接改成卷积? -

https://www.zhihu.com/question/53420266

2、ILSVRC-2014 presentation

http://www.robots.ox.ac.uk/~karen/pdf/ILSVRC_2014.pdf

3、CS231n笔记

http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture9.pdf

4、深度学习VGG模型核心拆解

https://blog.csdn.net/qq_40027052/article/details/79015827

原文链接:https://www.jianshu.com/p/74cebed0b4f8

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 人工智能LeadAI 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档