Tensorflow实现VGGNet理论部分

VGGNet是由牛津大学计算机视觉组和GoogleDeepMind共同研发的深度卷积神经网络,通过堆叠3x3的小型卷积核和2x2的最大池化层,成功构建了16~19层深的网络。VGGNet在ILSVRC2014比赛中取得了优异成绩,其结构简洁,拓展性强,广泛用于图像特征提取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

VGGNet是牛津大学计算机视觉组和Google DeepMind公司研究员一起研发的深度卷积神经网络。VGGNet探索了卷积神经网络的深度与其性能之间的关系,通过反复堆叠3x3的小型卷积核和2x2的最大池化层,VGGNet成功的构建了16~19层深的卷积神经网络。VGGNet相比于之前state-of-the-art的网络结构,错误率大幅下降,并取得了ILSVRC2014比赛分类项目的第2名和定位项目的第一名。同时VGGNet的拓展性很强,迁移到其他图片数据上的泛化性非常好。VGGNet的结构非常简洁,整个网络都使用了同样大小的卷积核尺寸(3x3)和最大池化尺寸(2x2)。到目前为止,VGGNet依然经常被用来提取图像特征。VGGNet训练后的模型参数在其官方网站上开源了,可用来在domain specific的图像分类任务上进行再训练(相当于提供了非常好的初始化权重),因此被用在了很多地方。

下图1为VGG各级别的网络结构图,图2为每一级别的参数量,从11层的网络到19层的网络都有详尽的性能测试。虽然从A到E每一级网络逐渐变深,但是网络的参数量并没有增长很多,这是因为参数量主要都消耗在最后3个全连接层。前面的卷积部分虽然很深,但消耗的餐数量不大,不过训练比较耗时的部分依然是卷积,因其计算量比较大。这其中的D、E也就是我们常说的VGGNet16和VGGNet19。C很有意思,相比B多了几个1x1的卷积层,1x1卷积的意义主要在于线性变换,而输入通道数和输出通道数不变,没有发生降维。

图1 VGG各级别的网络结构图

图2  VGG各级别的网络参数量

VGGNet拥有5段卷积,每一段内有2~3个卷积层,同时每段尾部会连接一个最大池化层来缩小图片尺寸。每段内的卷积核数量一样,越靠后的段卷积核数量与多:64-128-256-512-512。其中经常出现多个完全一样的3x3的卷积层堆叠在一起的情况,这其实是非常有用的设计。如图3所示,两个3x3的卷积层串联相当于1个5x5的卷积层,即一个像素会和周围5x5的像素产生关联,可以说感受野大小为5x5。而3个3x3的卷积层串联的效果则相当于1个7x7的卷积。除此之外,3个串联的3x3的卷积层拥有比1个7x7的卷积层更少的参数量,只有后者的(3x3x3)/(7x7)=55%。最重要的是,3个3x3的卷积层拥有比1个7x7的卷积层更多的非线性变换(前者可以使用三次ReLU激活函数而后者只有一次),使得CNN对特征的学习能力更强。

图3 两个3x3的卷积层串联相当于1个5x5的卷积层

VGGNet在训练时有一个小技巧,先训练级别A的简单网络,再复用A网络的权重来初始化后面的几个复杂模型,这样训练收敛的速度更快。在与预测时,VGG采用Multi-Scale的方法,将图像scale到一个尺寸Q,并将图片输入卷积网络计算。然后在最后一个卷积层使用滑窗的方式进行分类预测,将不同窗口的分类结果平均,再将不同尺寸Q的结果平均得到最后的结果,这样可以提高图片数据利用率并提升预测准确率。同时在训练中,VGGNet还使用了Multi-Scale的方法做数据增强,将原始图像缩放到不同尺寸S,然后再随机裁切224x224,这样还能增加很多数据量,对于防止模型过拟合有很不错的效果。实践中,作者令S在[256,512]这个区间内取值,使用Multi-Scale获得多个版本的数据,并将多个版本的数据合在一起训练。图4为VGGNet使用Multi-Scale训练时得到的结果,可以看到D和E都可以达到7.5%的错误率。最终提交到ILSVRC2014的版本是使用Single-Scale的6个不同等级的网络与Multi-Scale的D网络的融合,达到了7.3%的错误率。不过比赛结束后作者发现只融合Multi-Scale的D和E可以达到更好地效果,错误率达到7.0%,再使用其他优化策略最终错误率可达到6.8%左右,非常接近同年的冠军Google Inceptin Net。同时,作者在对比各级网络时总结了以下几个观点。

(1)LRN层作用不大

(2)越深的网络效果越好

(3)1x1的卷积也是很有效的,但是没有3x3的卷积好,大一些的卷积核可以学习更大的空间特征。

图4 各级别VGGNet在使用Multi-Scale训练时的top-5错误率

VGGNet训练时使用了4块GeForce GTX Titani GPU并行计算,速度比但块GPU快3.75倍,几乎没有太多性能损耗。但是,每个网络耗时2~3周才可以训练完。因此我们这里不直接使用ImageNet数据训练一个VGGNet,而是构造出VGGNet网络结构,并测评forward(inference)耗时和backward(training)耗时。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值