大白话讲解MobileNet-v3

MobileNet-v3可以说是轻量化网络的集大成者,所以在介绍MobileNet-v3之前我们有必要了解一下目前的一些轻量化网络及特点。

1.轻量化网络

在移动端部署深度卷积网络,无论什么视觉任务,选择高精度的计算量少和参数少的骨干网是必经之路。轻量化网络是移动端的研究重点,目前的一些主要的轻量化网络及特点如下:
SqueezeNet:提出Fire Module设计,主要思想是先通过1x1卷积压缩通道数(Squeeze),再通过并行使用1x1卷积和3x3卷积来抽取特征(Expand),通过延迟下采样阶段来保证精度。综合来说,SqueezeNet旨在减少参数量来加速。
通过减少MAdds来加速的轻量模型:
MobileNet V1:提出深度可分离卷积;
MobileNet V2:提出反转残差线性瓶颈块;
ShuffleNet:结合使用分组卷积和通道混洗操作;
CondenseNet:dense连接
ShiftNet:利用shift操作和逐点卷积代替了昂贵的空间卷积

从SqueezeNet开始模型的参数量就不断下降,为了进一步减少模型的实际操作数(MAdds),MobileNetV1利用了深度可分离卷积提高了计算效率,而MobileNetV2则加入了线性bottlenecks和反转残差模块构成了高效的基本模块。随后的ShuffleNet充分利用了组卷积和通道shuffle进一步提高模型效率。CondenseNet则学习保留有效的dense连接在保持精度的同时降低,ShiftNet则利用shift操作和逐点卷积代替了昂贵的空间卷积。


(1)MobileNet-v1中深度可分离卷积的理解:
将传统卷积分解为空间滤波和特征生成两个步骤,空间滤波对应较轻的3x3 depthwise conv layer,特征生成对应较重的1x1 pointwise conv layer.
(2)MobileNet-v2中反转残差线性瓶颈块的理解:
扩张(1x1 conv) -> 抽取特征(3x3 depthwise)-> 压缩(1x1 conv)
当且仅当输入输出具有相同的通道数时,才进行残余连接
在最后“压缩”完以后,没有接ReLU激活,作者认为这样会引起较大的信息损失
该结构在输入和输出处保持紧凑的表示,同时在内部扩展到更高维的特征空间,以增加非线性每通道变换的表现力。
(3)MnasNet理解:
在MobileNet-v2的基础上构建,融入SENet的思想
与SE-ResBlock相比,不同点在于SE-ResBlock的SE layer加在最后一个1x1卷积后,而MnasNet的SE layer加在depthwise卷积之后,也就是在通道数最多的feature map上做Attention。
(4)MobileNet-v3的理解:
MobileNet-v3集现有轻量模型思想于一体,主要包括:swish非线性激活Squeeze and Excitation思想为了减轻计算swish中传统sigmoid的代价,提出了hard sigmoid


2.整体来说MobileNetV3有两大创新点

(1)互补搜索技术组合:由资源受限的NAS执行模块级搜索,NetAdapt执行局部搜索。
(2)网络结构改进:将最后一步的平均池化层前移并移除最后一个卷积层,引入h-swish激活函数。

3.开源代码

感谢github上大佬们开源,开源代码整理如下:

(1)PyTorch实现1:https://github.com/xiaolai-sqlai/mobilenetv3

(2)PyTorch实现2:https://github.com/kuan-wang/pytorch-mobilenet-v3

(3)PyTorch实现3:https://github.com/leaderj1001/MobileNetV3-Pytorch

(4)Caffe实现:https://github.com/jixing0415/caffe-mobilenet-v3

(5)TensorFLow实现:https://github.com/Bisonai/mobilenetv3-tensorflow

4.细节内容


