MobileNetV2网络结构分析
1.Depthwise Separable Convolution结构
深度可分离卷积(Depthwise Separable Convolution)是MobileNet-V1使用的一种卷积结构。层级结构如图1所示,它由一层深度卷积(Depthwise Convolution,DW)与一层逐点卷积(Pointwise Convolution,PW)组合而成的,每一层卷积之后都紧跟着批规范化和ReLU激活函数。跟标准卷积的区别就是精度基本不变的情况下,参数与计算量都明显减少。
深度卷积,通过对每个输入通道分别利用卷积核进行滤波来实现轻量级滤波。
逐点卷积,通过计算输入通道间的线性组合来构建新的特征,将多个通道的特征进行整合。
2.带有线性瓶颈的倒置残差结构
MobileNet-V2的架构是带有线性瓶颈的倒置残差结构(the inverted residual with linear bottleneck),层级结构如图3。如图4,与深度可分离卷积不同之处在于:
1)在DW之前添加一层PW。该层作用是用1x1的卷积对输入的低纬特征进行升维,即“Expansion”,升高的维度倍数即expansion factor 膨胀系数;
2)用linear bottleneck降维;
3)通过shortcut将这个block的输入和输出进行张量的加叠。
在MobileNet-V2中stride=1和stride=2走的流程是不同的,在stride=2时,因为input与output的大小不同,所以没有添加shortcut结构。
2.1 linear bottleneck概念:
linear bottleneck即去掉第二个PW的激活函数,论文作者认为激活函数在高维空间能够有效增加非线性,在低纬空间会破坏特征,不如线性的效果好。由于第二个PW的功能就是降维,因此不适合使用Relu6。
注:ReLU对于负的输入,输出全为零;而原本特征就已经经过PW卷积压缩,再经过ReLU的话,又要“损失”一部分特征。ReLU6如图5,就是普通的ReLU,但是限制最大输出值为 6,这是为了在移动端设备 使用float16/int8等低精度的时候,也能有很好的数值分辨率,如果对ReLU的激活范围不加限制,如果激活值非常大,分布在一个很大的范围内,则低精度的float16/int8无法很好地精确描述如此大范围的数值,带来精度损失。
2.2 倒置残差(Inverted Residual)对比标准残差(Residual)
Residual使用标准卷积提取特征,Inverted Residual始终使用DW卷积提特征。
Residual连接channel数多的特征表述,Inverted Residual连接channel数少的特征表述。
Residual先降维 (0.25倍)、卷积、再升维,而 Inverted Residual则是 先升维 (6倍)、卷积、再降维。直观的形象上来看,ResNet的微结构是沙漏形,而 MobileNet-V2 则是纺锤形,刚好相反。因此论文作者将MobileNet-V2的结构称为Inverted Residual Block。
2.3 网络结构
网络整体配置如下图所示:
t是输入通道膨胀系数expansion factor
c是输出通道数
n是该模块重复次数
s是该模块第一次重复的步长,后面重复都是stride=1
MobileNetV2网络结构分析相关推荐
- [人工智能-深度学习-33]:卷积神经网络CNN - 常见分类网络- LeNet网络结构分析与详解
作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...
- MobileNet系列(2):MobileNet-V2 网络详解
MobileNet-V2论文:Inverted Residuals and Linear Bottlenecks, MobileNet-V2网络是由google团队在2018年提出的,相比Mobile ...
- 实验课程】MindSpore1.0:MobileNetV2网络实现微调(关键词:MobileNetV2、Fine Tune)
转载地址:https://bbs.huaweicloud.com/forum/thread-83710-1-1.html 作者: archimekai 使用MobileNetV2网络实现微调(Fine ...
- YOLO v3 网络结构分析
YOLO v3 网络结构分析 微信公众号:幼儿园的学霸 个人的学习笔记,关于OpenCV,关于机器学习, -.问题或建议,请公众号留言; 最近在看Tensorflow,没有经过实践的学习总感觉很心虚, ...
- 056、macvlan网络结构分析(2019-03-25 周一)
参考https://www.cnblogs.com/CloudMan6/p/7383919.html macvlan不依赖linux bridge brctl show 可以确认没有创建新的bridg ...
- YOLO v3网络结构分析
转载于https://blog.csdn.net/qq_37541097/article/details/81214953 相信阅读了YOLO v3论文的小伙伴们会发现为什么这次的论文篇幅这么少?除去 ...
- Unet++语义分割网络(网络结构分析+代码分析)
1. 前言 许多初入视觉深度学习的小伙伴都会以图像分类网络作为入门案例来学习,个人觉得语义分割网络可以作为分类网络之后第二个学习的案例,因为其网络结构一般较为简单,只要对每个像素点进行分类即可.刚好课 ...
- 保姆级使用PyTorch训练与评估自己的MobileNetV2网络教程
文章目录 前言 0. 环境搭建&快速开始 1. 数据集制作 1.1 标签文件制作 1.2 数据集划分 1.3 数据集信息文件制作 2. 修改参数文件 3. 训练 4. 评估 5. 其他教程 前 ...
- ResNet网络结构分析
转载自:https://zhuanlan.zhihu.com/p/79378841,本文只做个人记录学习使用,版权归原作者所有. 今天回顾了ResNet的论文Deep Residual Learnin ...
最新文章
- Java 多线程 之 银行ATM实例
- 错误解决记录------------mysql连接本地数据库显示can't get hostname for your address
- Android BCM4330 蓝牙BT驱动调试记录
- Alcatel 6850实现静态路由
- 神策数据与 UCloud 达成战略合作,开启高效企业服务新模式
- 无需写代码!可一键生成前后端代码的开源工具
- puts函数,C语言puts函数用法详解
- JS获取当前日期及时间
- 快速实现Apache二级域名的方法
- 正则表达式之零宽断言
- C#LeetCode刷题之#15-三数之和(3Sum)
- gevent模块的使用
- 使用Electron将Web项目打包成windows桌面应用
- 添加class值_Java 虚拟机(二) - Class 文件结构
- api调用实例python_调用阿里云API 的demo示例(java/python)
- hibernate操作数据库
- VSS2005源代码管理
- 推荐工具 HBuilder
- win7计算机名称格式,win7笔记本电脑如何显示文件扩展名
- 由batch 命令setlocal enabledelayedexpansion引发的