MobileNets —— v1,v2,v3

原文地址:

1、v1:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

2、v2:MobileNetV2: Inverted Residuals and Linear Bottlenecks

3、v3:Searching for MobileNetV3

 

v1:

为了在各种任务上到达更高的准确率,大多数的网络模型都是朝着更深、更宽的方向发展。但是在一些计算资源有限的移动设备和嵌入式设备上,这种大规模的网络很难得到实际应用。因此本文提出了一种轻量级的网络结构——MobileNets,在尽量减少精度损失的情况下,降低网络的参数量。

在 v1 版本中,主要的创新点:

1、使用 Depthwise Separable Convolution

2、使用两个超参数来均衡调节网络的计算复杂度和精度

一、Depthwise Separable Convolution

Depthwise Separable Convolution 将传统的标准卷积操作分成两个步骤——Depthwise Convolution 和 Pointwise Convolution,以达到减少参数的目的,如下图所示:

其具体内容如下:

对于一幅大小为 D_{F}*D_{F}*M的输入特征图,

1、采用传统的标准卷积,其卷积核如下图(a),

其中卷积核的大小为 D_{K}*D_{K}*MD_{K}*D_{K} 对应卷积核的空间大小(如常见的 3x3),M 对应输入特征图的维度,N 为卷积核的个数(也即输出特征图的维度)。假设输出特征图与输入特征图同空间尺寸(即输出特征图为 D_{F}*D_{F}*N),则这样的一个卷积层其参数量为  D_{F}*D_{F}*N*D_{K}*D_{K}*M(因为输出特征图总共有 D_{F}*D_{F}*N 个点,每个点对应的参数量为 D_{K}*D_{K}*M)。

2、采用 Depthwise Separable Convolution ,所使用到的卷积核如下:

 Depthwise Separable Convolution 分为 depthwise convolution 和 pointwise convolution 两个步骤。对于传进来的一幅特征图 D_{F}*D_{F}*M,首先进行 depthwise convolution,与上面标准卷积不同的是,它对输入特征图的每个通道(channel)都分开进行处理(即处理 MD_{F}*D_{F}*1 ),所以它的卷积核大小为 D_{K}*D_{K}*1,个数为 M 个(对应输入特征图的 M 个通道,输出特征图的通道数和输入特征图的通道数相同),如上面图(b)所示。这一步的参数量为 D_{F}*D_{F}*M*D_{K}*D_{K}(因为输出特征图总共有 D_{F}*D_{F}*M 个点,每个点对应的参数量为 D_{K}*D_{K}*1)。depthwise convolution 带来的后果就是在 channel 维度上的信息不能相互传递(因为卷积是分别在每个 channel 上进行的),因此后面需要接一个 pointwise convolution,来进行信息的交互。 pointwise convolution 本质上就是一个普通的卷积,只不过它的卷积核空间尺寸是 1x1(经常用来给特征图做升维或降维),如上面的图(c)所示。这一步的参数量为 D_{F}*D_{F}*N*M  (因为输出特征图总共有 D_{F}*D_{F}*N 个点,每个点对应的参数量为 1*1*M)。

因此整个 Depthwise Separable Convolution 的参数量相比于标准卷积为:

在作者的实验中,使用  Depthwise Separable Convolution 的模型(MobileNet)准确率略低于使用标准卷积的模型(Conv MobileNet),但参数量却大大减少,如下图:

 

二、使用两个超参数来均衡调节网络的计算复杂度和精度

1、 Width Multiplier: Thinner Models(\alpha):降低特征图的通道数目

对于网络的每一层,将 \alpha\alpha \epsilon (0,1], 乘到其输入特征图和输出特征图的通道数(channels)上,即输入为 D_{F}*D_{F}*\alpha M,输出为 D_{F}*D_{F}*\alpha N,Depthwise Separable Convolution 的参数变为:

2、 Resolution Multiplier: Reduced Representation(\rho):降低特征图的空间分辨率

对于网络的每一层,将 \rho\rho \epsilon (0,1],乘到输入特征图和输出特征图的宽高上,结合上面的 width multiplier ,输入变为\rho D_{F}*\rho D_{F}*\alpha M,Depthwise Separable Convolution 再次变为:

关于 Width Multiplier 和 Resolution Multiplier 对模型准确率和参数量的一些影响如下:

 

 

v2 :

MobileNet v2 中的基本结构块(Inverted residual block)与 v1 中的基本结构块(Depthwise Separable Convolution)的对比,如下图:

如上图所示,v2 中的 Inverted residual block 的改变如下:

1、多了一个 shortcut connections(快捷/跳跃连接),一般结构块都会加上这个,降低训练的难度。

2、在 Dwise 3x3(Depthwise Convolution)前新加了一个 Conv 1x1(Pointwise Convolution),用来升维(channels),具体示意图如下(b):

左边(a)为普通的 Residual block,里面是一个常见的 bottleneck 结构(左右两边特征图的channel维度高,中间特征图的channel维度底,类似于花瓶的瓶口),shortcat 连接的是高维度的特征图;而右边是本文所用的 Inverted residual block,它是左右两边维度底,中间维度高,shortcat 连接的是低纬度的特征图。这与前面恰好相反,所以这是名字里 ‘inverted’ 的由来。

3、最后一个Conv 1x1接的是线性(Linear)激活函数,而不是非线性的Relu6(注:普通relu, y=max(0, x);relu6, y= min(max(0,x), 6),即限制输出最高为6,当使用低精度的设备进行计算时,Relu6 相比于 Relu 的鲁棒性会更好)。作者认为在一个低维空间使用非线性操作会带来信息的损失。

下面是作者实验的一张对比图,左边图(a)表明了最后一层使用 Linear 激活函数(蓝色曲线)比使用 Relu6 激活函数(绿色曲线)的效果好;右边图(b)表明了使用 Shortcut(蓝、绿曲线)比不使用 shortcut(红色曲线)的效果好,以及使用 Inverted residual block(蓝色曲线)的效果比使用 residual block(绿色曲线)的效果好。

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值