目录

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日提出

主要特点

  1. 论文推出两个版本:Large 和 Small,分别适用于不同的场景;
  2. 使用NetAdapt算法获得卷积核和通道的最佳数量;
  3. 继承V1的深度可分离卷积;
  4. 继承V2的具有线性瓶颈的残差结构;
  5. 引入SE通道注意力结构;
  6. 使用了一种新的激活函数h-swish(x)代替Relu6,h的意思表示hard;
  7. 使用了Relu6(x + 3)/6来近似SE模块中的sigmoid;
  8. 修改了MobileNetV2后端输出head;

参考:轻量级神经网络“巡礼”(二)—— MobileNet,从V1到V3 - 知乎

轻量级骨架首选:MobileNetV3完全解析 - 知乎

MobileNet网络学习笔记相关推荐

  1. python中socket模块常用吗_python网络学习笔记——socket模块使用记录

    此文章记录了笔者学习python网络中socket模块的笔记. 建议初次学习socket的读者先读一遍socket模块主要函数的介绍. socket模块的介绍可以参考笔者的前一篇关于socket官方文 ...

  2. 深度学习(三十二)半监督阶梯网络学习笔记

    半监督阶梯网络学习笔记 原文地址:http://blog.csdn.net/hjimce/article/details/50877704 作者:hjimce 一.相关理论 这几年深度学习声名鹊起,一 ...

  3. SDN软件定义网络 学习笔记(4)--数据平面

    SDN软件定义网络 学习笔记(4)--数据平面 1. 简介 2. SDN数据平面架构 2.1 传统网络交换设备架构 2.2 SDN交换设备架构 2.3 数据平面架构图 3. SDN芯片与交换机 3.1 ...

  4. 华为网络学习笔记(一) 网络通信协议

    华为网络学习笔记(一) 一.网络通信协议 通讯协议:通讯协议又称通信规程,是指通信双方对数据传送控制的一种约定.约定中包括对数据格式,同步方式,传送速度,传送步骤,检纠错方式以及控制字符定义等问题做出 ...

  5. SDN软件定义网络 学习笔记(1)--基本概念

    SDN软件定义网络 学习笔记(1)--基本概念 1. 定义 2. 提出背景 3. 体系结构 1. 定义 软件定义网络(Software Defined Network,SDN),顾名思义,SDN 与传 ...

  6. DHT网络 学习笔记

    原文见:http://codemacro.com/2013/05/19/crawl-dht/ [学习笔记] 原bt下载依赖于tracker,后者不存储资源本身,但存储着拥有资源(片段)的peer列表. ...

  7. TSN时间敏感网络|学习笔记-看这一篇就够了

    近年来,随着汽车电子电气架构的演进,车载以太网以其高带宽.技术成熟和灵活部署等优势成功占据汽车主干网地位,但是传统以太网具有的时间不确定性,对自动驾驶.智能网联等前沿需求带来巨大挑战.为此,IEEE ...

  8. ResNet网络学习笔记。

    ResNet网络学习 看b站 霹雳吧啦Wz 的视频总结的学习笔记! 视频的地址 大佬的Github代码 1.ResNet详解 ResNet 网络是在2015年由微软实验室提出,斩获当年 ImageNe ...

  9. VGG网络学习笔记。

    VGG网络学习 看b站 霹雳吧啦Wz 的视频总结的学习笔记! 视频的地址 大佬的Github代码 1.VGG网络详解 VGG 在2014年由牛津大学著名研究组 VGG(Visual Geometry ...

最新文章

  1. Linux网络常用工具分类介绍
  2. python秒数转化为时间用户jianpang_Python中文转为拼音
  3. py06-python基础-字典
  4. Session.run() Tensor.eval()
  5. Python3——FTP(文件传输协议)
  6. Jeecg 切换默认首页方法
  7. US-CERT 公布近三年遭利用频率最高的十大安全漏洞
  8. Linux基本命令之seq
  9. 一些排序算法的Python实现
  10. 计算机中文件夹属性有哪些,文件和文件夹属性
  11. ad18常用快捷键可以修改吗_AD18的常用操作及快捷键
  12. logstash清除sincedb_path上传记录,重传日志数据
  13. 车主因眼睛小被自动驾驶误判?——智能座舱CV体验的经典corner case剖析 by 资深AI产品经理@方舟...
  14. 网易2018校招数据分析师笔试答案作答
  15. 【数据分析自学】一、系统认识数据分析
  16. 商城小程序线上线下结合能带来什么优势?
  17. 使用kubespary安装k8s集群
  18. 七彩虹计算机主板维修,七彩虹C .H61U v28主板维修一例
  19. 我的世界服务器物品管道,我的世界漏斗管道怎么做 教你连接漏斗箱子
  20. word中自动生成的目录中,编号和文本间距过大

热门文章

  1. 广度优先爬虫python_python广度优先
  2. 新概念英语(第四册,旧版)复习(原文及全文翻译)——Lesson 1 - Finding Fossil Man(寻找化石人)
  3. 绝地求生国际服苹果版服务器维修,绝地求生国际服ios手机版
  4. 购买您的工作从家庭企业经营使用这些技巧
  5. 小程序+云开发---基础篇
  6. 一文带你搞懂vue中的this.$nextTick
  7. 思科高级配置(配置标准ACL)
  8. 解决input输入框与select下拉框水平不对齐
  9. 数据结构和算法(十)递归-迷宫游戏
  10. HTML ins 标签