深度卷积神经网络VGGNET

VGG by lyx

VGG是什么

VGGNet由牛津大学计算机视觉组合和Google DeepMind公司研究员一起研发的深度卷积神经网络。它探索了卷积神经网络的深度和其性能之间的关系,通过反复的堆叠33的小型卷积核和22的最大池化层,成功的构建了16~19层深的卷积神经网络。VGGNet获得了ILSVRC 2014年比赛的亚军和定位项目的冠军,在top5上的错误率为7.5%。目前为止,VGGNet依然被用来提取图像的特征。

站在AlexNet的肩膀上

VGG16相比AlexNet的一个改进是采用连续的几个3x3的卷积核代替AlexNet中的较大卷积核(11x11,7x7,5x5)。对于给定的感受野(与输出有关的输入图片的局部大小),采用堆积的小卷积核优于采用大的卷积核,因为多层非线性层可以增加网络深度来保证学习更复杂的模式,而且代价还比较小(参数更少)。

简单来说,VGGNet全部使用3X3的卷积核和2X2的池化核,通过不断加深网络结构来提升性能。网络层数的增长并不会带来参数量上的爆炸,因为参数量主要集中在最后三个全连接层中。同时,两个3X3卷积层的串联相当于1个5X5的卷积层,3个3X3的卷积层串联相当于1个7X7的卷积层,即3个3X3卷积层的感受野大小相当于1个7X7的卷积层。但是3个3X3的卷积层参数量只有7X7的一半左右,同时前者可以有3个非线性操作,而后者只有1个非线性操作,这样使得前者对于特征的学习能力更强。
使用1X1的卷积层来增加线性变换,输出的通道数量上并没有发生改变。这里提一下1X1卷积层的其他用法,1X1的卷积层常被用来提炼特征,即多通道的特征组合在一起,凝练成较大通道或者较小通道的输出,而每张图片的大小不变。有时1X的卷积神经网络还可以用来替代全连接层。
其他小技巧。VGGNet在训练的时候先训级别A的简单网络,再复用A网络的权重来初始化后面的几个复杂模型,这样收敛速度更快。VGGNet作者总结出LRN层作用不大,越深的网络效果越好,1*1的卷积也是很有效的,但是没有3X3的卷积效果好,因为3X3的网络可以学习到更大的空间特征。

网络结构

VGGNet的网络结构如下图所示。VGGNet包含很多级别的网络,深度从11层到19层不等,比较常用的是VGGNet-16和VGGNet-19。VGGNet把网络分成了5段,每段都把多个3X3的卷积网络串联在一起,每段卷积后面接一个最大池化层,最后面是3个全连接层和一个softmax层。
深度卷积神经网络VGGNET_第1张图片
点击此处查看高清无码的VGGnet
VGGnet

代码实现

Ternsorflow实现VGG

VGG优缺点对比

优点

VGGNet的结构非常简洁,整个网络都使用了同样大小的卷积核尺寸(3x3)和最大池化尺寸(2x2)。

几个小滤波器(3x3)卷积层的组合比一个大滤波器(5x5或7x7)卷积层好:

验证了通过不断加深网络结构可以提升性能。

缺点

VGG耗费更多计算资源,并且使用了更多的参数(这里不是3x3卷积的锅),导致更多的内存占用(140M)。其中绝大多数的参数都是来自于第一个全连接层。
VGG有3个全连接层!!!!

训练及快速测试

训练VGG
快速测试VGG

你可能感兴趣的:(tensorflow,pytorch,机器学习,深度学习,计算机视觉)