MobileNetV2: Inverted Residuals and Linear Bottlenecks(2018)论文综述

提问:

  1. 为什么要做这个研究(理论走向和目前缺陷) ?
    残差出来了,考虑能不能结合残差做一种准确率高,又能应用到计算资源有限的移动设备上。
  2. 他们怎么做这个研究 (方法,尤其是与之前不同之处) ?
    改了传统的残差块,提出一种倒置残差块的新结构,新结构中中利用了瓶颈层,且瓶颈层之后不用relu激活以防丢失有用信息。也利用了在mobileNet v1中所用的深度可分离卷积。也不像传统的残差块在块里面降维最后再升维残差相加,而是在新的残差块里进行升维。
  3. 发现了什么(总结结果,补充和理论的关系)?
    这种倒置残差块效果不错,而且倒置残差块分离了容量和表现力,即用瓶颈层表征所有信息和用残差分支表征所有信息中的关键信息。

摘要:提出了新的模型架构MobvileNetV2,以及介绍了如果把新架构应用到目标检测框架SSDLite上。也介绍了如何构建语义分割模型Mobile DeepLabv3.
MobvileNetV2是基于倒置残差块(在两个瓶颈层之间进行残差连接)。中间的库鏖战层利用深度可分离卷积作为非线性源进行卷积。除此之外,还发现在窄层如果移除非线性表达对于维持表现力很重要。
最后,我们的方法能够将输入/输出域从与换的表现力(expressiveness of the transformation)脱耦合。

1 引言
神经网络很不错,但是为了适应计算资源有限的移动设备,还是得压缩。
本文的主要贡献就是提出了一种新的模块:带有线性瓶颈层的倒置残差。这个模块将低维度的、经过压缩的表征(即指通道数很少的fm)作为输入,然后先扩张成更多通道的fm,然后用深度可分离卷积进行卷积操作,然后再用一个线性卷积投射为一个低通道的的表征。

2 相关研究
近些年研究权衡网络准确率和性能的研究很多,很多团队在架构选择和训练算法上的调优上取得很多进展,对一些前些年出来的经典网络如AlexNet,VGG,GoogLeNet和ResNet上都取得了很大进步。
超参数调优、模型减枝、以及连接学习(connectivity learning)也取得了很大进步。
还有利用遗传算法和强化学习进行架构搜索的,但是这样做的结构就是最终的模型非常复杂。
本文的目标就是根据直觉(经验证)来确定指导神经网络设计的准则。

3 开场白,讨论和直觉
3.1 深度可分离卷积
由深度卷积核点卷积组成,计算量大概是标准卷积的1/(kk)倍(k为标准卷积核或深度卷积核的大小)。
3.2线性瓶颈层
假定一个神经网络有n层,每一层经过激活输出指定维度的张量(hi
wi*di)。这里我们考虑的是这个激活张量的基本特性。我们认为一连串卷积层和激活层组成一个“兴趣流形”(manifold of interest:就是我们感兴趣的数据内容,这些数据存在于有参数的卷积层或激活层的参数之中,而不是指fm上的各个像素点的值之中)。长期以来我们认为兴趣流形可以嵌入到低维子空间中,换句话说,一个卷积层有很多卷积核(有多少输出fm的就有多少个通道),每个卷积核有d个通道(代表输入fm的通道数),在这些卷积核中的像素值中所编码的信息实际上就来自于某些流形,这些流形可以经过线性变换然后嵌入到低维子空间中。
乍一看,就会有这样一种直觉,可以通过减小卷积层的维数(就是减小卷积核的数目,也就是减小输出的fm的通道数)来减小操作空间的维数。 实际上在mobileNet v1中就是这样做的,通过宽度乘法器减小每个点卷积层的卷积核的数目(进而减小输出的fm的通道数),来减小操作空间的维数,但是在mobile v1论文中对这种做法的并没有相关理论解释。
根据这种直觉,宽度乘法器原理就是通过不断降低激活空间的维度直到流形充满整个空间,来达到压缩模型的目的。然而,深层次的卷积网络中有非线性激活层(relu)时,这个直觉就不对了,也就是通过降低激活空间的维度,兴趣流形并没有不断聚合而充满整个空间,而是丢失了一部分兴趣流形,从而导致模型的检测准确率降低。
例如,在一个在1维空间里对一条直线应用Relu就会产生变成一条射线,但是如果在n维空间里对一条线段(直线)应用relu,就会在这n维空间里的每一维都产生一条线段(射线),这n条线段首尾相连就组成了一个有n个结点的线性曲线。

容易理解,如果一个输入域x经过非线性变换ReLU(Bx)后的激活域中有一块S都是非零值(也即都是正值),其中B代表线性变换,也就是说通过Bx中大于零的一部分激活过来的是激活域是S,因为B是线性变换(卷积),ReLU在输入大于0时实际上是正比例函数,这样可以根据线性变换反推出对应到S中值的x的值是哪些,为多大。但是如果Bx中有一部分元素的值是小于等于零的话,这些值经过relu激活之后都变成了零,就没办法反推出原来在中的x值应该是多少,也就是说ReLU激活会导致为负的输入全部失去保存的信息。

