VGG
BEGIN:
简介:
VGG是由Alex-net发展而来的网络(主要改进为:在第一个卷积层使用更小的filter尺寸和间隔(3*3);在整个图片和multi-scale上训练和测试图片),VGG证明了网络的深度是算法优良性能的关键部分。VGG有两种结构,分别是VGG16和VGG19,两者本质上没有什么区别,只是网络深度不一样。
VGG原理:
VGG16是采用连续的几个3*3的卷积核代替AlexNet中的较大卷积核(11*11,7*7,5*5)。对于给定的感受野(与输出有关的输入图片的局部大小),采用堆积的小卷积核是优于采用大的卷积核,因为多层非线性层可增加网络深度来保证学习更复杂的模式,且代价也较小(参数更少:如3个步长为1的3*3卷积核的一层层叠加作用可看作一个大小为7的感受野,即3个连续3*3卷积相当于一个7*7的卷积,其参数总量为3*(9*C^2),若采用7*7卷积核,参数总量为49*C^2,C指输入和输出的通道数(灰度图通道数为1,彩图通道为3)。显然,27*C^2<49*C^2,即减少了通道数,且3*3卷积核能更好地保持图像性质)。
VGG使用3个3*3卷积核代替7*7卷积核,使用2个3*3卷积核代替5*5卷积核,其主要目的是在保证具有相同感知野的条件下,提升网络的深度,故在一定程度上提升神经网络的效果。
为何能使用2个3*3卷积核代替5*5卷积核:
5*5卷积看作一个小的全连接网络在5*5区域滑动,先用一个3*3的卷积滤波器卷积,然后再用一个全连接层连接这个3*3卷积输出,这个全连接层也可看做一个3*3卷积层,这样就可用两个卷积级联(叠加)起来代替一个5*5卷积,如下图:
3*3卷积的作用(为什么要用3*3卷积核代替):
1)减少了参数数量(上文已分析,此处不做累述)
2)增加决策函数(dicesion function)的非线性(引入了非线性激活函数)
VGG网络结构:
下图为VGG网络的结构(包含VGG16和VGG19)
- VGG16包含了16个隐藏层(13个卷积层和3个全连接层),如图中D列所示
- VGG19包含了19个隐藏层(16个卷积层和3个全连接层),如图中E列所示
VGG的结构非常一致,全部使用3*3卷积核2*2的maxpooling.
ps:如果你想看到更加形象化的VGG网络,可以使用经典卷积神经网络(CNN)结构可视化工具(https://mp.weixin.qq.com/s/gktWxh1p2rR2Jz-A7rs_UQ )来查看高清无码的VGG网络 (https://dgschwend.github.io/netscope/#/preset/vgg-16)。
VGG优缺点:
1、VGG优点
- VGGNet的结构非常简洁,整个网络都使用了相同大小的卷积核尺寸(3*3)和最大池化尺寸(2*2)
- 几个小滤波器(3*3)卷积层的组合比一个大滤波器(5*5或7*7)卷积层好
- 验证了可以通过不断加深网络结构提升性能
2、VGG缺点
- VGG耗费更多计算资源,并且使用了更多参数(3*3卷积不背锅),导致更多的内存占用(140M)。其中绝大多数来自第一个全连接层,但后来有人发现即使去除全连接层对性能也没什么影响,这样就显著降低了参数数量。
参考:
https://www.jianshu.com/p/e0845ecaf7f7
END.