图像算法--轻量级CNN,MobileNet V2卷积神经网络

MobileNet V2卷积神经网络

本篇论文是优化了MobileNet V1的版本的卷积神经网络,和resnet神经网络也有部分相似。
mobilenet2_0.jpg

首先利用3×3的深度可分离卷积提取特征,然后利用1×1的卷积来扩张通道。用这样的block堆叠起来的MobileNetV1既能减少不小的参数量、计算量,提高网络运算速度,又能的得到一个接近于标准卷积的还不错的结果,看起来是很美好的。

问题

有人在实际使用的时候, 发现深度卷积部分的卷积核比较容易训废掉:训完之后发现深度卷积训出来的卷积核有不少是空的,如下图所示:

mobilenet2_1.jpg

这是怎么回事呢?

作者认为这是ReLU的不起眼的激活函数的锅。

linear bottleneck

我们来看看Rule这个函数都干啥了?

这里我们来看一个实验,假设在2维空间有一组由mm个点组成的螺旋线XmX_m数据(如input),利用随机矩阵TT映射到nn维空间上并进行ReLU运算.

y=ReLU(TXm)(1.1)y = ReLU(T*X_m) \tag{1.1}

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

再利用随机矩阵T的逆矩阵T1T−1,将y映射回2维空间当中:

Xm=T1(RuLU(TXm))(1.2)X_m'=T^{-1}(RuLU(T*X_m)) \tag{1.2}

就是将XmX_m恢复回来,然后我们来看下面的图。

mobilenet2_2.jpg

如上图所示,第一张图是元素图像,当dim=2dim=2的时候,我们发现丢失的信息还是比较多的,就剩下了14\frac{1}{4},但是随着dim增加,保留下来的形式是越来越多的。

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

这里还有个问题,我们能将所有的ReLu都替换成线性函数吗?当然不行,那么样不就回到了原来我们讨论的问题,为什么需要激活层。所以我们把最后的那个ReLU6换成Linear。

Expansion layer

现在还有个问题是,深度卷积本身没有改变通道的能力,来的是多少通道输出就是多少通道。如果来的通道很少的话,DW深度卷积只能在低维度上工作,这样效果并不会很好,所以我们要“扩张”通道。既然我们已经知道PW逐点卷积也就是1×1卷积可以用来升维和降维,那就可以在DW深度卷积之前使用PW卷积进行升维(升维倍数为t,t=6),再在一个更高维的空间中进行卷积操作来提取特征,所以我们的卷积变成这个样子。
mobilenet2_3.jpg
也就是说,不管输入通道数是多少,经过第一个PW逐点卷积升维之后,深度卷积都是在相对的更高6倍维度上进行工作。

这样我们的工作就圆满完成啦,利用一个PW进行升维,然后和MobileNet V1 使用DW和PW一起的效果进行神经网络的传递。

MobileNet V2 和 ResNet

这里我们还可以讨论一个问题,MobileNet V2 和 ResNet网络有什么异同点呢?
mobilenet2_4.jpg

这张图是毕竟能够比较这个问题,我们发现以下

  • Resnet是先降低维度,然后利用PW层进行升维度
  • MobileNetV2 则是 先升维 (6倍)、卷积、再降维。

MobileNet V2

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×