MobileNet系列之MobileNet_v2

简介: MobileNet_v2提出了一些MobileNet_v1存在的一些问题,并在此基础上提出了改进方案。其主要贡献为提出了线性瓶颈(Linear Bottlenecks)和倒残差(Inverted Residuals)。

MobileNet_v2提出了一些MobileNet_v1存在的一些问题,并在此基础上提出了改进方案。其主要贡献为提出了线性瓶颈(Linear Bottlenecks)和倒残差(Inverted Residuals)。


01 Linear Bottlenecks


image.png

如上图所示,MobileNet_v2提出ReLU会破坏在低维空间的数据,而高维空间影响比较少。因此,在低维空间使用Linear activation代替ReLU。如下图所示,经过实验表明,在低维空间使用linear layer是相当有用的,因为它能避免非线性破坏太多信息。


image.png

此外,如果输出是流形的非零空间,则使用ReLU相当于是做了线性变换,将无法实现空间映射,因此MobileNet_v2使用ReLU6实现非零空间的非线性激活。


   上方提出使用ReLU会破坏信息,这里提出ReLU6实现非零空间的非线性激活。看起来有些难以理解。这里提出我自己的理解。


   根据流形学习的观点,认为我们所观察到的数据实际上是由一个低维流形映射到高维空间的。由于数据内部特征的限制,一些高维中的数据会产生维度上的冗余,实际上这些数据只要比较低的维度的维度就能唯一的表示。


image.png

图像分布是在高维空间,神经网络中使用非线性激活函数实现将高维空间映射回低维流形空间。而这里提出使用ReLU6即增加了神经网络对非零空间的映射,否则,在非零空间使用ReLU相当于线性变换,无法映射回流形低维空间。而前文提出的使用线性激活函数来代替ReLU是在已经映射后的流形低维空间。


   区别就是ReLU6是在将高维空间映射到流形低维空间时使用,Linear layer是在映射后的流形低维空间中使用。


   其使用的如下表所示


image.png

02 Inverted Residuals


MobileNet_v1中的结构如下左图,MobileNet_v2如下右图。、


image.png


 MobileNet_v2是在2018年发表的,此时ResNet已经出来了,经过几年的广泛使用表明,shortcut connection和Bottlenck residual block是相当有用的。MobileNet_v2中加入了这两个结构。

   但不同的是,ResNet中的bottleneck residual是沙漏形的,即在经过1x1卷积层时降维,而MobileNet_v2中是纺锤形的,在1x1卷积层是升维。这是因为MobileNet使用了Depth wise,参数量已经极少,如果使用降维,泛化能力将不足。


image.png

此外,在MobileNet_v2中没有使用池化来降维,而是使用了步长为2的卷积来实现降维,此外如上图所示,步长为2的block没有使用shortcut connection。


image.png

这里的t是膨胀因子,取6。

 

   Inverted residuals block 与ResNet中的residuals block对比如下图所示:


image.png

图来源于网络


   ResNet中residual block是两端大,中间小。而MobileNet_v2是中间大,两端小,刚好相反,作者把它取名为Inverted residual block。

 

   整体结构如下图所示:



image.png

论文里提到Bottleneck有19层,但其给出的结构图中却只有17层。


   MobileNet_v2相比与MobileNet_v1,参数量有所增加,主要增加在于Depth wise前使用1x1升维。此外,在CPU上的推理速度也比后者慢,但精度更高。


image.png








相关文章
|
5月前
|
机器学习/深度学习 计算机视觉
Inception模型及其实现
【7月更文挑战第26天】Inception模型及其实现。
65 7
|
7月前
|
算法框架/工具
使用MobileNetV3的PSPNet网络结构
使用MobileNetV3的PSPNet网络结构
40 1
|
7月前
|
编解码 Python
解读deepLabV3+时遇到的问题总结
环境问题 python :3.10.12 ModuleNotFoundError: No module named ‘torchvision.models.utils 起初pip以下这个包,也没有解决问题;后来发现是版本的问题。
143 0
|
机器学习/深度学习 数据挖掘 PyTorch
图像分类经典神经网络大总结(AlexNet、VGG 、GoogLeNet 、ResNet、 DenseNet、SENet、ResNeXt )
图像分类经典神经网络大总结(AlexNet、VGG 、GoogLeNet 、ResNet、 DenseNet、SENet、ResNeXt )
6663 1
图像分类经典神经网络大总结(AlexNet、VGG 、GoogLeNet 、ResNet、 DenseNet、SENet、ResNeXt )
|
机器学习/深度学习 编解码
EfficientNet介绍
EfficientNet介绍
160 0
EfficientNet介绍
|
机器学习/深度学习 编解码 PyTorch
DenseNet、MobileNet、DPN…你都掌握了吗?一文总结图像分类必备经典模型(二)
DenseNet、MobileNet、DPN…你都掌握了吗?一文总结图像分类必备经典模型(二)
204 0
|
计算机视觉
VGG的成功之处在哪
VGG的成功之处在哪
162 0
|
机器学习/深度学习 PyTorch TensorFlow
DenseNet、MobileNet、DPN…你都掌握了吗?一文总结图像分类必备经典模型(三)
DenseNet、MobileNet、DPN…你都掌握了吗?一文总结图像分类必备经典模型
228 0
|
机器学习/深度学习 人工智能 计算机视觉
Inception-v4 和 Inception-ResNet
Inception-v3 结构的复杂程度以后够复杂了,但是它还有几个升级版本,就是 Inception-v4,Inception-ResNet-v1 和 Inception-ResNet-v2。这几个升级版本都出自同 一篇论文《Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning》
167 0
Inception-v4 和 Inception-ResNet
|
机器学习/深度学习 人工智能 计算机视觉
Inception-v2/v3模型
Inception-v2和Inception-v3都是出自同一篇论文《Rethinking the inception architecture for computer vision》,该论文提出了多种基于 Inception-v1 的模型优化 方法,Inception-v2 用了其中的一部分模型优化方法,Inception-v3 用了论文中提到的所有 优化方法。相当于 Inception-v2 只是一个过渡版本,Inception-v3 一般用得更多。
172 0
Inception-v2/v3模型