大白话讲解MobileNet-v3
大白话讲解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相关推荐
- 华为诺亚、北大提出GhostNet,使用线性变换生成特征图,准确率超MobileNet v3 | CVPR 2020...
作者 | Kai Han, Yunhe Wang等 编译 | Conv 出品 | AI科技大本营(rgznai100) 受限于内存空间和计算资源,将卷积神经网络部署到嵌入式设备中会比较困难.CNNs中 ...
- MobileNet V3简单总结
2017_MobileNetV3_谷歌: 图: MobileNetV3-Large和MobileNetV3-Small两种不同大小的网络结构 网络描述: MobileNetV3 一种轻量级网络,它的参 ...
- 超越MobileNet v3!华为诺亚、北大提出GhostNet,使用线性变换生成特征图
点击我爱计算机视觉标星,更快获取CVML新技术 作者 | Kai Han, Yunhe Wang等 编译 | Conv 出品 | AI科技大本营(rgznai100) 受限于内存空间和计算资源,将卷积 ...
- MobileNet V3(2019)
创新点 1.引入SE结构 MobileNetV3 的另一个新颖想法是在核心架构中加入一种名为「Squeeze-and-Excitation」的神经网络(简称 SE-Net,也是 ImageNet 20 ...
- 大白话讲解卷积神经网络工作原理
本文介绍了计算机视觉常用工具:卷积神经网络.用大白话讲解了其应用领域.卷积.池化(下采样).全连接.梯度下降.反向传播算法.并用三维可视化工具展示了手写字体识别的卷积神经网络案例,最后介绍了几个经典的 ...
- 轻量级神经网络算法系列文章-MobileNet v3
4. 轻量级神经网络算法目录 轻量级神经网络算法 4.1 各轻量级神经网络算法总结对比 4.2 SqueezeNet 4.3 DenseNet 4.4 Xception 4.5 MobileNet v ...
- Zookeeper详细介绍+dubbo简单介绍+简单大白话讲解
Zookeeper zookeeper前言 zookeeper简介绍 dubbo中为何使用zookeeper(如果理解dubbo实现原理可以忽略) dubho好处简单介绍下 dubbo如何使用zook ...
- 大白话讲解Promise(二)理解Promise规范
上一篇我们讲解了ES6中Promise的用法,但是知道了用法还远远不够,作为一名专业的前端工程师,还必须通晓原理.所以,为了补全我们关于Promise的知识树,有必要理解Promise/A+规范,理解 ...
- 大白话讲解 零拷贝技术
数据的四次拷贝与四次上下文切换 很多应用程序在面临客户端请求时,可以等价为进行如下的系统调用: 1. File.read(file, buf, len); 2. Socket.send(socket, ...
最新文章
- Vim - 视图模式
- linux安装包安装mysql5.7
- (Z)复杂繁琐的芯片设计流程
- C#使用Redis的基本操作
- python斐波那契前20递归_算法python实现经典递归问题(汉诺塔, 斐波那契数列,阶乘)...
- 分享Silverlight/WPF/Windows Phone一周学习导读(4月11日-4月15日)
- 视频聊天室软件的技术标准
- ab测试工具结果分析
- 知乎APP---案例分析
- 2022全国高中数学联赛A1卷T2几何答案
- NetSuite2.0 Restlet脚本 时间初始化脚本
- mach3 丝杠的步进电机参数设置
- 解决Win10图片打开方式没有“Windows照片查看器”问题
- Hiredis 基本使用
- 团队做项目该怎样分工
- 推断速度达seq2seq模型的100倍,谷歌开源文本生成新方法LaserTagger
- 2021CCPC河南省赛赛后总结(终于拿金了呜呜呜)
- ctfhub JWT
- a标签做按钮效果,并实现单选效果
- 基于物联网IOT iBeacon数据采集实现过程
热门文章
- pyecharts安装
- keystore生成
- [转帖]Photoshop调出风景照片古典暗黄色
- java如何编写windows木马_如何编写可怕的 Java 代码?
- 模板 - 最小割(常见最小割题型技巧总结)
- Mysql——存储引擎
- 从Interop领奖台到“新基建”联接底座:华为数通领域构筑的时代价值
- 你真的了解a ^= (b ^= (a ^= b))吗?
- 用python将网页链接转二维码——以自己的博客为例
- 磁环-什么是高频磁环_高频磁环和低频磁环的区别