上面两张图是MobileNetV2和MobileNetV3的网络块结构。可以看出,MobileNetV3是综合了以下三种模型的思想:MobileNetV1的深度可分离卷积(depthwise separable convolutions)、MobileNetV2的具有线性瓶颈的逆残差结构(the inverted residual with linear bottleneck)和MnasNet的基于squeeze and excitation结构的轻量级注意力模型。综合了以上三种结构的优点设计出了高效的MobileNetV3模块。

4.1 互补搜索技术组合

(1)资源受限的NAS(platform-aware NAS):计算和参数量受限的前提下搜索网络的各个模块,所以称之为模块级的搜索(Block-wise Search)。
(2)NetAdapt:用于对各个模块确定之后网络层的微调。
对于模型结构的探索和优化来说,网络搜索是强大的工具。研究人员首先使用了神经网络搜索功能来构建全局的网络结构,随后利用了NetAdapt算法来对每层的核数量进行优化。对于全局的网络结构搜索,研究人员使用了与Mnasnet中相同的,基于RNN的控制器和分级的搜索空间,并针对特定的硬件平台进行精度-延时平衡优化,在目标延时(~80ms)范围内进行搜索。随后利用NetAdapt方法来对每一层按照序列的方式进行调优。在尽量优化模型延时的同时保持精度,减小扩充层和每一层中瓶颈的大小。

4.2网络结构的改进


(1)改进一:
首先是最靠后部分的修改,也就是预测部分的修改。下图是MobileNet-v2的整理模型架构,可以看到,网络的最后部分首先通过1x1卷积映射到高维,然后通过GAP收集特征,最后使用1x1卷积划分到K类。所以其中起抽取特征作用的是在7x7分辨率上做1x1卷积的那一层

再看MobileNet-v3,上图为large,下图为small。按照刚刚的思路,这里首先将特征进行Pooling,然后再通过1x1卷积抽取用于训练最后分类器的特征,最后划分到k类。作者的解释是: This final set of features is now computed at 1x1 spatial resolution instead of 7x7 spatial resolution.


(2)改进二::
现有的移动端模型倾向于使用32个标准3 * 3卷积来构建最初的滤波器组,定性角度来看,这一个滤波器组起到的作用往往是检测边缘。
得益于hard swish的设计,经过试验可以在不损失精度的情况下降滤波器的个数从32减少到16。
这一改进可以节省3ms时间,1000万次乘加运算。

4.3激活函数

作者发现swish激活函数能够有效提高网络的精度,然而,swish的计算量太大了。作者提出h-swish(hard version of swish)如下所示

这种非线性在保持精度的情况下带了了很多优势,首先ReLU6在众多软硬件框架中都可以实现,其次量化时避免了数值精度的损失,运行快。这一非线性改变将模型的延时增加了15%。但它带来的网络效应对于精度和延时具有正向促进,剩下的开销可以通过融合非线性与先前层来消除。

5.效果总结:

MobileNetV3-Large在ImageNet分类上的准确度与MobileNetV2相比提高了3.2%,同时延迟降低了15%。MobileNetV3-large 用于目标检测,在COCO数据集上检测精度与MobileNetV2大致相同,但速度提高了25%。在Cityscapes语义分割任务中,新设计的模型MobileNetV3-Large LR-ASPP 与 MobileNetV2 R-ASPP分割精度近似,但快30%。

