马毅老师曾说过:”如果你没有看过近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模型核心拆解
网友评论