大话CNN经典模型:VGGNet

—— 原文发布于本人的微信公众号“大数据与人工智能Lab”(BigdataAILab),欢迎关注。算法

 

 
2014年,牛津大学计算机视觉组(Visual Geometry Group)和Google DeepMind公司的研究员一块儿研发出了新的深度卷积神经网络:VGGNet,并取得了ILSVRC2014比赛分类项目的第二名(第一名是GoogLeNet,也是同年提出的)和定位项目的第一名。
VGGNet探索了卷积神经网络的深度与其性能之间的关系,成功地构筑了16~19层深的卷积神经网络,证实了增长网络的深度可以在必定程度上影响网络最终的性能,使错误率大幅降低,同时拓展性又很强,迁移到其它图片数据上的泛化性也很是好。到目前为止,VGG仍然被用来提取图像特征。
VGGNet能够当作是加深版本的AlexNet,都是由卷积层、全链接层两大部分构成。卷积神经网络技术原理、AlexNet在本博客前面的文章已经有做了详细的介绍,有兴趣的同窗可打开连接看看(大话卷积神经网络大话CNN经典模型:AlexNet)。微信

1、VGG的特色
先看一下VGG的结构图
 
一、结构简洁
VGG由5层卷积层、3层全链接层、softmax输出层构成,层与层之间使用max-pooling(最大化池)分开,全部隐层的激活单元都采用ReLU函数。
二、小卷积核和多卷积子层
VGG使用多个较小卷积核(3x3)的卷积层代替一个卷积核较大的卷积层,一方面能够减小参数,另外一方面至关于进行了更多的非线性映射,能够增长网络的拟合/表达能力。
小卷积核是VGG的一个重要特色,虽然VGG是在模仿AlexNet的网络结构,但没有采用AlexNet中比较大的卷积核尺寸(如7x7),而是经过下降卷积核的大小(3x3),增长卷积子层数来达到一样的性能(VGG:从1到4卷积子层,AlexNet:1子层)。
VGG的做者认为两个3x3的卷积堆叠得到的感觉野大小,至关一个5x5的卷积;而3个3x3卷积的堆叠获取到的感觉野至关于一个7x7的卷积。这样能够增长非线性映射,也能很好地减小参数(例如7x7的参数为49个,而3个3x3的参数为27),以下图所示:
 
三、小池化核
相比AlexNet的3x3的池化核,VGG所有采用2x2的池化核。
四、通道数多
VGG网络第一层的通道数为64,后面每层都进行了翻倍,最多到512个通道,通道数的增长,使得更多的信息能够被提取出来。
五、层数更深、特征图更宽
因为卷积核专一于扩大通道数、池化专一于缩小宽和高,使得模型架构上更深更宽的同时,控制了计算量的增长规模。
六、全链接转卷积(测试阶段)
这也是VGG的一个特色,在网络测试阶段将训练阶段的三个全链接替换为三个卷积,使得测试获得的全卷积网络由于没有全链接的限制,于是能够接收任意宽或高为的输入,这在测试阶段很重要。
如本节第一个图所示,输入图像是224x224x3,若是后面三个层都是全链接,那么在测试阶段就只能将测试的图像所有都要缩放大小到224x224x3,才能符合后面全链接层的输入数量要求,这样就不便于测试工做的开展。
而“全链接转卷积”,替换过程以下:
 
例如7x7x512的层要跟4096个神经元的层作全链接,则替换为对7x7x512的层做通道数为409六、卷积核为1x1的卷积。
这个“全链接转卷积”的思路是VGG做者参考了OverFeat的工做思路,例以下图是OverFeat将全链接换成卷积后,则能够来处理任意分辨率(在整张图)上计算卷积,这就是无需对原图作从新缩放处理的优点。网络

2、VGG的网络结构
下图是来自论文《Very Deep Convolutional Networks for Large-Scale Image Recognition》(基于甚深层卷积网络的大规模图像识别)的VGG网络结构,正是在这篇论文中提出了VGG,以下图:
 
