MobileNetV2: Inverted Residuals and Linear Bottlenecks论文解读

梦想与她 提交于 2019-12-04 01:00:03

目录

 

摘要

主要贡献

相关工作

先导内容,预备工作(preliminaries,intuition)

模型结构

实验结果


摘要

作者提出了一种基于倒置残差块(姑且这么翻译吧,inverted residual block),把mobileNetV1改了改,提高了移动端网络的state of the art 表现。作者探讨了这种倒置残差块的作用,使用了expansion ratio;还发现RELU对残差块的不利影响。最后和mobileNetV1一样,在图像分类,分割,检测领域都和一些网络进行了对比。

主要贡献

提出了一种新颖的层结构: inverted residual block with linear bottleneck,这里lineal指的是送入经过的第一个卷积层是没有激活函数的;inverted指的是和传统的残差块相比,输入经过的第一个卷积层得到tensor的channel是输入channels的t倍,t就是expansion ratio。

相关工作

在mobileNetV2之前,有shuffleNet;还有一些引入了强化学习和遗传算法,仅仅降低了参数量,却没降低计算量。还有一个基于connectivity learning 和network pruning的方法来减少模型大小的。然而这些都没有MobileNetV2直接。

先导内容,预备工作(preliminaries,intuition)

  • 作者先是又提了一下深度分离卷积(depthwise convolution),这在mobilenetV1中已经 讲的很清楚了。关于mobileNetV1,请见我的另一篇博文:MobileNetV1
  • 之后作者又谈了一下为啥他们的这种设计在小模型中表现好的依据,这部分内容我觉得很玄学,提到了manifold of interest,以及阐述了为啥RELU在残差块的第一个卷积层有不利作用。

    Figure1是证明ReLU对不同维度输入的信息丢失对比。图表下面的文字介绍了具体的操作过程,显然,当把原始输入维度增加到15或30后再作为ReLU的输入,输出恢复到原始维度后基本不会丢失太多的输入信息;相比之下如果原始输入维度只增加到2或3后再作为ReLU的输入,输出恢复到原始维度后信息丢失较多。因此在MobileNet V2中,执行降维的卷积层后面不会接类似ReLU这样的非线性激活层,也就是linear bottleneck的含义。(this paragraph cites from here)
  • 再往后,就到了重头戏,解释这个inverted结构的设计。其实很简单,回想下一般的residual block,先把输入用1x1的卷积核降维(通道数降低),然后在卷积,再用1x1的卷积核把通道数提上去,再加上最开始的输入。这里的inverted,就是指先用1x1的核增加通道维数,这一层叫做expansion layer ,有一个超参数expansion  ratio t,假设输入通道数为k,expansion layer的输出就是t*k,并且这一层没有RELU。作者认为这样做实现了一个非线性变换。同时也指出这操作要耗费更多内存。

这是一个bottleneck的结构。

模型结构

注意第一个卷积层是传统卷积,并且分别对stride为1和2,构造了两种瓶颈层。从这个结构图中,我们可以看出,这个网络的channels比V1普遍低很多,这也是即便V2更深,参数却比V1小的原因,因为参数集中在pointwise conv部分,而这一部分的参数量取决于channels。

 

 

 

stride为1的结构使用了shortcut,因为输出的尺寸和输入一样,当然就可以相加。

一些细节:

  • 使用Relu6作为激活函数,卷积核全是3x3的,使用dropout和batch normlization。
  • expansion ratio为5-10 的结果是相近的,小网络用小的ratio效果较好,大网络用大的ratio效果较好。这里的小和大,是由于设置不同的width mutilplier 和 resolution multiplier 导致的。这两个超参数在mobileNetV1中有介绍。
  • 最后一层不使用宽度因子。

 

上面的表格对比了,每一种分辨率下,各网络需要的大小。数字内容的意义是  最大通道数/内存(Kb)。

 

实验结果

先看左图,证明了在瓶颈层的第一个卷积层中去掉Relu的有效性。右图则说明了这种inverted结构的优越性。

这个是在imagenet上做的分类结果。mobileNetv2比v1的top1高,参数和计算量都更小了。最后一个网络括号里面的1.4指的是width multiplier

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!