MobileNet V1、V2、V3神经网络学习

目录

  • 一、背景
  • 二、MobileNet V1
  • 三、MobileNet V2
  • 四、MobileNet V3

此文章仅作为学习总结

一、背景

    AlexNet、VGG、GoogLeNet以及ResNet网络,它们都是传统卷积神经网络(都是使用的传统卷积层),缺点在于内存需求大、运算量大导致无法在移动设备以及嵌入式设备上运行。而本文要讲的MobileNet网络就是专门为移动端,嵌入式端而设计。

二、MobileNet V1

MobileNet V1的主要亮点为:
  提出了深度可分离卷积(Depthwise Convolution),它将标准卷积分解成深度卷积(DW卷积)以及一个1x1的卷积即逐点卷积(PW卷积),大幅度减少了运算量和参数量
MobileNet V1、V2、V3神经网络学习_第1张图片
MobileNet V1、V2、V3神经网络学习_第2张图片
  使用DW卷积后输出特征矩阵的channel是与输入特征矩阵的channel相等的,如果想改变/自定义输出特征矩阵的channel,那只需要在DW卷积后接上一个PW卷积即可,看下:
MobileNet V1、V2、V3神经网络学习_第3张图片
  其实PW卷积就是普通的卷积而已(只不过卷积核大小为1)。通常DW卷积和PW卷积是放在一起使用的,一起叫做Depthwise Separable Convolution(深度可分卷积)。
MobileNet V1、V2、V3神经网络学习_第4张图片

MobileNet V1的网络结构:
  表中标Conv的表示普通卷积,Conv dw代表DW卷积,s表示步距。在mobilenetv1原论文中,还提出了两个超参数,一个是α一个是β。α参数是一个倍率因子,用来调整卷积核的个数,β是控制输入网络的图像尺寸参数。

MobileNet V1、V2、V3神经网络学习_第5张图片

三、MobileNet V2

MobileNet V2的主要亮点为:

  • 倒残差结构:Inverted Residuals
  • 线性瓶颈结构: Linear Bottlenecks
  • 倒残差结构
      使用原因:原文的解释是高维信息通过ReLU激活函数后丢失的信息更少(注意倒残差结构中基本使用的都是ReLU6激活函数,但是最后一个1x1的卷积层使用的是线性激活函数)。
    MobileNet V1、V2、V3神经网络学习_第6张图片
      需注意:在使用倒残差结构时需要注意下,并不是所有的倒残差结构都有shortcut连接,只有当stride=1且输入特征矩阵与输出特征矩阵shape相同时才有shortcut连接(只有当shape相同时,两个矩阵才能做加法运算,当stride=1时并不能保证输入特征矩阵的channel与输出特征矩阵的channel相同)。
    MobileNet V1、V2、V3神经网络学习_第7张图片
    线性瓶颈结构
      线性瓶颈结构,就是末层卷积使用线性激活的瓶颈结构(将 ReLU 函数替换为线性函数),原因是:ReLU激活函数对低维特征信息造成大量损失

    MobileNet V2的网络结构:
      其中t代表的是扩展因子(倒残差结构中第一个1x1卷积的扩展因子),c代表输出特征矩阵的channel,n代表倒残差结构重复的次数,s代表步距(注意:这里的步距只是针对重复n次的第一层倒残差结构,后面的都默认为1)。
    MobileNet V1、V2、V3神经网络学习_第8张图片

    四、MobileNet V3

    MobileNet V3的主要亮点为:

  • 更新Block(bneck):加入SE模块、更新激活函数
  • 使用NAS搜索参数(Neural Architecture Search)
  • 重新设计耗时层结构:减少第一个卷积层的核数(32->16),更新last-stage
  • bneck结构如下
      NL 代表使用非线性激活函数,并不特指
    MobileNet V1、V2、V3神经网络学习_第9张图片
    SE模块:
      在bottlenet结构中加入了SE结构,并且放在了depthwise filter(DW)之后,如下图。因为SE结构会消耗一定的时间,所以作者在含有SE的结构中,将expansion layer的channel变为原来的1/4,这样作者发现,即提高了精度,同时还没有增加时间消耗。并且SE结构放在了depthwise之后。实质为引入了一个channel级别的注意力机制,例子如下:
    MobileNet V1、V2、V3神经网络学习_第10张图片

    更新激活函数:
      使用h-swish替换swish。swish与h-swish公式如下所示,由于sigmoid的计算耗时较长,特别是在移动端,这些耗时就会比较明显,所以作者使用ReLU6(x+3)/6来近似替代sigmoid,观察下图可以发现,其实相差不大的。
      利用ReLU有几点好处,1.可以在任何软硬件平台进行计算,2.量化的时候,它消除了潜在的精度损失,使用h-swish替换swith,在量化模式下回提高大约15%的效率,另外,h-swish在深层网络中更加明显。
    MobileNet V1、V2、V3神经网络学习_第11张图片

    重新设计耗时层结构:
    (1)减少第一个卷积层的卷积核个数(32—>16),减少卷积核的个数但是准确率没变,计算量反而会降低,检测速度更快

    (2)精简Last Stage

    将延迟时间减少了7毫秒,这是运行时间的11%,并将操作数量减少了3000万MAdds,几乎没有损失准确性。

    MobileNet V1、V2、V3神经网络学习_第12张图片

    MobileNetV3-Large 模型结构

    MobileNet V1、V2、V3神经网络学习_第13张图片

      NBN是不使用bn层的, SE打钩才使用注意力机制, exp size对应倒残差块刚开始1*1卷积输出的深度, out对应倒残差块最后的深度。

你可能感兴趣的:(神经网络,学习,深度学习)