分享

MobileNetsV2

 暖带未来街QAZ 2021-02-08

MobileNets 是一种经典的小型 CNN 网络,主要使用了深度可分离卷积结构 (Depthwise Separable Convolution),具有较小的参数量和计算量,能够很好地用在移动端。本文介绍的 MobileNetsV2 是在 MobileNets 的基础上进行改进的,主要改进点包括 Linear Bottleneck 和 Inverted Residuals。

1.MobileNetsV2

之前的文章《高效的 CNN 模型 MobileNets》介绍了 MobileNets 模型,本文主要介绍 MobileNets 的升级版 MobileNetsV2,出自论文《MobileNetV2: Inverted Residuals and Linear Bottlenecks》。

MobileNets 通过使用 Depthwise Convolution 和 Pointwise Convolution 替换传统的卷积层,从而减少参数量和计算量,而 MobileNetsV2 通过加入 Linear Bottleneck 和 Inverted Residuals 两种机制提升模型的效果。

2.Linear Bottleneck

假设有一个 n 层的深度神经网络,每一层用 Li 表示,Li 的输入是 hi×wi×di 的张量,可以看成是 hi×wi 个像素,每个像素是一个 di 维向量。

对于一张输入图片,经过这 n 层网络可以获取到我们感兴趣的流形 (manifold of interest),也就是可以得到对于任务有益的结构、形态等信息。一般情况下机器学习和流形学习认为高维度的流形可以嵌入到一个低维空间里,也就是说图片像素的 di 维向量编码的信息可以嵌入到低维空间中。这一过程如下图所示,下图左侧是一个 3 维空间中的流形,它可以展开成 2 维空间中的一个平面,即把高维 (3) 的流形嵌入到低维 (2) 的空间中 。

MobileNetsV2

高维流形嵌入到低维空间

正是由于这种观点,不少模型压缩的方法都采用减少维度的方式,利用降维把样本的流形保存在低维空间里,既减少计算量也不会太过影响性能。例如 MobileNetsV1 通过 width multiplier 和resolution multiplier 这两个超参数减少尺寸和通道数。

但是 MobileNetsV2 的作者认为降维后再经过神经网络的激活函数,会不可避免地导致信息丢失。维度越低,经过非线性激活函数后丢失的数据越多,作者用了一个例子展示这一问题,如下图所示。

MobileNetsV2

上面的第一张图是原始的 2 维输入,是一个螺旋花纹 (表示感兴趣的流形)。用一个矩阵 T (2×n矩阵) 将输入嵌入到 n 维空间里,经过 Relu 激活函数,然后再用矩阵 T 的逆矩阵还原回 2 维空间。上面的第 2-6 幅图分别表示 n=2,3,5,15,30 的结果,可以看到嵌入的维度越低,还原之后丢失的信息就越多。

为了让非线性的激活函数不会丢失大量的信息,MobileNetsV2 的作者在 MobileNets 的深度可分离卷积 (Depthwise Separable Convolution) 之前加上一层 Linear Bottleneck,用于扩充输入的通道数量,扩充的系数称为 Expansion factor。如下图所示,图中带斜纹的卷积层是不包含激活函数的,图 a 是传统的卷积层,图 b 是 MobileNetsV1 的卷积层,图 d 是 MobileNetsV2 加入 Linear Bottleneck 的卷积层,可以看到图 d 的第一个卷积层用来提升维度,而最后一个卷积层降低维度,降低维度后不加激活函数。

MobileNetsV2

Linear Bottleneck

3.Inverted Residuals

在 ResNet 中包含 Residual Convolution block,如下图 a 所示,它是两头宽中间窄的,且每个卷积层都包括激活函数,输入和输出之间加上残差连接。MobileNetsV2 加入 Linear Bottleneck 后,residual block 变成图 b 所示,两边窄而中间宽,其中第一个卷积层用线性变换提升维度。MobileNetsV2 把这种结构称为 Inverted Residuals。

MobileNetsV2

Inverted Residuals

4.MobileNetsV2 整体结构

MobileNetsV2

不同网络的结构

上图显示了多种小型 CNN 网络的结构,其中图 b 是 MobileNets 的结构,图 d 是 MobileNetsV2 的结构。可以看到 V2 和 V1 的区别在于:

  • Depthwise Convolution 之前加上了一个 1×1 的卷积操作,用于提升维度。
  • 利用了残差,输入和输出相加。

下表展示了 MobileNetsV2 所有层的信息。

MobileNetsV2

MobileNetsV2 整体结构

下图是不同模型在目标检测任务上的效果,可以看到在相近的参数量时,MobileNetsV2 的效果要好于其他模型。

MobileNetsV2

目标检测实现结果

5.参考文献

MobileNetV2: Inverted Residuals and Linear Bottlenecks

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多