大白话讲解MobileNet-v3相关推荐

  1. 华为诺亚、北大提出GhostNet​,使用线性变换生成特征图,准确率超MobileNet v3 | CVPR 2020...

    作者 | Kai Han, Yunhe Wang等 编译 | Conv 出品 | AI科技大本营(rgznai100) 受限于内存空间和计算资源,将卷积神经网络部署到嵌入式设备中会比较困难.CNNs中 ...

  2. MobileNet V3简单总结

    2017_MobileNetV3_谷歌: 图: MobileNetV3-Large和MobileNetV3-Small两种不同大小的网络结构 网络描述: MobileNetV3 一种轻量级网络,它的参 ...

  3. 超越MobileNet v3!华为诺亚、北大提出GhostNet​,使用线性变换生成特征图

    点击我爱计算机视觉标星,更快获取CVML新技术 作者 | Kai Han, Yunhe Wang等 编译 | Conv 出品 | AI科技大本营(rgznai100) 受限于内存空间和计算资源,将卷积 ...

  4. MobileNet V3(2019)

    创新点 1.引入SE结构 MobileNetV3 的另一个新颖想法是在核心架构中加入一种名为「Squeeze-and-Excitation」的神经网络(简称 SE-Net,也是 ImageNet 20 ...

  5. 大白话讲解卷积神经网络工作原理

    本文介绍了计算机视觉常用工具:卷积神经网络.用大白话讲解了其应用领域.卷积.池化(下采样).全连接.梯度下降.反向传播算法.并用三维可视化工具展示了手写字体识别的卷积神经网络案例,最后介绍了几个经典的 ...

  6. 轻量级神经网络算法系列文章-MobileNet v3

    4. 轻量级神经网络算法目录 轻量级神经网络算法 4.1 各轻量级神经网络算法总结对比 4.2 SqueezeNet 4.3 DenseNet 4.4 Xception 4.5 MobileNet v ...

  7. Zookeeper详细介绍+dubbo简单介绍+简单大白话讲解

    Zookeeper zookeeper前言 zookeeper简介绍 dubbo中为何使用zookeeper(如果理解dubbo实现原理可以忽略) dubho好处简单介绍下 dubbo如何使用zook ...

  8. 大白话讲解Promise(二)理解Promise规范

    上一篇我们讲解了ES6中Promise的用法,但是知道了用法还远远不够,作为一名专业的前端工程师,还必须通晓原理.所以,为了补全我们关于Promise的知识树,有必要理解Promise/A+规范,理解 ...

  9. 大白话讲解 零拷贝技术

    数据的四次拷贝与四次上下文切换 很多应用程序在面临客户端请求时,可以等价为进行如下的系统调用: 1. File.read(file, buf, len); 2. Socket.send(socket, ...

最新文章

  1. Vim - 视图模式
  2. linux安装包安装mysql5.7
  3. (Z)复杂繁琐的芯片设计流程
  4. C#使用Redis的基本操作
  5. python斐波那契前20递归_算法python实现经典递归问题(汉诺塔, 斐波那契数列,阶乘)...
  6. 分享Silverlight/WPF/Windows Phone一周学习导读(4月11日-4月15日)
  7. 视频聊天室软件的技术标准
  8. ab测试工具结果分析
  9. 知乎APP---案例分析
  10. 2022全国高中数学联赛A1卷T2几何答案
  11. NetSuite2.0 Restlet脚本 时间初始化脚本
  12. mach3 丝杠的步进电机参数设置
  13. 解决Win10图片打开方式没有“Windows照片查看器”问题
  14. Hiredis 基本使用
  15. 团队做项目该怎样分工
  16. 推断速度达seq2seq模型的100倍,谷歌开源文本生成新方法LaserTagger
  17. 2021CCPC河南省赛赛后总结(终于拿金了呜呜呜)
  18. ctfhub JWT
  19. a标签做按钮效果,并实现单选效果
  20. 基于物联网IOT iBeacon数据采集实现过程

热门文章

  1. pyecharts安装
  2. keystore生成
  3. [转帖]Photoshop调出风景照片古典暗黄色
  4. java如何编写windows木马_如何编写可怕的 Java 代码?
  5. 模板 - 最小割(常见最小割题型技巧总结)
  6. Mysql——存储引擎
  7. 从Interop领奖台到“新基建”联接底座:华为数通领域构筑的时代价值
  8. 你真的了解a ^= (b ^= (a ^= b))吗?
  9. 用python将网页链接转二维码——以自己的博客为例
  10. 磁环-什么是高频磁环_高频磁环和低频磁环的区别