MobileNet v2


简介

MobileNet v2 相对于MobileNet v1而言没有新的计算单元的改变,有的只是结构的微调。
和MobileNet V1相比,MobileNet V2主要的改进有两点:

  • Linear Bottlenecks
    也就是去掉了小维度输出层后面的非线性激活层,目的是为了保证模型的表达能力。

  • Inverted Residual block
    该结构和传统residual block中维度先缩减再扩增正好相反,因此shotcut也就变成了连接的是维度缩减后的feature map。

MobileNet v2的基础元素

Linear Bottlenecks

ReLU会对channel数较低的张量造成较大的信息损耗
mobileNetV2使用了线性瓶颈层。原因是,当使用ReLU等激活函数时,会导致信息丢失。如下图所示,低维(2维)的信息嵌入到n维的空间中,并通过随机矩阵T对特征进行变换,之后再加上ReLU激活函数,之后在通过 \(T^{-1}\) 进行反变换。当n=2,3时,会导致比较严重的信息丢失,部分特征重叠到一起了;当n=15到30时,信息丢失程度降低,但是变换矩阵已经是高度非凸的了。

由于非线性层会毁掉一部分信息,因而非常有必要使用线性瓶颈层。且线性瓶颈层包含所有的必要信息,扩张层则是供非线性层丰富信息使用。

  • (a)所示,输入和输出维度不一样,且卷积核直接对输入的红色立方体进行滤波。
  • (b)为可分离卷积,左侧3x3卷积的每个卷积核只对输入的对应层进行滤波,此时特征维度不变;右边的1x1的卷积对特征进行升维或者降维(图中为升维)。
  • (c)中为带线性瓶颈层的可分离卷积,输入通过3x3 depthwise卷积+ReLU6,得到中间相同维度的特征。之后在通过1x1conv+ReLU6,得到降维后的特征(带斜线立方体)。之后在通过1x1卷积(无ReLU)进行升维。
  • (d)中则是维度比较低的特征,先通过1x1conv(无ReLU)升维,而后通过3x3 depthwise卷积+ReLU6保持特征数量不变,再通过1x1conv+ReLU6得到降维后的下一层特征(下一层特征在升维时,无ReLU,因而图中最右边立方体带斜线)。

Inverted residuals

传统的残差块如(a),将高维特征先使用1x1conv降维,然后在使用3x3conv进行滤波,并使用1x1conv进行升维(这些卷积中均包含ReLU),得到输出特征(下一层的输入),并进行element wise的相加。
反转残差块如(b),是将低维特征使用1x1conv升维(不含ReLU),而后使用3x3conv+ReLU对特征进行滤波,并使用1x1conv+ReLU对特征再降维,得到本层特征的输出(即下一层特征的输入,由于下一层的输入在使用1x1conv升维时,无ReLU,因而最右边的立方体带斜线),并进行element wise的相加。

瓶颈层的具体结构如下表所示。输入通过1x1的conv+ReLU层将维度从 \(k\) 维增加到 \(tk\) 维,之后通过3x3conv+ReLU可分离卷积对图像进行降采样(stride>1时),此时特征维度已经为 \(tk\) 维度,最后通过1x1conv(无ReLU)进行降维,维度从 \(tk\) 降低到 \(k’\) 维。

需要注意的是,除了整个模型中的第一个瓶颈层的 \(t=1\) 之外,其他瓶颈层 \(t=6\),即第一个瓶颈层内部并不对特征进行升维。

网络模型

MobileNet V2的基本结构

当stride=1时,才会使用elementwise 的sum将输入和输出特征连接;
stride=2时,无short cut连接输入和输出特征。
MobileNetV2的模型如下图所示,其中t为瓶颈层内部升维的倍数,c为特征的维数,n为该瓶颈层重复的次数,s为瓶颈层第一个conv的步幅。

  • \(t\) 是输入通道的倍增系数(即中间部分的通道数是输入通道数的多少倍)
  • \(n\) 是该模块重复次数
  • \(c\) 是输出通道数
  • \(s\) 是该模块第一次重复时的 stride(后面重复都是 stride 1)

例如,对于该图中 \(56^{2} * 24\) 的那层:

  • 共有3个该瓶颈层,只在第一个瓶颈层使用stride=2``,后两个瓶颈层stride=1
  • 第一个瓶颈层由于输入和输出尺寸不一致,因而无short cut连接,后两个由于stride=1,输入输出特征尺寸一致,会使用short cut将输入和输出特征进行elementwise的sum;
  • 只在第一个瓶颈层最后的1x1conv对特征进行升维,后两个瓶颈层输出维度不变(不要和瓶颈层内部的升维弄混了)。
  • 该层输入特征为56x56x24,第一个瓶颈层输出为28x28x32(特征尺寸降低,特征维度增加,无short cut),第二个、第三个瓶颈层输入和输出均为28x28x32(此时c=32,s=1,有short cut)。

实验

通过 Inverted residual block这个新的结构,可以用较少的运算量得到较高的精度,适用于移动端的需求,在 ImageNet 上的准确率如下所示:

可以说是又小又快又好。另外,应用在目标检测任务上,也能得到很好的效果。

应用在目标检测任务上,基于 MobileNet V2的SSDLite 在 COCO 数据集上超过了 YOLO v2。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM