VGGNet与GoogLeNet
VGGNet
VGGNet 是由牛津大学著名研究组(Visual Geometry Group)提出
网络亮点:通过堆叠多个3*3的卷积核来代替大尺度卷积核(减少所需参数)
论文中提到,可以通过堆叠两个3x3的卷积核代替5x5的卷积核,堆叠三个3x3的卷积核代替7x7的卷积核,因为都拥有相同的感受野
原文中关于3x3卷积核可以代替7x7卷积核的论述
VGG16
经典的VGG16网络结构
VGG16经常作为一些网络的预训练模型或者目标检测网络的backbone,十分重要
一般采用D结构,也就是VGG16,为什么叫VGG16呢,因为这个网络中的卷积层+全连接层一共16个,其中Conv3代表卷积核kernal size为3,stride为1,padding为1,这样保证卷积层输出的Feature map尺寸不变, Maxpool的kernal size为2,stride为2,保证输出的feature map尺寸缩减为原来的一半
如E结构,就叫做VGG19
GoogLeNet
GoogLeNet在2014年由Google团队提出,斩获当年ImageNet竞赛中Classification Task第一名(VGG是同年第二名)
网络亮点:
1. 引入Inception结构(融入不同尺度的特征信息,即融合不同尺寸的感受野)
2. 使用1x1的卷积核进行降维以及映射处理
3. 添加两个辅助分类器帮助训练
在训练时,这两个分类器的损失会以0.3的比例添加到损失函数上。根据论文的解释,该分支有两个作用:
- 保证较低层提取的特征也有分类物体的能力;
- 具有提供正则化并克服梯度消失问题的能力;
需要注意的是,在测试的时候,这两个softmax分支会被移除。
辅助分类器结构
4. 丢弃了全连接层,使用全局平均池化(GAP),大大减少了网络参数数量
其实最大的亮点就是Inception模块,这里我在整理的时候,发现了一个CNN网络的进化演变过程,放在这里供大家了解一下
Inception模块是GoogLeNet最大的亮点,它由最初的v1版本已经演化到现在的v4版本
Inceptionv1 (test error 6.67% )
Inception module 的提出主要考虑多个不同 size 的卷积核能够增强网络的适应力,paper 中分别使用1x1、3x3、5x5卷积核,同时加入3x3 max pooling。1x1卷积主要起到降维作用,从而减少网络参数
针对Inception module中的Filter concatenation操作其实就是将每一个分支的输出的Feature map 在channel层上进行叠加(相加)
Inceptionv2 (test error 4.8% )
Inceptionv2 提出了Batch Normalization,代替 Dropout 和 LRN,其正则化的效果让大型卷积网络的训练速度加快很多倍,同时收敛后的分类准确率也可以得到大幅提高,同时学习 VGG 使用两个3x3的卷积核代替5x5的卷积核,在降低参数量同时提高网络学习能力;
Inceptionv3 (test error 3.5% )
Inceptionv3引入了 Factorization,将一个较大的二维卷积拆成两个较小的一维卷积,比如将3x3卷积拆成1x3卷积和3x1卷积,这样做的好处是:
- 节约了大量参数,提升了训练速度并减轻了过拟合
- 多层卷积增加了模型的拟合能力
- 非对称卷积核的使用增加了特征的多样性。
- 除了在 Inception Module 中使用分支,还在分支中使用了分支(Network In Network );
Inceptionv4 (test error 3.08% )
Inceptionv4研究了 Inception Module 结合 Residual Connection,即相当于在Inception中加入一条输入到输出的short cut。结合 ResNet 可以极大地加速训练,同时极大提升性能,在构建 Inception-ResNet 网络同时,还设计了一个更深更优化的 Inception v4 模型,能达到相媲美的性能