mobileNet

2018-09-05  本文已影响0人  寒寒_21b7

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的输出被限制在了一个固定区间内。
上一篇下一篇

猜你喜欢

热点阅读