轻量化网络结构——MobileNet

《MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications》
  • Google

Google在2017年提出的适用于手机端的神经网络模型

1.主要采用了深度可分离卷积Depthwise separable convolution的卷积方式
达到:1)减少参数数量 2)提升运算速度
Depthwise separable convolution不是MobileNet提出来的,也是借鉴。
Depthwise separable convolution是一个卷积核负责一部分feature map,每个feature map只被一个卷积核卷积。
MobileNet的精华在于卷积方式–Depthwise separable convolution;采用深度可分离卷积会涉及到两个超参数,来减少参数量和计算量。
1)宽度乘数(width multiplier):[减少输入和输出的channels]
2)分辨率乘数(resolution multiplier):[减少输入和输出的feature map大小]

2.深度可分离卷积(Depthwise separable convolution)
将一个标准卷积分成两步:
1)Depthwise convolution(深度卷积),即逐通道的卷积,一个卷积核负责一个通道,一个通道只被一个卷积核滤波。
2)Pointwise convolution(逐点卷积),将Depthwise convolution得到的feature map再串起来,通过一个1x1的卷积来线性结合起来,组成新的feature map。
这里写图片描述
**注:**输出的每一个feature map要包含输入层所有feature map的信息。然而仅采用depthwise convolution 是没有办法做到这一点的,因此需要pointwise convolution的辅助。

2.1 标准卷积
标准的卷积层是将维度为 D F ∗ D F ∗ M D_{F}*D_{F}*M DFDFM的输入层转化为维度是 D G ∗ D G ∗ M D_{G}*D_{G}*M DGDGM
其中:
D F D_{F} DF是输入feature map的长和宽,M是输入的通道数(channels)
D G D_{G} DG是输出feature map的长和宽,N是输出的通道数
假设卷积核filter的大小是 D K ∗ D K D_{K}*D_{K} DKDK,则标准卷积的计算量为:
D K ∗ D K ∗ M ∗ N ∗ D F ∗ D F D_{K}*D_{K}*M*N*D_{F}*D_{F} DKDKMNDFDF
标准卷积,即不管当前pixel有多少channels,卷积之后就是一个channel。

2.2 深度可分离卷积
分为两个步骤:
1)第一步深度卷积:在每一个channel上进行卷积操作,卷积核的大小是 D K ∗ D K ∗ 1 ∗ M D_{K}*D_{K}*1*M DKDK1M,
所以总的计算量是: D K ∗ D K ∗ M ∗ D F ∗ D F D_{K}*D_{K}*M*D_{F}*D_{F} DKDKMDFDF

2)第二步逐点卷积,将其结合起来,卷积核的大小是 1 ∗ 1 ∗ M ∗ N 1*1*M*N 11MN, 所以总的计算量是: M ∗ N ∗ D F ∗ D F M*N*D_{F}*D_{F} MNDFDF

所以和标准卷积相比计算比率为:

MobileNet使用的是3x3的卷积核,所以计算量可以减少8-9倍。

3.神经网络结构
MobileNet共28层,可以发现这里的下采样方式没有采用池化层,而是利用depthwise convolution的时候将步长设置为2,达到下采样的目的。
这里写图片描述

总的结构图:
这里写图片描述

4.宽度乘数(Width Multiplier)
引入超参数α,目的是使模型变瘦
即输入层的channels个数M,变成αM,输出层的channels个数N变成了αN。
所以引入宽度乘数后的计算量是:
这里写图片描述
一般α取(0,1],常取的值是1,0.75,0.5,0.25
大约可以减少参数量和计算量的。

5.分辨率乘数(Resolution Multiplier)
引入超参数ρ,目的是降低图片的分辨率
即作用在输入的feature map上
所以再引入分辨率乘数后总的计算量是:
这里写图片描述
一般输入图片的分辨率是224,192,160,128
大约可以减少计算量ρ的平方。

6.实验结果
这里写图片描述
1.0 MobileNet与GoogLeNet及VGG16做比较,可以发现,相较于GoogLeNet,虽然参数差不多,都是一个量级,但在运算量上却小于GoogLeNet一个量级,这就得益于depthwise convolution。

这里写图片描述
SqueezeNet虽然可以减少内存,但计算量严重大于MobileNet。

MobileNet小结:
核心思想是采用Depthwise separable convolution操作,在相同的权值参数数量的情况下,相较于standard convolution操作,可以减少数倍的计算量,从而达到提升运算速度的目的。

参考:https://blog.csdn.net/u011995719/article/details/79100582


注:博众家之所长,集群英之荟萃。

在这里插入图片描述

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Peanut_范

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值