卷积神经网络之4:VGG结构

VGGNet(Visual Geometry Group)可视化的几何学结构

一.简介

VGGNet是牛津大学计算机视觉组和DeepMind公司共同研发一种深度卷积网络,并且在2014年在ILSVRC比赛上获得了分类项目的第二名和定位项目的第一名。

VGGNet一共有六种不同的网络结构,但是每种结构都有含有5组卷积,每组卷积都使用3x3的卷积核,每组卷积后进行一个2x2最大池化,接下来是三个全连接层.在训练高级别的网络时,可以先训练低级别的网络,用前者获得的权重初始化高级别的网络,可以加速网络的收敛.,在ILSVRC中-2013中表现最好的ZFNet在第一卷积层使用更小的卷积(receptive window size)和更小的步长(stride)。另一种策略是多尺度地在整张图像上密集训练和测试。VGGNet则强调了卷积神经网络设计中另一个重要方面—深度。

 

二.卷积网络的配置

为了公平测试深度带来的性能提升,VGGNet所有层的配置都遵循了同样的原则。

2.1 结构

训练时,输入是大小为224*224的RGB图像,*预处理只有在训练集中的每个像素上减去RGB的均值。

图像经过一系列卷积层处理,在卷积层中使用了非常小的感受野(receptive field):3*3,甚至有的地方使用1*1的卷积,这种1*1的卷积可以被看做是对输入通道(input channel)的线性变换。(同时可以添加非线性,从而获得更丰富的特征)

卷积步长(stride)设置为1个像素,3*3卷积层的填充(padding)设置为1个像素。池化层采用max-pooling,共有5层,在一部分卷积层后,max-pooling的窗口是2*2,步长是2。

一系列卷积层之后跟着全连接层(fully-connected layers)。前两个全连接层均有4096个通道。第三个全连接层有1000个通道,用来分类。所有网络的全连接层配置相同。

所有隐藏层都使用ReLu。VGGNet不使用局部响应标准化(LRN),这种标准化并不能在ILSVRC数据集上提升性能,却导致更多的内存消耗和计算时间。

 A网络(11层)有8个卷积层和3个全连接层,E网络(19层)有16个卷积层和3个全连接层。卷积层宽度(通道数)从64到512,每经过一次池化操作扩大一倍。

2.2讨论

与AlexNet和ZFNet不同,VGGNet在网络中使用很小的卷积。AlexNet和ZFNet在第一个卷积层的卷积分别是11*11 with stride 4和7*7 with stride 2。VGGNet则使用3*3的卷积。

VGG 的细节之 3x3 卷积核

两个连续的3*3的卷积相当于5*5的感受野,三个相当于7*7。使用三个3*3卷积而不是一个7*7的卷积的优势有两点:一,包含三个ReLu层而不是一个,使决策函数更有判别性;二,减少了参数。比如输入输出都是C个通道,使用3*3的3个卷积层需要3(3*3*C*C)=27*C*C,使用7*7的1个卷积层需要7*7*C*C=49C*C。这可看为是对7*7卷积施加一种正则化,使它分解为3个3*3的卷积。将近少了一般的参数量。

例如:两个3x3的卷积层叠加,等价于一个5x5的卷积核的效果,3个3x3的卷积核的叠加相当于一个7x7的卷积核,而且参数更少.大约是7x7卷积核卷积层的(3*3*3)/(7*7)=0.55.而且拥有和7x7卷积核一样的感受视野,三个卷积层的叠加,经过了更多次的非线性变换,对特征的学习能力更强.

VGG 的细节之 1x1 卷积核

堆叠后的 3x3 卷积层可以对比之前的常规网络的基础上,减少参数数量,而加深网络。

但是,如果我们还需要加深网络,怎么办呢?

堆叠更多的的卷积层,但有 2 个选择。

选择 1:继续堆叠 3x3 的卷积层,比如连续堆叠 4 层或者以上。

选择 2:在 3x3 的卷积层后面堆叠一层 1x1 的卷积层。

1x1 卷积核的好处是不改变感受野的情况下,进行升维和降维,同时也加深了网络的深度。

1*1卷积层主要是为了增加决策函数的非线性和增加深度,而不影响卷积层的感受野。虽然1*1的卷积操作是线性的,但是ReLu增加了非线性。同时减少参数。

与他人工作对比:Ciresan et al.(2011)也曾用过小的卷积,但是他的网络没有VGGNet深,而且没有在大规模的ILSVRC数据集上测试。Goodfellow使用深的卷积网络(11层)做街道数字识别,表明增加卷及网络深度可以提高性能。GoogLeNet(ILSVRC-2014分类任务冠军)与VGGNet独立发展起来,同样的是也使用了很深的卷积网络(22层)和小的卷积(5*5,3*3,1*1)。

VGG 的其它细节汇总

大家一般会听说 VGG-16 和 VGG-19 这两个网络,其中 VGG-16 更受欢迎。

16 和 19 对应的是网络中包含权重的层级数,如卷积层和全连接层,大家可以仔细观察文章前面贴的配置图信息。

所有的 VGG 网络中,卷积核的 stride 是 1,padding 是 1.

max-pooling 的滑动窗口大小是 2x2 ,stride 也是 2.
 

三.分类框架

3.1 训练

