mobileNet

作者: 寒寒_21b7 | 来源:发表于2018-09-05 12:17 被阅读0次

    MobileNet V1

    1、为什么要设计mobilenet?

    为移动端和嵌入式端深度学习应用设计的网络,使得在cpu上也能达到理想的速度要求。

    2、mobilenet的结构

    image.png

    3、mobilenet网络的特点。

    轻量化
    放弃pooling直接采用stride = 2进行卷积运算

    4、创新点

    1:depthwise separable convolutions


    image.png

    标准卷积:
    图(a):特点是卷积核的通道数等于输入特征图的通道数
    depthwise卷积:
    图(b):特点是卷积核的通道数为1
    1x1卷积:(pointwise卷积)
    本质上就是1x1的卷积核,通道数等于输入特征图的通道数。
    在设计网络是一个depthwise 和1x1卷积以及BN、relu的结构关系如图:


    image.png

    2:用两个超参数来控制网络计算速度与准确度之间的平衡。
    宽度调节参数:
    分辨率参数:

    5、计算量分析

    depthwise separable convolution 计算量分析为:


    image.png

    第一项表示的是DW3x3卷积部分的计算量,第二项是1x1卷积部分的计算量。
    普通卷积计算量为:


    image.png
    两者的比值为(此处省略了宽度超参数和分辨率超参数): image.png

    N是feature maps的通道数,通常很大,一般会大于10,而DkxDk是卷积核的size,一般为9。所以该比值是小于1的数,因此depthwise separable convolution 相比于标准的卷积会减少计算量。


    image.png

    2、mobilenet v2

    1、 为什么要提出mobilenet V2

    为移动端和嵌入式端深度学习应用设计的网络,使得在cpu上也能达到理想的速度要求。是mobilenetV1的升级版。

    2、mobilenetv2 与mobilenetV1 不同点:

    1、引入了shortcut结构(残差网络)
    2、在进行depthwise之前先进行1x1的卷积增加feature map的通道数,实现feature maps的扩张。(inverted residual block,一般的residual block是两头channel多总监featuremap的通道少(沙漏形态)。而inverted residual block是两头通道少,中间feature的通道多(梭子形态))
    3、pointwise结束之后弃用relu激活函数,改用linear激活函数,来防止relu对特征的破坏。

    image.png

    3、扩张feature通道数之后的计算量分析

    在inverted residual block中进行1x1卷积增大通道个数,目的是为了提高效果,但是这样计算量又增加了。这个确实,但是和mobilenet v1相比计算量增加了。如果是和标准卷积相比,由于增大通道数之后还是用的dw和pw,所以参数量和计算量都很小。

    3、自己的感悟

    第一次看mobilenet的时候认为其实就是将标准卷积换成了dw和pw,认为就是强行一损失精度为代价提升速度。但深入了解之后发现有很多细节:
    1、dw卷积并非标准卷积中的单核卷积,因为dw卷积没有让通道之间的数据产生信息交流。
    2、pw卷积接在dw卷积之后使通道之间产生信息的交互。 同时pw卷积将feature嵌入到低维子空间,用更低通道的feature map存储信息。
    3、在使用残差网络时使用 “扩张”-dw卷积-“降维”的结构,扩张的目的是提升网络模型的效果。

    4、关于relu6,其公式为 image.png
    relu6一般在低精度运算中使用,在移动端设备中很受欢迎。和relu相比,relu6的输出被限制在了一个固定区间内。

    相关文章

      网友评论

          本文标题:mobileNet

          本文链接:https://www.haomeiwen.com/subject/ncebwftx.html