文献精读——(第八篇)MobileNet V1与V2

一、文献梳理

1、文献背景

现有的大部分网络模型,都可以通过使用更深的网络结构,更多的训练参数,更多的计算资源来获得更高的精确度,但这种网络模型难以在移动端或者嵌入式系统中使用,例如智能手机,车辆自动驾驶导航系统等等。之前的一些模型小型化工作是将焦点放在模型的尺寸上。因此,在小型化方面常用的手段有:

  • 卷积核分解,使用1×N和N×1的卷积核代替N×N的卷积核
  • 使用bottleneck结构,以SqueezeNet为代表
  • 以低精度浮点数保存,例如Deep Compression
  • 冗余卷积核剪枝及哈弗曼编码

2、研究成果

1)模型意义

MobileNet模型在尽量不降低精确度的基础上,尽可能减少计算量以及训练参数数目,目前已经发布了V1和V2两个版本,V2在V1的基础上进行了改良,两者的基本思路是一致的。

2)实验及其结果

  • 任务1(基础网络):MobileNet极大地降低了网络参数数量和计算量,但是相比起经典的基础网络,其精度并未明显的降低。与VGG相比,在ImageNet分类任务上的精度差距较小
  • 任务2(精细分类):在 Stanford Dogs 数据集上训练MobileNet 进行精细分类。结果下图所示,MobileNet 在大大减少计算量和减小模型大小的情况下分类精度接近于InceptionV3。
  • 任务3(大规模地理定位):使用 MobileNet 作为基础网络在相同的数据上重新训练 PlaNet。如下图所示,MobileNet作为基础网络的PlaNet与经典 PlaNet 相比,规模小了很多,性能稍有降低,但比 Im2GPS 各方面更佳。
  • 任务4(人脸属性提取):使用 MobileNet 架构提取一个人脸属性分类器。distillation是通过训练分类器模拟一个更大的模型的输出,而非人工标注标签工作,因此能够从大型(可能是无限大)未标记数据集训练。结合 distillation 的可扩展性和MobileNet 的简约参数化,相比于一个具有7500万超参数和16亿 Mult-Adds 的大型人脸属性分类器,终端系统不仅不需要正则化,而且表现出更好的性能。
  • 任务5(目标检测):在不同而检测框架和输入尺寸设定下,以MobileNet为基础网络的检测框架表现出了不明显逊色于两个基础网络的性能,而且在计算量和模型尺寸方面有较大优势。
  • 任务6(人脸识别):在没有过分损失精度的情况下,运算量大大减少

二、文献核心思想

MobileNet进一步深入的研究了depthwise separable convolutions使用方法后设计出MobileNet,depthwiseseparable convolutions的本质是冗余信息更少的稀疏化表达。在此基础上给出了高效模型设计的两个选择:宽度因子(width multiplier)和分辨率因子(resolutionmultiplier);通过权衡大小、延迟时间以及精度,来构建规模更小、速度更快的MobileNet。Google团队也通过了多样性的实验证明了MobileNet作为高效基础网络的有效性。

三、文献重点

1、Deep-wise卷积

MobileNet使用了一种称之为deep-wise的卷积方式来替代原有的传统3D卷积,减少了卷积核的冗余表达。在计算量和参数数量明显下降之后,卷积网络可以应用在更多的移动端平台。

1)原理

将一个标准的卷积层操作分成两步,第一步进行特征提取,主要影响输入图像的原始尺寸(DepthWise Conv),第二步进行维度变换,主要影响输入图像的通道数(PointWise Conv)。

2)具体操作:

每次只处理一个输入通道的,这一组二维卷积核的数量是和输入通道数相同的。在使用逐个通道卷积处理之后,再使用3D的1*1卷积核来处理之前输出的特征图,将输出通道数变为一个指定的数量。这相当于每个通道得到的特征图罗列在一起,再使用1*1卷积核压缩。相当于用一组2D卷积+一组1*1的3D代替一组3D卷积。

文献精读——(第八篇)MobileNet V1与V2文献精读——(第八篇)MobileNet V1与V2

3)计算量对比

(1)传统卷积核

传统的3D卷积使用一个和输入数据通道数相同的卷积核在逐个通道卷积后求和最后得出一个数值作为结果,在某一层如果使用N个卷积核,这一个卷积层的计算量为

文献精读——(第八篇)MobileNet V1与V2

(2)Deep-wise卷积 (左图加右图)

                           文献精读——(第八篇)MobileNet V1与V2              文献精读——(第八篇)MobileNet V1与V2

(3)对比 

文献精读——(第八篇)MobileNet V1与V2

2、网络结构

1)模块结构

文献精读——(第八篇)MobileNet V1与V2

