本文简单总结了以下三种比赛常用backbone(pytorch实现代码):
- GoogLeNet
- Resnet
- mobilenet
GoogLenet(Inception系列)
motivation: 保持网络结构的稀疏性的同时,又能利用密集矩阵的高计算性能。
特点:
- 引入inception module
这里1x1卷积的作用:降维;减小参数;增加非线性。 - 用小卷积核替代大卷积核,后面5x5卷积核也被两个3x3卷积核替代。一方面,在保证感受野不变的情况下,减小了计算参数;另一方面,加入了更多层的非线性,使得判决函数更加具有判决性,并且起到隐式正则化的作用。
Resnet
motivation: Go deeper!
特点:
- 引入residual module(skip connection)
Resnet18、34、50、101、152代码实现。
Resnet全家桶:
- ResNeXt
特点: 借鉴了Xception的 “split-transform-merge” 思想,重复大法好。 - Se-Resnet
motivation:attention is all need!
特点: 引入SE module。attention机制,对每一层的feature map赋予权重,权重由网络通过loss自学习。 - Densenet
特点:特征复用;参数量减少(dense block每层输出的feature map个数少);缓解了梯度消失和模型退化的问题。
Densenet代码实现。
MobileNet
特点: depthwise separable convolutions的应用保证精度的同时,减少了模型参数。
简单解释一下depthwise separable convolutions:假设输入的feature map有C1层,先对每一层先进行3x3的卷积,得到新的C1层的feature map,对新的feature map进行1x1卷积,得到输出的C2层feature map。所以整个过程参数为:3x3xC1+1x1xC1xC2。
Mobilenet代码实现。