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

马毅老师曾说过:”如果你没有看过近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的大小如下:

3:分类框架

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分类概率的平均值作为最终得分。 由于测试阶段采用全卷积网络,无需对输入图像进行裁剪,相对于多重裁剪效率会更高。但多重裁剪评估和运用全卷积的密集评估是互补的,有助于性能提升。

4:分类实验

a):单尺寸评估

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

b);多尺寸评估

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

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

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

d):卷积模型的融合

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

1:展示多个卷积网络融合的结果

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

5:结论

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

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

机器学习——K-均值算法理论

机器学习(十九) ——K-均值算法理论 (原创内容,转载请注明来源,谢谢) 一、概述 K均值(K-Means)算法,是一种无监督学习(Unsupervisedl...

253100
来自专栏AI研习社

直观理解深度学习卷积部分

近几年随着功能强大的深度学习框架的出现,在深度学习模型中搭建卷积神经网络变得十分容易,甚至只需要一行代码就可以完成。

13820
来自专栏云时之间

通过BP神经网络对于图像压缩的实现

BP神经网络现在来说是一种比较成熟的网络模型了,因为神经网络对于数字图像处理的先天优势,特别是在图像压缩方面更具有先天的优势,因此,我这一段时间在研究神经网络的...

425100
来自专栏CVer

大牛分享 | 基于深度学习的目标检测算法综述(三)

1. Two/One stage算法改进。这部分将主要总结在two/one stage经典网络上改进的系列论文,包括Faster R-CNN、YOLO、SSD等...

28000
来自专栏云时之间

深度学习与神经网络:BP神经网络

BP神经网络现在来说是一种比较成熟的网络模型了,因为神经网络对于数字图像处理的先天优势,特别是在图像压缩方面更具有先天的优势,因此,我这一段时间在研究神经网络的...

49790
来自专栏派树AI

Machine Learning笔记——多变量线性回归

在之前的单变量线性回归问题中,我们是通过房屋的大小来作为预测房屋价格。但是我们知道了很多其他的变量,例如卧室的数量,楼层的数量,房子的年龄等。

11500
来自专栏鸿的学习笔记

分类问题中维度诅咒(上)

在本文中,我们将讨论所谓的“维度的诅咒”,并解释为什么在设计分类器时很重要。在以下部分中,我将提供对这个概念的直观解释。

14810
来自专栏计算机视觉战队

尺度不变人脸检测器(S3FD-Single Shot Scale-invariant Face Detector)

今天讲尺度不变人脸检测前之前,我想讲解下一位热心研究者的问题,可以简单讲解下,希望也可以帮助其他读者,谢谢! ? ? 这样的人脸尺度怎么去实现的,其实很简单,如...

67340
来自专栏机器之心

学界 | CIFAR-10+ImageNet=?CINIC-10!

CINIC-10 可以直接替代 CIFAR-10。由于 CIFAR-10 太小(太简单),而 ImageNet 又太大(太难),所以我们将 CINIC-10 编...

14830
来自专栏机器学习算法与Python学习

直观理解深度学习的卷积操作,超赞!

近几年随着功能强大的深度学习框架的出现,在深度学习模型中搭建卷积神经网络变得十分容易,甚至只需要一行代码就可以完成。

28910

扫码关注云+社区

领取腾讯云代金券