另一方面,当ReLU使得某一个输入通道崩塌时(经过某个卷积核B对输入域x的作用生成了一个通道,这个通道中有很多元素都变成了负值),就会使当前通道丢失很多信息,但是如果有很多卷积核,也就是生成了很多通道,那么在当前通道丢失的信息就会有可能在其他通道找回来,如下图实验所示。
在这里插入图片描述

总结下来,如果一个兴趣流形来自于高维激活空间的低维子空间中,那么就会有如下两点性质:
1·)如果兴趣流形经过ReLU激活后的值全是正的,这种情况就实际上可以认为是线性激活(线性变换),没损失信息。
2)当输入流形全部来自于输入空间的低维子空间中时,ReLU激活可以完整的保存输入流形的信息??

这两个性质给优化现有的神经网络结构提供一个提示:加入兴趣流形是低维的(输入的fm通道数少,也指前一层的卷积核数目少),那么我们可以直接通过在卷积块中插入线性瓶颈层来获得这个兴趣流形(因为1*1卷积的瓶颈层就是用来降维的)。实验表明,在瓶颈层之后使用线性层比非线性层要好,因为在低维情况下避免了非线性层损失过多有用信息。也做了在瓶颈层之后加入了非线性激活的实验,效果很差,说明确实丢失了很多有用信息。
其他论文总有证明在残差块相加之前不做非线性激活会使得检测的准确率提高。

下文中将内部卷积层的大小(输出的fm通道数=这个卷积层的卷积核数目)与输入瓶颈层的大小(瓶颈层输出的fm的通道数=瓶颈层的卷积核的数目)的比值成为膨胀比。

3.3倒置残差块
普通的残差块与本文提出的倒置残差块结构对比如下。
主要有如下不同,
普通残差块:高维输入->relu激活->点卷积降维(变为低维)->relu激活->3*3卷积(还是低维)->点卷积增维(变为同输入同一维度)->残差相加
倒置残差块: 低维输入->点卷积增维-> relu激活->深度卷积->relu激活->点卷积降维->与残差相加。
总结与普通卷积不同点就是:
1) 普通残差块残差相加的是高维fm,倒置残差块残差相加的是低维残差块。低维fm中兴趣流形更集中,残差块中的残差分支对重要信息进行了过滤,又加入到原输入,使得重要信息进一步增强,也提高梯度在多层传播的能力。
2) 普通残差块是对高维fm进行降维,最后在进行增维。倒置残差块是对低维卷积进行增维最后再进行降维。这种倒置的设计使得占用的存储空间更小,而且效果也会稍微变好一些。
3) 普通残差块对低维fm也进行relu激活,会导致兴趣流形中有用信息丢失严重,但是倒置残差块中只对高维fm进行relu激活。
4) 普通残差块中应用的都是普通卷积,倒置残差块中应用的是深度可分离卷积。

下图为普通残差块与倒置残差块对比图:
在这里插入图片描述
瓶颈层卷积的运行时间和参数量
倒置残差块的结构如下表:
t代表膨胀比,K代表输入维度,K’代表与输入维度相等的输出维度,s代表Stride。
在这里插入图片描述

3.4信息流解释
mobileNet v2一个有趣的特性就是,它将输入/输出域(瓶颈层)和 非线性变换层(relu)进行分离。输入/输出域是用来表达网络每一层的容量(capacity),即瓶颈层由于卷积核很少,所以信息更集中,它所包含的是所有的信息(有用的和无用的)。而残差块内部的非线性变换的层,由于运用了relu激活,会对重要信息进行过滤,所以它传递的是是更重要的信息,代表着网络的这一层的表现力(expressiveness)。
而传统的卷积(没有残差,而且每一个卷积层之后都有relu激活),每一层都代表这所有的信息(容量),每一层同时也代表着经过relu激活后剩下的有用的信息(表现力),这样就把把容量和表现力混在一起,是输出层深度的函数。

4 模型架构
倒置残差块的结构如表一。
mobileNet v2的模型架构:
在这里插入图片描述
在不同层/块的fm大小不一样,在不同分辨率大小下最大的卷积核数/所占显存在下表中具体列出:

5 实现细节
5.1存储高效的推断
看不懂 …
大概意思是说残差块的计算效率取决于残差相加的那一层多多少通道,而不是取决于残差块内部有多少卷积块。如果残差相加的那一层有很多通道,那么整个残差块的计算量就很大。如果残差相加的那一层有通道很少,那么整个残差块的计算量就不大,也就是计算更高效。本文中所提出的倒置残差块由于应用了瓶颈层,使得残差相加的那一层通道数很少,所以计算效率就很高。处于某种原因,中间的膨胀卷积占用的空间很小,但是这个trick只在倒置残差块中起作用,标准的神经网络中还没有什么用,我没看懂为什么。

6实验
6.1 imageNet 分类
RMSPropOptimizer,decay=momentum=0.9,每层都用BN,weight decay=0.00004,初始lr=0.045,每个epoch下降为0.98倍,16个GPU,bs=96.

结果
如下表4是在手机上测试的结果和表5
在这里插入图片描述
6.2目标检测
参见表5表6
6.3语义分割
6.4消融实验
倒置残差块的中残差的有效性:如下图b所示
线性瓶颈层的有效性:如下图a所示
在这里插入图片描述

7结论
理论和实际结合的很好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值