实现代码地址:Github

目录

  • AlexNet
  • VGG
  • Google Inception Net
  • ResNet
  • DenseNet
  • MobileNet
  • Shuffle Net

AlexNet

  • 首次使用CNN组建的深度网络在ImageNet上达到最好效果
  • 它使用Relu 激活函数代替了传统的激活函数(Sigmoid/Tanh)
  • 使用Dropout 解决过拟合问题
  • 计算量较大

VGG

  • VGG使用连续的几个3*3卷积核代替AlexNet中较大的卷积核,减少计算量。
  • VGG Net中采用的卷积核是非常一致的,全都是3*3的filter
  • VGG 分为4-5个block,每个block包含若干个3*3的卷积层和一个2*2的MaxPooling层所以得到的conv4_3是16倍的下采样的feature map
  • -w422

Inception Net

  • 设计了Inception Block,采用了不同尺度的filter,size为1*1,3*3,5*5,获得了不同scale的特征,具有对不同尺度特征的提取能力,而且还通过1*1的卷积层来大大降低运算。
  • 在卷积层结束后,使用全局AveragePooling,避免使用全连接层
  • -w945

ResNet

  • 在VGG网络后,研究人员发现仅仅堆叠越来越多层的CNN 或 全连接层等是无法再提高准确率,主要原因就是梯度消失的问题,因为在多层神经网络中,梯度传到最前面的网络层就非常接近0了,导致前面网络层的参数更新很慢。于是提出ResNet去解决这个梯度消失的问题。
  • ResNet主要是设计了一个ResBlock。ResBlock使用skip connect 跳层连接,使得梯度能够有效地回传,从而参数得以更新,才敢设计比VGG深很多的网络。
  • -w260

DenseNet

  • 设计思路与ResNet非常相似,但实际上一个很大的区别是,它是做多channel的特征的拼接,而ResNet是做求和计算

  • DenseNet主要包含两个模块,DenseBlock和Transition层,每个DenseBlock的内部是将第N层之前的feature map都经过卷积处理到固定shape拼接到第N层,Transition作为缓冲层是将维度进行降低,减少计算量

  • 优点:梯度消失问题得到改善,特征复用,使用了multi-scale的特征,参数少,因为特征图的channel不像之前的那么多

  • 缺点: 耗费显存(concat拼接操作)

  • -w652

MobileNet

  • 解决深度学习网络移动设备上的运行速度问题,提出的高效的网络,在模型大小显著减少的情况下,对准确率不造成太大影响

  • 使用 depthwise separable convolution 代替传统卷积网络。

  • depthwise separable convolution

    • depthwise卷积
      • 对输入的D*D*M的M个通道,每个通道使用一个filter进行卷积,即使用M个卷积核分别对M个通道进行卷积,得到feature mapD*D*M
    • pointwise卷积
      • 对经过上面步骤得到的feature mapD*D*M的每个cell(shape为 1*1*M) 使用1*1*M*N卷积核进行卷积
  • -w342

SqueezeNet

Shuffle Net

NIN(Network In Network)

  • 提出1*1的卷积filter来构建新的卷积单元
    • 1*1的卷积核的优势: 减少运算,加强多通道的特征融合,提高模型非线性变换能力
  • 使用average pooling 来代替最后面的全连接层,大大减少计算量