GoogLenet、Resnet、Mobilenet总结及pytorch代码实现

本文简单总结了以下三种比赛常用backbone(pytorch实现代码):

  • GoogLeNet
  • Resnet
  • mobilenet

GoogLenet(Inception系列)

motivation: 保持网络结构的稀疏性的同时,又能利用密集矩阵的高计算性能。
特点:

  • 引入inception module
    这里1x1卷积的作用:降维;减小参数;增加非线性。
    GoogLenet、Resnet、Mobilenet总结及pytorch代码实现_第1张图片
  • 用小卷积核替代大卷积核,后面5x5卷积核也被两个3x3卷积核替代。一方面,在保证感受野不变的情况下,减小了计算参数;另一方面,加入了更多层的非线性,使得判决函数更加具有判决性,并且起到隐式正则化的作用。

inception v2 代码实现。

Resnet

motivation: Go deeper!
特点:

  • 引入residual module(skip connection)
    GoogLenet、Resnet、Mobilenet总结及pytorch代码实现_第2张图片
    GoogLenet、Resnet、Mobilenet总结及pytorch代码实现_第3张图片
    Resnet18、34、50、101、152代码实现。

Resnet全家桶:

  • ResNeXt
    特点: 借鉴了Xception的 “split-transform-merge” 思想,重复大法好。
    GoogLenet、Resnet、Mobilenet总结及pytorch代码实现_第4张图片
  • Se-Resnet
    motivation:attention is all need!
    特点: 引入SE moduleattention机制,对每一层的feature map赋予权重,权重由网络通过loss自学习。
    GoogLenet、Resnet、Mobilenet总结及pytorch代码实现_第5张图片
  • Densenet
    特点:特征复用;参数量减少(dense block每层输出的feature map个数少);缓解了梯度消失和模型退化的问题。
    GoogLenet、Resnet、Mobilenet总结及pytorch代码实现_第6张图片
    Densenet代码实现。

MobileNet

特点: depthwise separable convolutions的应用保证精度的同时,减少了模型参数。
简单解释一下depthwise separable convolutions:假设输入的feature map有C1层,先对每一层先进行3x3的卷积,得到新的C1层的feature map,对新的feature map进行1x1卷积,得到输出的C2层feature map。所以整个过程参数为:3x3xC1+1x1xC1xC2
GoogLenet、Resnet、Mobilenet总结及pytorch代码实现_第7张图片
Mobilenet代码实现。

你可能感兴趣的:(深度学习(图像))