本文主要是介绍VGG 模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION》阅读笔记
这篇论文从网络深度方向研究得出这个结论:
“ a deep net with small filters outperforms a shallow net with larger filters.”
实验
论文做了这样一个实验:
从左到右网络整体结构不变,有5个max-pooling层,所以是5阶段卷积特征提取。但是每个阶段用到的卷积层数有所不同:
- A-LRN相比A多了一个LRN层,为了是验证LRN层是否对分类结果有所帮助。
- A,B,D,E 每个阶段卷积层数目依次增加(论文中称这一组卷积层为一个卷积栈),全连接层配置相同。
- C和B相比,C多了 1×1 的卷积层,验证 1×1 卷积层引入的非线性是否能提升分类效果。
- D和C相比,将 1×1 的卷积核替换为 3×3 ,验证卷积核大小对结果的影响。
结果
通过对比实验,结果如下:
LRN并没有对结果造成实质性的提升,因此在VGG-16和VGG-19中去掉了LRN层。
随着卷积层数目的增加,分类错误率逐渐下降。本文中,19层的网络分类效果达到饱和。对于更大的数据集,网络层数可能会更深。
1×1 卷积层引入的非线性确实提升了分类效果。这里说明下, 1×1 卷积层本身是不能引入非线性的,实质上只是做了一个线性变换,非线性来自卷积后的ReLU操作!
- 3×3 的卷积核比 1×1 的卷积核效果更好,这是由于 3×3 的卷积更能捕捉到全局信息。
原因
接着说明下这样设计的原因:
多个 3×3 的卷积组合可以达到更好的效果,因为:
- 两个 3×3 的卷积组合可以达到一个 5×5 的接受域,同理三个 3×3 的卷积组合能达到一个 7×7 的接受域。
- 由于每个卷积层后面都连接一个ReLU层,因此多个 3×3 的卷积层会比一个卷积层引入更强的非线性。
- 虽然卷积层数量增加,但是整体的参数量减少,比如说三个 3×3 的卷积栈,每个卷积层的通道数为C,对比的一个 7×7 的卷积层(通道数也为C),前者参数的数目为 3×(32×C2)=27C2 ,后者为 1×(72×C2)=49C2 。
论文更具体的解释: Very Deep Convolutional Networks for Large-Scale Image Recognition(VGG模型)
这篇关于VGG 模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!