MobileNet网络学习笔记
目录
MobileNetV1
论文地址
思想
回顾标准卷积
深度可分离卷积
深度卷积
逐点卷积
为什么要把标准卷积换成深度可分离卷积
标准卷积FLOPs和Parameters计算公式:
深度可分离卷积FLOPs和Parameters计算
MobileNetV1的基本结构和标准卷积对比
MobileNetV1结构
结构
参数量和计算量分布
MobilenetV1的实验结果
ImageNet数据集上和GoogleNet、VGG16的表现对比
目标检测中的表现
MobileNetV2
论文
V1的问题
V2的两点优化
Inverted Residuals(倒置残差结构)
Linear bottlenecks
MobileNet V3
论文
主要特点
MobileNetV1
论文地址
https://arxiv.org/abs/1704.04861 收录:CVPR2017 ,发表时间 2017.04
思想
MobileNetV1就是把VGG中的标准卷积层换成深度可分离卷积了,大大减少了运算量和参数量
专注于移动端和嵌入式系统中的轻量级CNN
超参数控制通道和分辨率
相对于VGG16精度下降了只有0.9%,但是参数量只有VGG16的1/30
回顾标准卷积
过程就是相乘相加,关于形状转换 :
输入形状是Cin*Hin*Win
卷积核形状是3*3*3*2,2是个数(简单理解为一列即一个卷积核)
输出是2*3*3(因为卷积padding为2步长为2)
这里可以知道一个卷积核的channel需要和输入的通道数相同(重点),卷积核的个数和输出通道数相同。
深度可分离卷积
可分离卷积其实分为空间可分离和深度可分离,前者不在这里讲述。
深度可分离卷积分两步:第一步深度卷积(Depthwise Convolution),第二步逐点卷积(Pointwise Convolution)
深度卷积
和标准卷积不一样的地方是,标准卷积的卷积核通道数和输入图像通道数一致,深度卷积是输入的每一个通道单独用一个单通道的卷积核来卷积,因此输出最终要的特点是通道数不变
上图中可见,输入是3通道,卷积核是3个不同的单通道卷积核(用三种颜色区别开了),3个卷积核分别对输入的3个通道卷积,得出通道数不变的输出。
逐点卷积
逐点卷积核标准卷积的唯一区别就是驻点卷积采用的是1*1卷积核,效果是达到升维和降维
关于1*1卷积核优点;网络中1*1的卷积核作用以及大小卷积核的优缺点_RayChiu_Labloy的博客-CSDN博客_小卷积核的缺点
为什么要把标准卷积换成深度可分离卷积
因为作者通过研究发现这样的结构会更少的参数,更少的运算,但是能达到差的不是很多的结果
标准卷积FLOPs和Parameters计算公式:
参考:计算VGG16的参数量_RayChiu_Labloy的博客-CSDN博客
FLOPs就是,分别对应输出通道数、输出形状高和宽、输入通道数、卷积核大小。参数量就是Co*Ci*K*K
深度可分离卷积FLOPs和Parameters计算
FLOPs = Ci * K * K * H * W + M * N * W * H
paramters = Ci * K * K + M * N
可以对比一下标准卷积可以发现,深度可分离卷积最重要的是少了一个卷积核的通道数
参数量我们计算一下:
标准卷积参数量/深度可分离卷积参数量 =(K * K * M* N)/ (Ci * K * K + M * N) =
注意上式中的M对应上边的
我们通常所使用的是3×3的卷积核,也就是会下降到原来的九分之一到八分之一
MobileNetV1的基本结构和标准卷积对比
中间出现了一个ReLU6:
作者认为ReLU6作为非线性激活函数,在低精度计算下具有更强的鲁棒性。
MobileNetV1结构
结构
首先是一个3x3的标准卷积,s2进行下采样。然后就是堆积深度可分离卷积,并且其中的部分深度卷积会利用s2进行下采样。然后采用平均池化层将feature变成1x1,根据预测类别大小加上全连接层,最后是一个softmax层。整个网络有28层,其中深度卷积层有13层。
参数量和计算量分布
MobilenetV1的实验结果
ImageNet数据集上和GoogleNet、VGG16的表现对比
目标检测中的表现
MobileNetV2
论文
https://arxiv.org/abs/1801.04381 收录:CVPR2018 发表时间 2018.01
V1的问题
实际使用的时候, 发现深度卷积部分的卷积核比较容易训废掉,出现了模型退化现象,训完之后发现深度卷积训出来的卷积核有不少是空的。
V2的两点优化
先说结论:相比 V1,准确率更好,模型更小
左边是v1的block,没有Shortcut并且带最后的ReLU6。
右边是v2的加入了1×1升维,引入Shortcut并且去掉了最后的ReLU,改为Linear。步长为1时,先进行1×1卷积升维,再进行深度卷积提取特征,再通过Linear的逐点卷积降维。将input与output相加,形成残差结构。步长为2时,因为input与output的尺寸不符,因此不添加shortcut结构,其余均一致。
Inverted Residuals(倒置残差结构)
V1很像VGG,V2借鉴了ResNet的思想,引入了shortcut结构
V2和ResNet都采用了 1×1 -> 3 ×3 -> 1 × 1 的模式,以及都使用Shortcut结构
但是不同点:
- ResNet 先降维 (0.25倍)、卷积、再升维。
- MobileNetV2 则是 先升维 (6倍)、卷积、再降维。
刚好V2的block刚好与Resnet的block相反,作者将其命名为Inverted residuals。就是论文名中的Inverted residuals,沙漏型变为了柳叶形:
Linear bottlenecks
首先说明一下ReLU6,卷积之后通常会接一个ReLU非线性激活,在Mobile v1里面使用ReLU6,ReLU6就是普通的ReLU但是限制最大输出值为6(对输出值做clip),这是为了在移动端设备float16的低精度的时候,也能有很好的数值分辨率,如果对ReLU的激活范围不加限制,输出范围为0到正无穷,如果激活值非常大,分布在一个很大的范围内,则低精度的float16无法很好地精确描述如此大范围的数值,带来精度损失。
本文提出,最后输出的ReLU6去掉,直接线性输出,理由是:ReLU变换后保留非0区域对应于一个线性变换,仅当输入低维时ReLU能保留所有完整信息。
在看MobileNet v1的时候,我就疑问为什么没有把后面的ReLU去掉,因为Xception已经实验证明了Depthwise卷积后再加ReLU效果会变差,作者猜想可能是Depthwise输出太浅了应用ReLU会带来信息丢失,而MobileNet还引用了Xception的论文,但是在Depthwise卷积后面还是加了ReLU。在MobileNet v2这个ReLU终于去掉了,并用了大量的篇幅来说明为什么要去掉。
MobileNet V3
论文
https://arxiv.org/abs/1905.02244 谷歌在2019年3月21日提出
主要特点
- 论文推出两个版本:Large 和 Small,分别适用于不同的场景;
- 使用NetAdapt算法获得卷积核和通道的最佳数量;
- 继承V1的深度可分离卷积;
- 继承V2的具有线性瓶颈的残差结构;
- 引入SE通道注意力结构;
- 使用了一种新的激活函数h-swish(x)代替Relu6,h的意思表示hard;
- 使用了Relu6(x + 3)/6来近似SE模块中的sigmoid;
- 修改了MobileNetV2后端输出head;
参考:轻量级神经网络“巡礼”(二)—— MobileNet,从V1到V3 - 知乎
轻量级骨架首选:MobileNetV3完全解析 - 知乎
MobileNet网络学习笔记相关推荐
- python中socket模块常用吗_python网络学习笔记——socket模块使用记录
此文章记录了笔者学习python网络中socket模块的笔记. 建议初次学习socket的读者先读一遍socket模块主要函数的介绍. socket模块的介绍可以参考笔者的前一篇关于socket官方文 ...
- 深度学习(三十二)半监督阶梯网络学习笔记
半监督阶梯网络学习笔记 原文地址:http://blog.csdn.net/hjimce/article/details/50877704 作者:hjimce 一.相关理论 这几年深度学习声名鹊起,一 ...
- SDN软件定义网络 学习笔记(4)--数据平面
SDN软件定义网络 学习笔记(4)--数据平面 1. 简介 2. SDN数据平面架构 2.1 传统网络交换设备架构 2.2 SDN交换设备架构 2.3 数据平面架构图 3. SDN芯片与交换机 3.1 ...
- 华为网络学习笔记(一) 网络通信协议
华为网络学习笔记(一) 一.网络通信协议 通讯协议:通讯协议又称通信规程,是指通信双方对数据传送控制的一种约定.约定中包括对数据格式,同步方式,传送速度,传送步骤,检纠错方式以及控制字符定义等问题做出 ...
- SDN软件定义网络 学习笔记(1)--基本概念
SDN软件定义网络 学习笔记(1)--基本概念 1. 定义 2. 提出背景 3. 体系结构 1. 定义 软件定义网络(Software Defined Network,SDN),顾名思义,SDN 与传 ...
- DHT网络 学习笔记
原文见:http://codemacro.com/2013/05/19/crawl-dht/ [学习笔记] 原bt下载依赖于tracker,后者不存储资源本身,但存储着拥有资源(片段)的peer列表. ...
- TSN时间敏感网络|学习笔记-看这一篇就够了
近年来,随着汽车电子电气架构的演进,车载以太网以其高带宽.技术成熟和灵活部署等优势成功占据汽车主干网地位,但是传统以太网具有的时间不确定性,对自动驾驶.智能网联等前沿需求带来巨大挑战.为此,IEEE ...
- ResNet网络学习笔记。
ResNet网络学习 看b站 霹雳吧啦Wz 的视频总结的学习笔记! 视频的地址 大佬的Github代码 1.ResNet详解 ResNet 网络是在2015年由微软实验室提出,斩获当年 ImageNe ...
- VGG网络学习笔记。
VGG网络学习 看b站 霹雳吧啦Wz 的视频总结的学习笔记! 视频的地址 大佬的Github代码 1.VGG网络详解 VGG 在2014年由牛津大学著名研究组 VGG(Visual Geometry ...
最新文章
- Linux网络常用工具分类介绍
- python秒数转化为时间用户jianpang_Python中文转为拼音
- py06-python基础-字典
- Session.run() Tensor.eval()
- Python3——FTP(文件传输协议)
- Jeecg 切换默认首页方法
- US-CERT 公布近三年遭利用频率最高的十大安全漏洞
- Linux基本命令之seq
- 一些排序算法的Python实现
- 计算机中文件夹属性有哪些,文件和文件夹属性
- ad18常用快捷键可以修改吗_AD18的常用操作及快捷键
- logstash清除sincedb_path上传记录,重传日志数据
- 车主因眼睛小被自动驾驶误判?——智能座舱CV体验的经典corner case剖析 by 资深AI产品经理@方舟...
- 网易2018校招数据分析师笔试答案作答
- 【数据分析自学】一、系统认识数据分析
- 商城小程序线上线下结合能带来什么优势?
- 使用kubespary安装k8s集群
- 七彩虹计算机主板维修,七彩虹C .H61U v28主板维修一例
- 我的世界服务器物品管道,我的世界漏斗管道怎么做 教你连接漏斗箱子
- word中自动生成的目录中,编号和文本间距过大
热门文章
- 广度优先爬虫python_python广度优先
- 新概念英语(第四册,旧版)复习(原文及全文翻译)——Lesson 1 - Finding Fossil Man(寻找化石人)
- 绝地求生国际服苹果版服务器维修,绝地求生国际服ios手机版
- 购买您的工作从家庭企业经营使用这些技巧
- 小程序+云开发---基础篇
- 一文带你搞懂vue中的this.$nextTick
- 思科高级配置(配置标准ACL)
- 解决input输入框与select下拉框水平不对齐
- 数据结构和算法(十)递归-迷宫游戏
- HTML ins 标签