MobileNet v2

论文 https://arxiv.org/abs/1801.04381

目录

ReLU的弊端

Expansion Layer

Inverted Residuals

参考


ReLU的弊端

作者发现在MobileNet v1中,深度卷积部分的卷积核训练完后有不少是空的

MobileNet v2_第1张图片

作者认为是ReLU的原因。 下面的解释主要是《轻量级神经网络“巡礼”(二)—— MobileNet,从V1到V3》里的介绍。

假设在2维空间有一组由m个点组成的螺旋线Xm数据(如input),利用随机矩阵T映射到n维空间上并进行ReLU运算,即:

 其中,Xm被随机矩阵T映射到了n维空间:

MobileNet v2_第2张图片

 再用随机矩阵T的逆矩阵T^{-1},将y映射回二维空间中:

全过程如下所示:

MobileNet v2_第3张图片

换句话说,就是对一个n维空间中的一个“东西”做ReLU运算,然后(利用T的逆矩阵T-1恢复)对比ReLU之后的结果与Input的结果相差有多大

如图所示,可以看到

当n=2,3时,与input相比有很大一部分的信息已经丢失了。而当n = 15,30时,还是有相当多的地方被保留了下来。

也就是说,对低维度做ReLU运算,很容易造成信息的丢失。而在高维度进行ReLU运算的话,信息的丢失则会很少

这就解释了为什么深度卷积的卷积核有不少是空。发现了问题,我们就能更好地解决问题。针对这个问题,可以这样解决:既然是ReLU导致的信息损耗,将ReLU替换成线性激活函数

具体的做法是保留depthwise部分的ReLU6,去掉pointwise部分的ReLU6

Expansion Layer

深度卷积本身没有改变通道数的能力,输入多少通道输出就是多少通道,如果输入通道很少的话,深度卷积只能在低维度上工作,效果并不会很好。因此作者在深度卷积前加了一层expansion layer,即通过1\times 1卷积进行升维(默认升维倍数为t=6),然后再在更高维的空间中进行深度卷积来提取特征。

Inverted Residuals

 作者想像Resnet一样复用特征,因此引入了shortcut结构。最终的MobileNet v2的block结构如下

MobileNet v2_第4张图片

因为和ResNet block的结构相反,因此作者将其命名为Inverted Residuals

MobileNet v2_第5张图片

具体而言,ResNet block是先降维后升维,MobileNet v2 block则是先升维后降维,然后将中间的卷积换成了深度卷积。 

MobileNet v2的Inverted Residual block结构如下

MobileNet v2_第6张图片

对比v1和v2的block

MobileNet v2_第7张图片

MobileNet v2的网络结构

MobileNet v2_第8张图片

对于一个重复多次的block,当stride=2时,只在第一次的深度卷积中将stride设置为2。因为residual复用特征是add操作,需要特征图大小和通道数保持一致,因此对于重复多次的block,从迭代的第二次开始复用初始特征也就是进行add操作。

参考

https://zhuanlan.zhihu.com/p/70703846

你可能感兴趣的:(Lightweight,Backbone)