论文学习MobileNet-v2(超详解)

文章目录

      • 1、Linear Bottlenecks
      • 2、Inverted residuals
      • 3、小结

我们在之前一篇文章已经说过MobileNet 是为了将复杂的网络能够应用在移动端和资源受限情境下的轻量级神经网络解决方案。在MobileNet网络中主要提出的方案主要是深度可分离卷积和宽度缩放因子、分辨率缩放因子两个超参数。而MobileNet -v2继续致力于构建移动端的轻量级网络。MobileNet -v2依旧沿用了v1架构中的深度可分离卷积,在本文中就不加赘述,本次文章主要针对于MobileNet-v2的创新部分进行分析。

1、Linear Bottlenecks

介绍Linear Bottlenecks之前我们先看一下,这部分的理论依据。首先认为深度神经网络是由n个Li 层构成,每一层经过激活输出的张量是 hi * wi * di 。我们认为一连串的卷积和激活层形成一个兴趣流形(manifold of interest,这就是我们感兴趣的数据内容),现阶段还无法定量的描述这种流行,这里以经验为主的研究这些流行性质。长期以来我们认为:在神经网络中兴趣流行可以嵌入到低维子空间,通俗点说,我们查看的卷积层中所有单个d通道像素时,这些值中存在多种编码信息,兴趣流行位于其中的。我们可以通过变换,进一步嵌入到下一个低维子空间中(例如通过 1 * 1 卷积变换维数,转换兴趣流行所在空间维度。所以可通过减少层维度从而降低激活空间的维度。MobileNetv1是通过宽度缩放因子在计算量和精度之间取折中。用上面的理论来说,宽度缩放因子控制激活空间的维度,并且让兴趣流形横跨整个激活空间。然而,由于深度卷积神经网络的层是具有非线性激活函数的。以ReLU变换 ( F(x) = max(0 , x) )为例,会存在以下特点:如果当前激活空间内兴趣流形完整度较高,经过ReLU,可能会让激活空间坍塌,不可避免的会丢失信息。

怎么理解呢?我们通过下面这张图来看看,Input是一个2维数据,其中兴趣流形是其中的蓝色螺旋线。使用矩阵 T 将数据嵌入到n维空间中,后接ReLU,再使用 T-1 将其投影回2D平面。可以看出投影空间为2/3维时,信息损失严重,当投影空间是15或者30维时,信息大部分可以保留。由此我们得出来的一个结论:当低维空间经过ReLU激活函数,信息损失较大;高维空间经过ReLU激活,信息损失较小。这个结论也指导着后面网络的设计。

论文学习MobileNet-v2(超详解)_第1张图片

作者也提出了两个总结:

  • 1.如果兴趣流行经过ReLU变换后得到非零的结果,这时ReLU对应着是一个线性变换。

  • 2.只有当输入流形可包含在输入空间的低维子空间中,ReLU才能完整的保持输入流行的信息。

说了这么多理论,我们来理一下思路,首先我们设计构建轻量级网络的时候,我们希望将网络的维度设计的低一些,或者说设计网络过程中我们感兴趣的兴趣流形存在低维空间。但是维度低的话,经过ReLU损失函数会丢失很多有用的信息,另外经过Relu没有滤除的部分,其非零部分对应的就是一个线性映射。所以对于低维空间后接ReLU函数的解决方案就是linear bottleneck。linear bottleneck不采用ReLU激活,采用线性变换代替原来的非线性激活,具体做法就是在卷积模块之后插入linear bottleneck来捕获兴趣流形,而在后续的实验中也证明了linear bottleneck可以防止非线性破坏信息。

论文学习MobileNet-v2(超详解)_第2张图片

  • Tip:对角线阴影纹理表示该层不包含非线性

  • 图(a):普通模型架构使用标准卷积将空间和通道信息一起映射到下一层,参数和计算量会比较大。

  • 图(b):MobileNetv1中将标准卷积拆分为深度卷积和逐点卷积,深度卷积负责逐通道的过滤空间信息,逐点卷积负责映射通道。将空间和通道分开了

  • 图©和图(d)是MobileNetv2的结构,同样是将标准卷积拆分为深度卷积和逐点卷积,在逐点卷积后使用了接1 * 1 * 1卷积,该卷积使用线性变换,合在一起称作一层低维linear bottleneck,其作用是将输入映射回低维空间。

2、Inverted residuals

什么是Inverted residuals呢?字面翻译就是倒残差。标准的残差结构是通过一个残差连接将前面的层与后面的层相结合,并且结构上两边通道数比中间层的通道数多。而MobileNet-v2中Inverted residuals 也是有残差连接,但是中间通道数比两边多。具体结构可以看下图。

论文学习MobileNet-v2(超详解)_第3张图片

我们来看看MobileNet-v2这块的设计方式,如下图

论文学习MobileNet-v2(超详解)_第4张图片论文学习MobileNet-v2(超详解)_第5张图片

中间那层就是我们在MobileNet中介绍的深度可分离卷积模块,相比于v1的结构,v2多了Expansion layer和 Projection layer。

  • Expansion layer是使用 1 * 1的卷积,目的是将低维空间映射到高维空间。这里Expansion有一个超参数是控制维度扩展的倍数,论文中用的是6倍的扩张。

  • Projection layer也是使用1 * 1的卷积,目的是希望把高维特征映射到低维空间去,在深度网络中 将高维空间映射到低纬空间的设计也被称之为Bottleneck layer。

  • residual connection 指的就是输入与输出部分的连接

  • 在MobileNet中的ReLU激活函数使用的是ReLU6 ,原理和普通ReLU一样,不同的是最高输出只有6,这样做的目的是使得模型在低精度计算下具有更强的鲁棒性。可以看到Bottleneck residual block 结构中Expansion layer和Depthwise Convolution后面都接了BN层和ReLU层,而 Projection layer只接了BN层并且接残差连接实现特征复用。

基于此MobileNet -v2核心部分就介绍完了,接下来我们看一看MobileNet的整体构成。来说一下这些参数的意思吧,首先每一行表示一个序列,n表示将该层重复n次。c表示输出通道数,相同序列的所有层都有相同数量的c输出通道。s表示步长,每个序列的第一层步长为s,其它层都是1,同时作者实验中所有的卷积核都使用3×3的核。

论文学习MobileNet-v2(超详解)_第6张图片

3、小结

有了前面的理论分析与网络设计我们再在宏观上分析这样设计的思路,首先我们的希望是构建轻量级网络,所以如果tensor维度越低,卷积层的乘法计算量就越小,以至于整个网络都是低维的tensor,那么整体计算速度就会很快。但是,如果只是使用低维的tensor效果并不会好,因为如果全部卷积层都使用低维的tensor来提取特征的话,那么就没有办法提取到整体的足够多的信息。所以我们就希望用高维tensor来提取特征,并且还希望计算量没有那么大,所以就有了MobileNet-v2的设计:先通过Expansion layer来扩展维度,之后在用深度可分离卷积来提取特征,之后使用Projection layer来压缩数据,让网络重新变小。因为Expansion layer 和 Projection layer都是有可以学习的参数,所以整个网络结构可以学习到如何更好的扩展数据和重新压缩数据。

你可能感兴趣的:(论文学习,神经网络,卷积,深度学习)