1.前言
我的毕设做的是基于opencv和卷积神经网络的人脸识别项目。在做完这个项目之后,我一直想好好总结一下所学到的关于卷积神经网络的知识。现在趁着有点空闲,随手记录一点以前学过的,或者正在学习的知识点,相当于一个备忘录。
2.卷积神经网络模型概览
2.1LeNet模型结构
2.2 AlexNet
我个人的意见是,这个更深层网络提取更高维度的特征,它是这么个意思:前面的卷积层提取一些浅层的特征,比如纹理,形状(我们输入的是颜色特征),然后中间的卷积层呢,提取的是一些更复杂的特征,这些特征难以描述,就类似于我们中国说看山不是山,看水不是水的境界,只可意会,不可言传。而最后的分类信息,就是最后的看山还是山,看水还是水的境界。
在AlexNet网络中,有以下特点:
- 增加了relu非线性激活函数,增强了模型的非线性表达能力。成为以后卷积层的标配。
- dropout层防止过拟合。成为以后fc层的标配。
- 通过数据增强,来减少过拟合。
- 引入标准化层(Local Response Normalization):通过放大那些对分类贡献较大的神经元,抑制那些对分类贡献较小的神经元,通过局部归一的手段,来达到作用。
当然后来人们通过研究发现,这个LRN层并没有啥太好的作用,所以在后来的网络结构中,它被BN层(批归一化层)取代了。
2.3 ZFNet

ZFNet在AlexNet的基础上做了小小的改进:
- 调整第一层卷积核大小为7*7
- 设置卷积参数stride=2
- 特征分层次体系结构(就是我前面说的三层)
- 深层特征更鲁棒(区分度高,不受图片微小的影响)
- 深层特征收敛更慢
2.4 VGGNet
- 网络深,卷积层多。结构哦更加规整,简单。
- 卷积核都是3* 3的或者1* 1的,且同一层中channel的数量都是相同的。最大池化层全是2*
2。 - 每经过一个pooling层后,channel的数量会乘上2.
也就是说,每次池化之后,Feature Map宽高降低一半,通道数量增加一倍。VGGNet网络层数更多,结构更深,模型参数量更大。
VGGNet的意义:
- 证明了更深的网络,能更好的提取特征。
- 成为了后续很多网络的backbone。
2.5 GoogleNet/Inception v1
2.6 Inception v2/v3
在提出了Inception v1之后,google又提出了Inception v2/v3/v4.在前面介绍视觉感受野的时候,我们曾经说过,一个大的卷积核可以由多个小的卷积核来替代。在v2/v3中,他们有效的利用了这个知识。在Inceptiion v2中,伟大的作者们通过两层3* 3的卷积核代替掉了5* 5的卷积核。而在Inception v3中,更是桑心病狂 别出心裁的用n* 1 + 1* n的卷积核代替了n* n的卷积核。

通过这样的操作,我们能够实现什么样的效果呢?
- 参数量降低,计算量减少。
- 网络变深,网络非线性表达能力更强(因为在每一个卷积层后面都可以增加一个激活层)
要注意的是,在实验中伟大的先行者们发现,并不是拆分都能达到很好的效果。卷积的拆分最好是用在中间的部分,不要在图像的开始就进行这样的拆分。
2.7 ResNet
- 核心单元简单堆叠。
- 跳连结构解决网络梯度消失问题。
- Average Pooling层代替fc层。
- BN层加快网络训练速度和收敛时的稳定性。
- 加大网络深度,提高模型的特征抽取能力。
3.卷积神经网络结构对比

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222559.html原文链接:https://javaforall.net