在这篇论文中分别使用了A、A-LRN、B、C、D、E这6种网络结构进行测试,这6种网络结构类似,都是由5层卷积层、3层全链接层组成,其中区别在于每一个卷积层的子层数量不一样,从A至E依次增长(子层数量从1到4),总的网络深度从11层到19层(添加的层以粗体显示),表格中的卷积层参数表示为“conv⟨感觉野大小⟩-通道数⟩”,例如con3-128,表示使用3x3的卷积核,通道数为128。为了简洁起见,在表格中不显示ReLU激活功能。
其中,网络结构D就是著名的VGG16,网络结构E就是著名的VGG19。架构

以网络结构D(VGG16)为例,介绍其处理过程以下,请对比上面的表格和下方这张图,留意图中的数字变化,有助于理解VGG16的处理过程:
 
一、输入224x224x3的图片,经64个3x3的卷积核做两次卷积+ReLU,卷积后的尺寸变为224x224x64
二、做max pooling(最大化池化),池化单元尺寸为2x2(效果为图像尺寸减半),池化后的尺寸变为112x112x64
三、经128个3x3的卷积核做两次卷积+ReLU,尺寸变为112x112x128
四、做2x2的max pooling池化,尺寸变为56x56x128
五、经256个3x3的卷积核做三次卷积+ReLU,尺寸变为56x56x256
六、做2x2的max pooling池化,尺寸变为28x28x256
七、经512个3x3的卷积核做三次卷积+ReLU,尺寸变为28x28x512
八、做2x2的max pooling池化,尺寸变为14x14x512
九、经512个3x3的卷积核做三次卷积+ReLU,尺寸变为14x14x512
十、做2x2的max pooling池化,尺寸变为7x7x512
十一、与两层1x1x4096,一层1x1x1000进行全链接+ReLU(共三层)
十二、经过softmax输出1000个预测结果分布式

以上就是VGG16(网络结构D)各层的处理过程,A、A-LRN、B、C、E其它网络结构的处理过程也是相似,执行过程以下(以VGG16为例):
 
从上面的过程能够看出VGG网络结构仍是挺简洁的,都是由小卷积核、小池化核、ReLU组合而成。其简化图以下(以VGG16为例):函数

A、A-LRN、B、C、D、E这6种网络结构的深度虽然从11层增长至19层,但参数量变化不大,这是因为基本上都是采用了小卷积核(3x3,只有9个参数),这6种结构的参数数量(百万级)并未发生太大变化,这是由于在网络中,参数主要集中在全链接层。
 
经做者对A、A-LRN、B、C、D、E这6种网络结构进行单尺度的评估,错误率结果以下:
 
从上表能够看出:
一、LRN层无性能增益(A-LRN)
VGG做者经过网络A-LRN发现,AlexNet曾经用到的LRN层(local response normalization,局部响应归一化)并无带来性能的提高,所以在其它组的网络中均没再出现LRN层。
二、随着深度增长,分类性能逐渐提升(A、B、C、D、E)
从11层的A到19层的E,网络深度增长对top1和top5的错误率降低很明显。
三、多个小卷积核比单个大卷积核性能好(B)
VGG做者作了实验用B和本身一个不在实验组里的较浅网络比较,较浅网络用conv5x5来代替B的两个conv3x3,结果显示多个小卷积核比单个大卷积核效果要好。oop

最后进行个小结:
一、经过增长深度能有效地提高性能;
二、最佳模型:VGG16,从头至尾只有3x3卷积与2x2池化,简洁优美;
三、卷积可代替全链接,可适应各类尺寸的图片
性能

 

墙裂建议学习

2014年,K. Simonyan等人发表了关于VGGNet的经典论文《Very Deep Convolutional Networks for Large-Scale Image Recognition》(基于甚深层卷积网络的大规模图像识别),在该论文中对VGG的思想、测试状况进行了详细介绍,建议阅读这篇论文加深了解。测试

扫描如下二维码关注本人公众号“大数据与人工智能Lab”(BigdataAILab),而后回复“论文”关键字可在线阅读这篇经典论文的内容。

 

推荐相关阅读