2014年,牛津大学计算机视觉集团(Visual Geometry Group )与谷歌深度卷积神经网络(Google DeepMind )的研究员一起开发了新的深度卷积神经网络) VGGNet,ILS VRVR
VGGNet探索了卷积神经网络的深度与其性能的关系,成功构建了16~19层深度的卷积神经网络,增加网络的深度在一定程度上影响了网络的最终性能,在大幅降低误码率的同时, 迄今为止,VGG被用于提取图像的特征。
VGGNet可以看成是深版本的AlexNet,都是由卷积层、全连接层两大部分组成的。 卷积神经网络的技术原理,AlexNet在这篇博客的上一篇文章中详细介绍了,有兴趣的人请打开链接看看。 (大话卷积神经网络,大话CNN经典模型: AlexNet )。
一、VGG的特点
我们先来看看VGG的结构图
1、简单的结构
VGG由5层卷积层、3层全连接层、softmax输出层构成,层与层间由max-pooling (最大化池)划分,所有隐藏层的激活单元均采用了ReLU函数。
2、小卷积核和多卷积子层
VGG通过使用多个小卷积核(3×3 )的卷积层代替卷积核的大卷积层,一方面减少了参数,另一方面相当于进行了更多的非线性映射,提高了网络的拟合/表达能力,
小卷积核是VGG的重要特征之一。 虽然VGG模仿了AlexNet的网络结构,但是AlexNet没有采用7×7那样比较大的卷积核尺寸,而是通过减小卷积核的尺寸(3×3 )、增加卷积子层数来达到同样的性能(VGG )
VGG的作者认为,由两个3×3的卷积栈得到的感觉野的大小相当于5×5的卷积; 3×3卷积得到的感觉野相当于7×7的卷积。 这样可以增加非线性映射,并适当减少参数。 例如,7×7有49个参数,3×3有27个参数,如下图所示。
3、小池化核
与AlexNet的3×3池化核相比,VGG均采用了2×2池化核。
4、频道数多
VGG网络一层的频道数为64,每后一层增加一倍,最多为512个频道,频道数增加,可以提取更多的信息。
5、层数更深,特征图更广
由于卷积核集中在通道数的扩大上,池化集中在宽度和高度的缩小上,模型体系结构上的深度和宽度在扩大的同时,抑制了计算量的增长规模。
6、全连接卷积(测试阶段) )
这也是VGG的特征之一,在网络测试阶段将训练阶段的三个全部连接替换为三个卷积,测试得到的全部卷网络没有全部连接的限制,因此在测试阶段能够接收任意宽度或高度的输入是重要的。
如本节第一幅图所示,输入图像为224x224x3。 如果以下三层都是全连接,在测试阶段,测试图像必须全部放大缩小到224x224x3,才能满足下一个全连接层输入数的要求,测试工作的开展很不方便。
另一方面,对于“全连接卷积”,置换过程如下。
例如,如果7x7x512层要与4096个神经元层完全连接,则对7x7x512层要置换成通道数为4096、卷积核为1×1的卷积。
这个“全连接卷积”的想法是VGG的作者参考了OverFeat的工作想法,例如下图是OverFeat将全连接转换为卷积后,可以以任意分辨率(整个图)计算卷积,因此需要重新缩放原图
二、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,表示使用3×3的卷积核,通道数为128。为了简洁起见,在表格中不显示ReLU激活功能。
其中,网络结构D就是著名的VGG16,网络结构E就是著名的VGG19。
以网络结构D(VGG16)为例,介绍其处理过程如下,请对比上面的表格和下方这张图,留意图中的数字变化,有助于理解VGG16的处理过程:
1、输入224x224x3的图片,经64个3×3的卷积核作两次卷积+ReLU,卷积后的尺寸变为224x224x64
2、作max pooling(最大化池化),池化单元尺寸为2×2(效果为图像尺寸减半),池化后的尺寸变为112x112x64
3、经128个3×3的卷积核作两次卷积+ReLU,尺寸变为112x112x128
4、作2×2的max pooling池化,尺寸变为56x56x128
5、经256个3×3的卷积核作三次卷积+ReLU,尺寸变为56x56x256
6、作2×2的max pooling池化,尺寸变为28x28x256
7、经512个3×3的卷积核作三次卷积+ReLU,尺寸变为28x28x512
8、作2×2的max pooling池化,尺寸变为14x14x512
9、经512个3×3的卷积核作三次卷积+ReLU,尺寸变为14x14x512
10、作2×2的max pooling池化,尺寸变为7x7x512
11、与两层1x1x4096,一层1x1x1000进行全连接+ReLU(共三层)
12、通过softmax输出1000个预测结果
以上就是VGG16(网络结构D)各层的处理过程,A、A-LRN、B、C、E其它网络结构的处理过程也是类似,执行过程如下(以VGG16为例):
从上面的过程可以看出VGG网络结构还是挺简洁的,都是由小卷积核、小池化核、ReLU组合而成。其简化图如下(以VGG16为例):
A、A-LRN、B、C、D、E这6种网络结构的深度虽然从11层增加至19层,但参数量变化不大,这是由于基本上都是采用了小卷积核(3×3,只有9个参数),这6种结构的参数数量(百万级)并未发生太大变化,这是因为在网络中,参数主要集中在全连接层。
经作者对A、A-LRN、B、C、D、E这6种网络结构进行单尺度的评估,错误率结果如下:
从上表可以看出:
1、LRN层无性能增益(A-LRN)
VGG作者通过网络A-LRN发现,AlexNet曾经用到的LRN层(local response normalization,局部响应归一化)并没有带来性能的提升,因此在其它组的网络中均没再出现LRN层。
2、随着深度增加,分类性能逐渐提高(A、B、C、D、E)
从11层的A到19层的E,网络深度增加对top1和top5的错误率下降很明显。
3、多个小卷积核比单个大卷积核性能好(B)
VGG作者做了实验用B和自己一个不在实验组里的较浅网络比较,较浅网络用conv5x5来代替B的两个conv3x3,结果显示多个小卷积核比单个大卷积核效果要好。
最后进行个小结:
1、通过增加深度能有效地提升性能;
2、最佳模型:VGG16,从头到尾只有3×3卷积与2×2池化,简洁优美;
3、卷积可代替全连接,可适应各种尺寸的图片
墙裂建议
2014年,K. Simonyan等人发表了关于VGGNet的经典论文《Very Deep Convolutional Networks for Large-Scale Image Recognition》(基于甚深层卷积网络的大规模图像识别),在该论文中对VGG的思想、测试情况进行了详细介绍,建议阅读这篇论文加深了解。
K码农提供了很多不同领域技术,包含人工智能,android,ios ,前端,后端,大数据,云计算,区块链,物联网等大量的技术:http://kmanong.top