【深度学习】经典卷积神经网络(四)VGG
简介
VGG是Oxford的Visual Geometry Group的组提出的模型结构,分为VGG16和VGG19,证明了增加网络的深度能够在一定程度上影响网络最终的性能。可以发现,其设计落实了ZFNet的很多想法,并获得了ImageNet 2014的亚军。
结构
相对于AlexNet其主要调整有4点,这里分别介绍:
增大深度
卷积核大小
ZFNet中其实已经发现了卷积核不能太大,而VGG干脆降到了最小,即3 × 3,因为1 × 1起不到卷积的作用。主要有如下的变换:
- 7 × 7卷积核替换为3个3 × 3卷积核
- 5 × 5卷积核替换为5个3 × 3卷积核
其等价的证明这里省略。
这样做的主要目的是在保证具有相同感知野的条件下,提升了网络的深度,在一定程度上提升了神经网络的效果。如果从ZFNet的思路出发也能够起到一定降噪的作用。
另外,这样做最终的参数量也更少。
那么3 × 3的好处以及延伸思考有哪些呢?
- 参数量最少
- 感受野也较小,但是可以通过深度提升感受野,某种程度上深度比宽度更重要些
- 参数量降低但是感受野也降低了,需要做一个折中,例如后来的空洞卷积
增大通道数
ZFNet发现网络增大宽度也有更好的效果,VGG也增大了网络的通道数,能够提取更多特征。
Pooling后移
最多能用下采样两倍的Pooling,而不能用4倍的Pooling,并且Pooling尽可能往后放。
除了这些改进,VGG还有其他方面的发现:
- LeNet中的归一化没有效果(现在普遍改用BN)
- 网络初始化十分重要,其使用了Lecun的Xavier初始化
思考
VGG网络在AlexNet基础上又有了完善与提升,但计算资源的消耗也打了很多,比如使用了更多的参数,不过现在有很多预训练模型,可以帮助我们提升训练效率。正如上面提到的这与3 × 3卷积无关,而主要是通道数和全连接层的原因。
这里还是总结一下VGG在CNN设计思路上的提升:
- 增加深度
- 增大宽度(通道数)
- 3 × 3卷积(有很多可以挖掘的地方,例如感受野与参数量)
- Pooling后移
- 初始化的重要性
参考资料
https://zhuanlan.zhihu.com/p/41423739