除了从多尺度的训练图像上采样输入图像外,VGGNet的训练过程与AlexNet类似。

优化方法(optimizer)是含有动量的随机梯度下降SGD+momentum(0.9)。 
批尺寸(batch size)是256. 
正则化(regularization):采用L2正则化,weight decay是5e-4。dropout在前两个全连接层后,p=0.5。

尽管相比于AlexNet网络更深,参数更多,但是我们推测VGGNet在更少的周期内就能收敛,原因有二:一,更大的深度和更小的卷积带来隐式的正则化;二,一些层的预训练。

参数初始化:对于较浅的A网络,参数进行随机初始化,权重w从N(0,0.01)中采样,偏差bias初始化为0。然后,对于较深的网络,先用A网络的参数初始化前四个卷积层和三个全连接层。但是后来发现,不用预训练的参数而直接随机初始化也可以。

为了获得224*224的输入图像,要在每个sgd迭代中对每张重新缩放(rescale)的图像随机裁剪。为了增强数据集,裁剪的图像还要随机水平翻转和RGB色彩偏移。

训练图像

1、固定尺寸,即缩放图像最小边S到256或者384,然后裁剪得到输入数据是224*224,进行训练。 
2、多尺度,即缩放图像最小边到[256,512]之间,然后裁剪训练,该方法有效的考虑了图像中目标大小的不一致,有利于训练。并且考虑到速度原因,本文在单尺度(S=384)的基础上,进行微调得到多尺度模型。

3.2 测试

测试阶段步骤:1,对输入图像各向同性地重缩放到一个预定义的最小图像边的尺寸Q; 2. 网络密集地应用在重缩放后的测试图像上。也就是说全连接层转化为卷积层(第一个全连接层转化为7*7的卷积层,后两个全连接层转化为1*1的卷积层) ,然后将转化后的全连接层应用在整张图像上。结果就是一个类别分数图(class score map),其通道数等于类别数量,依赖于图像尺寸,具有不同的空间分辨率。3. 为了获得固定尺寸的类别分数向量(class score vector),对class score map进行空间平均化处理(sum-pooled)。

测试图像

1、将图像缩放到预定义的最小图像边Q,Q不一定与S相等。 
2、将全连接层转换为卷积层,第一FC层转换到7×7卷积层,最后两个FC层转换到1×1卷积层,已达到任意大小的输入,同时避免重复裁剪带来的时间浪费。 
3、采用FC变换到CONV后,会得到多个输出,本文对多个输出取平均,以及对镜像图像进行处理,取平均,得到最终的结果。

3.3 实现

基于C++ Caffe,进行一些重要修改,在单系统多GPU上训练。 
在装有4个NVIDIA Titan Black GPUs的电脑上,训练一个网络需要2-3周。

四.分类实验

4.1 单一尺度评估

  • 数据集:ILSVRC-2012数据集上实现的图像分类结果。
  • 单尺度测试,Q=S,S∈[S_min,S_max],Q=0.5(S_min+S_max)。 

实验对比结果分析 
1、对比采用LRN后,并未对网络效果进行改善 
2、分类误差随着深度的增加而减小 

3、C比B好,说明增加1*1的非线性卷积,对提高分类效果具有一定作用。 
4、C比D差,说明,增大感受野到3*3具有更好的效果。 
5、19层以上错误率达到饱和,再加深需要更大数据集。 
6、B网络与5*5卷积核对比,利用5*5替换2个3*3卷积,发现3*3具有更好的效果。 
7、训练时的尺寸抖动,具有更好的效果,说明有用啊。

4.2多尺度评估

1.多尺度测试,Q=S−32,S,S+32 ; Q= {Smin,0.5*(Smin+Smax),Smax}

2.相对于单一尺度评估,多尺度评估提高了分类精度。 

3.多尺度抖动优于使用固定最小边S的训练 

 

4.3 多裁剪评估

多裁剪(multi-crop)评估比起密集(dense)评估,效果更好。而且两者具有互补作用,结合两种方式,效果更好

4.4 卷积网络融合

如果结合多个卷积网络的sofamax输出,分类效果会更好。 
在ILSVRC-2014中,我们结合7个网络(表6),实现测试误差7.3%。之后,结合最好的两个模型(D&E)并使用密集评估(dense evaluation),测试误差降低到7.0%,而使用密集评估和多裁剪评估相结合,测试误差为6.8%。最好的单一模型验证误差为7.1%。

4.5 与其他网络对比

与ILSVRC-2012和ILSVRC-2013最好结果相比,VGGNet优势很大。与GoogLeNet对比,虽然7个网络集成效果不如GoogLeNet,但是单一网络测试误差好一些,而且只用2个网络集成效果与GoogLeNet的7网络集成差不多。

五.总结

我们的结果再次证明网络深度在计算机视觉问题中的重要性。而且,我们的网络在不同的任务和数据集上有很多好的泛化能力。

VGG 在深度学习的历史上还是很有意义的,它在当时证明了神经网络更深表现会更好,虽然后来 ResNet 进一步革命了,不过那是后话,最重要的是 VGG 向世人证明了更小的卷积核尺寸的重要性。

六.代码实现

代码可以参考这篇博客:https://blog.csdn.net/u014281392/article/details/75152809

转载自:https://blog.csdn.net/muyiyushan/article/details/62895202

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值