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








相关文章
|
编解码 测试技术 异构计算
预测一下,GPT-5 会在什么时候发布,又会有哪些更新?
GPT-5预告11月发布,或与ChatGPT两周年同庆。谷歌Gemini与GPT-4 turbo竞争激烈。GPT-5或分阶段推出,训练加安全测试耗时9个月。GPT-4拥有1.8万亿参数,120层结构,训练成本6300万,专为多模态设计,加强推理性能。GPT-5预期参数增10倍,强化多模态及推理能力,支持图像、音频和视频处理。[个人主页的个人介绍内容](https://developer.aliyun.com/profile/oesouji3mdrog/highScore_1?spm=a2c6h.13262185.profile.6.56644d0depOAIS)
421 3
预测一下,GPT-5 会在什么时候发布,又会有哪些更新?
|
机器学习/深度学习 开发工具 计算机视觉
YOLOv8 目标检测 | 自定义数据集
YOLOv8 目标检测 | 自定义数据集
|
机器学习/深度学习 编解码 算法
改进UNet | 透过UCTransNet分析ResNet+UNet是不是真的有效?(一)
改进UNet | 透过UCTransNet分析ResNet+UNet是不是真的有效?(一)
1125 0
|
机器学习/深度学习 数据采集 算法
【 2021 MathorCup杯大数据挑战赛 A题 二手车估价】初赛复赛总结、方案代码及论文
总结了2021 MathorCup杯大数据挑战赛A题“二手车估价”的初赛和复赛经验,包括题目要求、解题思路、所用方法和结果,提供了详细的数据分析、模型构建、论文撰写和工具使用技巧,并展示了初赛和复赛的论文。
253 2
|
Windows
目前最好用的禁止windows自动更新
目前最好用的禁止windows自动更新
45030 0
目前最好用的禁止windows自动更新
|
Python
AttributeError: module ‘numpy‘ has no attribute ‘int‘.
AttributeError: module ‘numpy‘ has no attribute ‘int‘.
338 0
|
数据可视化 前端开发 UED
matplotlib图形整合之多个子图一起绘制
matplotlib图形整合之多个子图一起绘制
877 0
matplotlib图形整合之多个子图一起绘制
Linux Command split 切割文件
Linux Command split 切割文件
|
计算机视觉 Python
OpenCV图像处理-图片拼接(Python)
1. 图片拼接原理 对于图像拼接主要分为两部分:1.特征点匹配,确定两幅图之间的位置关系;2.把所有图像投影变换到同一坐标系,并完成对接与融合。
455 0
|
数据可视化 关系型数据库 索引
【100天精通Python】Day63:Python可视化_Matplotlib绘制子图,子图网格布局属性设置等示例+代码
【100天精通Python】Day63:Python可视化_Matplotlib绘制子图,子图网格布局属性设置等示例+代码
460 0