左边是传统的卷积层操作,右边是DW+PW分解的卷积层操作,注意DW和PW是两步分开的操作,可以算是经过两次卷积,所以输出都要通过一个BatchNorm以及非线性**函数ReLU。完整网络结构如下

2)整体结构

可以看见,第一层依旧是一个传统的卷积层,之后经历了9个DW+PW的卷积层,然后经过平均池池化,经过全连接层,最后经由Softmax分类器,输出概率结果。

文献精读——(第八篇)MobileNet V1与V2

 3)宽度因子和分辨率因子 

尽管标准的MobileNet在计算量和模型尺寸方面具备了很明显的优势,但是,在一些对运行速度或内存有极端要求的场合,还需要更小更快的模型,如何能够在不重新设计模型的情况下,以最小的改动就可以获得更小更快的模型呢?本文中提出的宽度因子(width multiplier)和分辨率因子(resolutionmultiplier)就是解决这些问题的配置参数。

Width Multiple,用于降低输入图像的通道数,将信息压缩到更低维的空间中,这个参数以1.0为基准,参数越小,图像通道数压缩的越小,网络精确度越低,但相对的,计算量和训练参数数目也会更低;

第二个参数是Resolution Multiple,用于缩放图像分辨率,比如将一个的图像,压缩成,这个参数以1.0为基准,参数越小,图像分辨率压缩的越低,网络精确度越低,同样,会换来更低的计算量与训练参数数目。

简单来说,我们可以通过调整超参数,来调整我们的模型,对于更小,计算资源更紧张的移动端,我们下调两个超参数,牺牲一定的准确率,换取非常低的计算量,根据实际需求,调整参数,调整网络模型大小。

           文献精读——(第八篇)MobileNet V1与V2文献精读——(第八篇)MobileNet V1与V2

四、MobileNet V2

1、动机

V1网络存在一个超参数Width Multiple,可以降低通道数,将输入的信息压缩到更低维的空间中,但当这些信息通过一个非线性**函数ReLu的时候,由于负数归零,会损失较多的信息,于是作者将原本接收DW输出作为输入的PW层的ReLU去掉,同时引入了一个“颠倒”的类似深度残差网络的结构。

2、原理

  • Depth-wise convolution之前多了一个1*1的“扩张”层,目的是为了提升通道数,获得更多特征;
  • 最后不采用Relu,而是Linear,目的是防止Relu破坏特征

文献精读——(第八篇)MobileNet V1与V2

2、为什么使用“颠倒”的类似深度残差网络的结构?

因为直接把depth-wise separable convolution应用到 residual block中,会碰到如下问题:

  • DWConv layer层提取得到的特征受限于输入的通道数,若是采用以往的residual block,先“压缩”,再卷积提特征,那么DWConv layer可提取得特征就太少了,因此一开始不“压缩”,MobileNetV2反其道而行,一开始先“扩张”,本文实验“扩张”倍数为6。 通常residual block里面是 “压缩”→“卷积提特征”→“扩张”,MobileNetV2就变成了 “扩张”→“卷积提特征”→ “压缩”,因此称为Inverted residuals
  • 当采用“扩张”→“卷积提特征”→ “压缩”时,在“压缩”之后会碰到一个问题,那就是Relu会破坏特征。

3、为什么这里的Relu会破坏特征呢?

这得从Relu的性质说起,Relu对于负的输入,输出全为零;而本来特征就已经被“压缩”,再经过Relu的话,又要“损失”一部分特征,因此这里不采用Relu,实验结果表明这样做是正确的,这就称为Linear bottlenecks

4、模型

1)具体模块

bottleneck block由三层卷积层组成:PW+DW+PW(Without ReLU),第一个PW对输入信息进行提高维度操作,然后DW在更高的维度进行特征信息提取,之后通过一个PW把维度再降低回来,因为作者认为,较低维度的信息通过ReLU会损失较多,所以第二个进行降维操作的PW是不使用ReLU的,作者提供了具体的bottleneck block结构:

文献精读——(第八篇)MobileNet V1与V2

2)网络结构 

 作者在论文中提到一共用了十九个bottleneck层,但这个图上只有十七层,其余没有问题。可以看见,输入图像首先通过一个普通的卷积层,然后通过十七个bottleneck层,在经过一个普通的卷积层,然后经过平均池层池化,最后经过一个卷积层进行输出,该网络模型中,如果没有特意标注卷积核的尺寸,一律默认为3*3。

文献精读——(第八篇)MobileNet V1与V2

 五、补充

一般带有bn层的结构为:卷积层-bn层-**层(如ReLU)-池化层,合并bn层的思想是将bn层合并到邻近的卷积层,这样可以减少计算量,提升检测速度。合并bn层的原理推导如下:

文献精读——(第八篇)MobileNet V1与V2