MobileNet v2 核心总结

MobileNet v2 核心总结

MobileNet v2 若干理论解释

在MobileNet v2结构中,由两个基本结构,一种是plain类型Linear Bottlenecks;另外一种是残差类型Inverted residuals
在可视化之前,先说说,为啥要这样做?这里引用了论文中的两个猜想:

  1. If the manifold of interest remains non-zero volume after ReLU transformation, it corresponds to a linear transformation.
  2. ReLU is capable of preserving complete information about the input manifold, but only if the input manifold lies in a low-dimensional subspace of the input space

这里解释一个词manifold of interest,作者将w×h×c的一个feature map 理解成特征图上的一个点由c维特征!而manifold of interest表示对于我们分类或者识别任务的有用的特征,显然要提高分类识别精度,则manifold of interest需要分布在这c维特征空间或其子空间中!这是manifold of interest想要表达的意思。

此外,再来说说**函数在深度网络特征表达上起了什么作用?这里作者以ReLU为例。
MobileNet v2 核心总结
如上图,最左边是输入到ReLU的特征,后面几张图都是,通过Y=ReLU(wx+b)的结果,可以理解为不同全连接神经网络,从图中可以看到,当输出的维度比较低时,输入信息实际上是损失比较大的,但是当输出维度比较高时,输入信息能够保留下来

因此,作者得出了两个结论:
(1)**函数ReLU能够导致,输入信息的丢失;
(2)如果将输出维度提高的话,采用ReLU之后,信息丢失比较少。

在文中,作者是这样解释的:

when ReLU collapses the channel, it inevitably loses information in that channel. However if we have lots of channels, and there is a a structure in the activation manifold that information might still be preserved in the other channels.

意思就是,采用ReLU**函数不可避免的导致输入信息的流逝,但是当我们有很多维特征,某一特征经过ReLU的时候,丢失了。但是,相同的特征可能保留在其他维度!

因此,我们在搭建网络的时候,怎么采用呢?(怎么采用文章中提出的两个猜想)
首先借鉴猜想2,假设输入特征图中包含了,分类识别所需的所有特征分布(manifold of interest)在输入的c个维度中。因此,我们首先将输入维度进行拓展,拓展成t timesc 个维度(t为拓展系数,大于1)(显然,这里有点像机器学习中的核函数),因此,分类识别所需的所有特征分布在t timesc 的子空间中,这时候,采用ReLU**函数能够保留输入的特征。

然后借鉴猜想1,通过ReLU**函数之后,特征的维度依然是t timesc这个时候缩小其特征维度变成c,相当于对manifold of interest进行了维度压缩,当然这些特征都是非0的,因此,按照猜想1,ReLU对非0的特征相当于做了一个线性的映射,因此,就可以去掉ReLU**函数。

但是还有一个问题就是,对特征图进行维度扩展,势必真的计算量,这里就采用了将一个普通的卷积操作分为depthwise convolutionpointwise convolution减少权值和计算量,其基本结构如下图所示:
MobileNet v2 核心总结

再来说,Inverted residuals结构,其实就是为了方便网络反向传播,而加上的Skip Connection结构,其本质还是一样的!不过就是,正常的残差结构都是在Blockneck减少特征维度,而这里增加特征维度,道理和前面一样的!

可视化

plain Linear Block

MobileNet v2 核心总结

MobileNet v2 核心总结

MobileNet v2 核心总结

MobileNet v2 核心总结

Inverted residuals
MobileNet v2 核心总结