更加高效的 MobileNetV2 继续使用了 MobileNetV1 提出的深度可分离卷积(Depthwise separable convolutions),同时引入了线性瓶颈结构(Linear Bottlenecks),反向残差结构(Inverted Residuals),使得参数量和计算量减少,速度提升,精度更高。
MobileNetV2 使用卷积核为3x3的深度可分离卷积使得计算量比起标准卷积减小8~9倍(具体计算参考 MobileNetV1 )
也就是说为了得到Feature Map中有用的信息,兴趣流形(manifold of interest)必须要在其维数空间或者子空间中。
宽度因子允许我们降低激活空间维数,使得兴趣流形跨越整个空间,然而,深度卷积神经网络实际上具有非线性转换(如ReLU)时,这种作用失效了。一般而言,如果由于一层变换ReLU (Bx)有一个非零量,映射到内部S的点是通过输入的线性变换B得到的,表明与全维输出对应的输入空间的部分是有限的线性变换。换句话说,深度网络只在输出域的非零量部分具有线性分类器的能力另一方面,当ReLU使得通道崩溃时,它将丢失该通道中的信息。然而如果我们有很多通道,那么有用信息(manifold of interest)可能仍然保存在其他通道中。经证明,如果输入流形可以嵌入到激活空间的一个显著的低维子空间中,那么ReLU转换在保存信息的同时,将所需的复杂性引入可表示函数集中。综上,兴趣流形应该位于高维激活空间的低维子空间中的要求:
如果兴趣流形经过ReLU变换后仍然保持非零量,则对应线性变换只有当输入流形位于输入空间的低维子空间中,ReLU能够保存输入流形的完整信息由以上两点可得,假设兴趣流形是低维的,那么我们可以通过在卷积块中插入线性瓶颈层来捕获它。输入瓶颈的大小与内部大小的比值称为扩展比(expansion radio)
从上图的例子中看出 在低维空间中使用ReLU激活函数会损失较多信息。直观理解就是,ReLU会使得负值变0,因此若是维度较低的空间,相比较高维度的空间有更大的概率会使某一维度消零(通道崩塌)
为了解决由于非线性激活函数造成的信息损失问题。提出了线性瓶颈结构(Linear Dottleneck),本质上是不带ReLU的1x1的卷积层。
如上图,经过最后一层点卷积(PW)后,特征空间维数减小(原因见下文),为了不损失太多特征信息,删去激活函数ReLU,而改为Linear函数。
残差网络结构与反残差网络结构对比图:
MobileNetV2 先使用点卷积(PW)对输入特征进行升维操作(如上图6倍),然后经过深度卷积(DW)提取特征【DW输入输出特征空间维数相同】,再使用点卷积(PW)对深度卷积的输出特征进行线性组合同时降维(指定输出通道数)。降维后不再使用ReLU6激活,而是使用线性函数。而ResNet 先降维 (0.25倍)、卷积、再升维恢复原大小。
仅有DW层的stride=1,瓶颈块的输入与输出拥有相同通道数时,该瓶颈层才使用shortcuts。
第一层为全卷积层,接着是瓶颈层,最后使用平均池化层+点卷积层代替全连接层(减少参数数量核计算量)。 使用ReLU作为激活函数,并在训练过程中使用dropout和BN。
n为重复次数,c为输出通道数,t为扩展因子(5~10,实验使用t=6,大网络大扩展率,小网络小扩展率),所有卷积核大小为3x3。
MobileNetV2 提出了线性瓶颈结构(Linear Bottlenecks)以减少参数数量和计算量; 提出反向残差结构(Inverted Residuals),减少参数数量,增强梯度跨层传播能力,特征表达能力,解决训练时因网络层数增加而出现的梯度消失问题; 使用平均池化和逐点卷积代替全连接层,减少参数数量。
论文地址:https://arxiv.org/abs/1801.04381
图片部分来源:
http://www.sohu.com/a/323612419_701739https://zhuanlan.zhihu.com/p/33075914