当前位置: 代码迷 >> 综合 >> MobileNet v2
  详细解决方案

MobileNet v2

热度:49   发布时间:2024-02-09 04:44:02.0

原创: Lebhoryi@gmail.com
时间: 2020/08/10

文章目录

  • 0x00 Paper
  • 0x01 为了解决什么问题
  • 0x02 提出了哪些创新点
    • 2.1 两个闪闪发光的点
    • 2.2 MobileNet V2 与 V1 之间的相同和不同点
    • 2.3 ResNet 与 MobileNet V2 比对
  • 0x03 网络结构
  • 0x04 参考链接

0x00 Paper

  • Paper: MobileNet v2
  • Code: mobilenet_v2.py

0x01 为了解决什么问题

? 设计更小更快的网络结构。

? 深度卷积(Depthwise Convolution) 本身不能改变特征的通道数,并且通道数越少,在进行非线性激活函数的时候,会丢失更多的信息。

? 上图是作者展示用RELU激活时,当channel越小,丢失的信息越多,当channel越大,丢失的信息越少。当channel为2时,信息都集中在这两个channel中,如果有部分数值小于0就会被RELU激活丢失掉。而如果channel为30,其实信息是分散的,而且具有了冗余,所以通过RELU激活后归于0的值可能并不会影响太多信息的存储。

? 所以作者建议对于channel数很少的那些层做线性激活。当通道数由少变多的时候,用ReLU激活函数,当通道数由多变少的时候,做线性激活。

? bottlenect就表示瓶颈层,通道数由多变少,linear bottleneck表示对channel缩减的层做线性激活。虚线的tensor后进行线性激活。

? a是普通卷积,b是深度分离卷积,c是有bottlenect的分离卷积,d是对bottlenect进行扩张后的分离卷积。同样最后一层虚线的tensor后面是线性激活。

0x02 提出了哪些创新点

2.1 两个闪闪发光的点

  1. Linear Bottlenecks

    对通道数较少的使用线性激活,为了提取更多的特征信息

  2. Inverted residual structure

    a是正常的残差块,通道数先降维再升维,b是倒置的残差块,通道数先升维后降维。前者在特征提取的时候可能会丢失信息(通道数越少特征提取能力越弱),所以作者采用了后者的方法。同样,虚线tensor后面进行的是线性激活。

  3. F L O P s = h ? w ? d ? t ? ( d + k 2 + d ) FLOPs = h* w*d'*t*(d' + k^2+d'')

    h*w为输入的尺寸大小,t是扩展因子,k是卷积核大小,d’ 是输入通道,d’’ 是输出通道

2.2 MobileNet V2 与 V1 之间的相同和不同点

  • 相同点

    都使用了 DSCNN,降低了网络的计算参数,具体详细请看上一篇博客 ? MobileNet V1 复古的直筒子结构

  • 不同点

    MobileNet V1 使用的是DW + PW 的直筒子结构。为什么说是直筒子呢?因为在 DW 的过程中,网络自身无法改变输入和输出的通道数,可以查看第一张图的图b,很形象了。因此如果传入的通道数较少,网络的特征提取能力就相对来说较弱。

    • 第一个不同点:

    ? MobileNet V2 使用的是PW + DW + PW 结构,先升维,拉高通道数,后降维。因此无论传入的通道数是多还是少,都强行按照系数高

    • 第二个不同点:

    ? MobileNet V2 在最后PW 之后,去掉了ReLU 激活函数,也就是使用了线性的Bottleneck。作者认为激活函数在高维空间能够有效的增加非线性,而在低维空间时会破坏特征,不如线性的效果好。

2.3 ResNet 与 MobileNet V2 比对

  • 相同点

    1. 使用了1*1 --> 3*3 --> 1*1 的模式;

    2. 用Shortcut 将输出和输入相加

  • 不同点

    1. ResNet 使用标准卷积提取特征,而 MobileNet 使用 DW 卷积提取特征
    2. ResNet 先降维、卷积、再升维,MobileNet 先升维、DW、再降维

0x03 网络结构

当步长等于2的时候:

此处还有一些问题:

? 1. 上面的bottleneck 总共加起来只有17层,而paper 中论述有19层;

? 2. 还有同学跑出来的MobileNet V2 版本的推理速度比 V1 还慢,有待商榷 (代码未详读)

最终的效果比对:

0x04 参考链接

  • MobileNet V2论文阅读和代码解析
  • MobileNet V2 论文初读
  • 轻量化网络:MobileNet-V2