写在前面:此文只记录了下本人感觉需要注意的地方,不全且不一定准确。详细内容可以参考文中帖的链接,比较好!!!
最近看的轻量化神经网络:SqueezeNet、Xception、MobileNet、ShuffleNet

时间轴
  • 2016.02 伯克利&斯坦福提出 SqueezeNet
  • 2016.10 google提出 Xception
  • 2017.04 google提出 MobileNet
  • 2017.07 face++提出 ShuffleNet
模型轻量化的方法
  • 卷积核分解:使用1xN和NX1卷积核代替NXN卷积核;
  • 使用深度压缩deep compression方法:网络剪枝、量化、哈弗曼编码;
  • 奇异值分解;
  • 硬件加速器;
  • 低精度浮点数保存;
小模型的好处:
  • 在分布式训练中,与服务器通信需求小;
  • 参数少,从云端下载模型的数量少;
  • 更适合在嵌入式、移动设备上部署;
几种模型小结:
  1. SqueezeNet,提出了fire module【使用 1x1 卷积替换部分 3x3 卷积核,减少参数量;同时在squeeze阶段,限制 input feature map的channel数,又一次减少参数】。在整体网络模型中减少pooling,平均每3个fire module后有一个max pooling,分类前的全连接层替换成average pooling。
  2. Xception,参差结构+可分离卷积(Separable Convolution)【对每一个通道先进行 1x1 卷积,再进行 3x3 卷积】。在Inception v3模型上改进, 参数量没减少,精度提高。
  3. MobileNetv1,宽度\分辨率因子 + 深度可分离卷积(Depthwise Separable Convolution)【对每一个通道先进行 3x3 卷积,再进行 1x1 卷积】。参数量下降
  4. MobileNetv2,倒残差结构+深度可分离卷积+relu6。发现relu对低维特征损失较严重,1)提出反残差模块【先升维:增加信息量,再降维度:较少参数】;2)较少block最后的Relu改为lineat,减少信息破坏。移动部署float16,所以换成relu6
  5. MobileNetv3,倒残差结构+深度可分离卷积+se注意力机制+h-swish激活。使用堆积木手段和nas搜索出一个small结构、一个large结构
  6. ShuffleNet,深度可分离卷积+分组卷积+shuffle机制 。借鉴Resnext的分组卷积思想,不过全部只用1x1卷积核,减少参数量;加入了shuffle机制(通道清洗),加强了通道间的信息流通,一定程度上缓解了由于分组卷积导致的通道关系损失。

1. SqueezeNet

设计原则
  • 替换3x3的卷积kernel为1x1的卷积kernel
  • 减少输入3x3卷积的input feature map数量
  • 减少pooling
Fire Module

Fire Module是本文的核心构件,思想非常简单,就是将原来简单的一层conv层变成两层:squeeze层+expand层,各自带上Relu激活层。在squeeze层里面全是1x1的卷积kernel,数量记为S11;在expand层里面有1x1和3x3的卷积kernel,数量分别记为E11和E33,要求S11 < input map number即满足上面的设计原则(2)。expand层之后将1x1和3x3的卷积output feature maps在channel维度拼接起来。

总体模型

总共有9层fire module,中间穿插一些max pooling,最后是global avg pooling代替了fc层(参数大大减少)。在开始和最后还有两层最简单的单层conv层,保证输入输出大小可掌握。
SqueezeNet参考

2. Xception

设计原则
  • 提出Separable Convolution (可分离卷积)【与 MobileNet的不同】
  • 参差思想
Separable Convolution Module

先进行普通卷积操作,再对 1×11×1 卷积后的每个channel分别进行 3×33×3 卷积操作,最后将结果 concat:

总体模型

Xception 的结构基于 ResNet,但是将其中的卷积层换成了Separable Convolution Module。如下图所示。整个网络被分为了三个部分:Entry,Middle和Exit。

Xception 在 ImageNet 上,比 Inception-v3 的准确率稍高, 同时参数量有所下降,在 Xception 中加入的类似 ResNet 的残差连接机制也显著加快了Xception的收敛过程并获得了显著更高的准确率。但由于其计算过程较为零散,现有的卷积神经网络实现中它的效率都不够高,此网络旨在提高精度、不在挺高速度。

Xception参考
深度可分离卷积理解

3. MobileNet

设计原则
  • 采用depthwise separable convolution,就是分离卷积核,减少参数量
  • 设置宽度因子width multipler【在channel上】和分辨率因子resolution multiplier【在feature map的长、宽上】,减小参数量
Depthwise Separable Convolution


depthwise separable convolution

总体模型


MobileNet参考

MobeileNetv1与v2的区别:

参考1:详解MobileNetV2
参考2:MobileNet v1 和 MobileNet v2

  1. v1使用了Depthwise Separable Convolution,通过将跨通道的3 x 3卷积换成单通道的3 x 3卷积 + 跨通道的1 x 1卷积来达到减少参数的目的【3 x 3卷积核约变为原理的1/8】
  2. v2在v1的基础上加入了残差结构,同时发现relu对低维通道的feature map映射到高维再映射回低维具有非常严重的信息损失。针对这个问题,两个办法,1.使用Inverted residuals【因为relu对于高维特征影响较小,所以扩展成高维经过relu再压缩】;2.使用Linear Bottleneck【因为高维映射到低维,使用relu会滤掉有用信息,直接换成线性激活函数】
  3. Q:为什么低维特征效果不好?
    A:因为低维特征对应的卷积核也少,卷积核少学到图片内的特征就很有限,所以效果不好

模块结构:

4. ShuffleNet

设计原则
  • 借鉴resnext分组卷积思想,但不同的是采用1x1卷积核;
  • 进行通道清洗,加强通道间的信息流通,提高信息表示能力;
  • 采用mobilenet的Depthwise Separable Convolution方法;
分组卷积

借鉴resnext的分组卷积,全部使用1x1卷积核

channel shuffle机制

什么是通道shuffle,就是在分组卷积后得到的feature map不直接进行concat,先将每组feature map按通道打乱,重新concat,如下图所示:

对于一个卷积层分为g组,

  1. 分组卷积后一共得到g×n个输出通道的feature map;
  2. 将feature map 进行 reshape为(g,n);
  3. 进行转置为(n,g);
  4. 对转置结果flatten,再分回g组作为下一层的输入。
shuffle unit

a是标准的残差结构,不过是3x3卷积核使用了mobilenet中的depthwise convolution操作;
b是在a的基础上加了本文的通道shuffle操作,先对1x1卷积进行分组卷积操作,然后进行channel shuffle;
c是在旁路加了一步长为2的3x3的平均池化,并将前两者残差相加的操作改为了通道concat,增加了通道数量。

总体模型

参考链接:

  1. https://blog.csdn.net/liuxiao214/article/details/81875251

轻量化神经网络篇(SqueezeNet、Xception、MobileNet、ShuffleNet)相关推荐

  1. 轻量化卷积神经网络:SqueezeNet、MobileNet、ShuffleNet、Xception

    一 引言 二 轻量化模型 2.1 SqueezeNet 2.2 MobileNet 2.3 ShuffleNet 2.4 Xception 三 网络对比 一 引言 自2012年AlexNet以来,卷积 ...

  2. 轻量化神经网络总结:SqueezeNet、Xception、MobileNet v1、MobileNet v2、ShuffleNet v1、ShuffleNet v2

    2016.02 伯克利&斯坦福提出 SqueezeNet 在ImageNet上实现了与Alexnet相似的效果,参数只有其1/50 核心点: 1x1卷积核代替3x3卷积核 Squeeze La ...

  3. 深度学习与计算机视觉教程(10) | 轻量化CNN架构 (SqueezeNet,ShuffleNet,MobileNet等)(CV通关指南·完结)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/37 本文地址:https://www.showmeai.tech/article-d ...

  4. 纵览轻量化卷积神经网络:SqueezeNet、MobileNet、ShuffleNet、Xception

    https://zhuanlan.zhihu.com/p/32746221 https://zhuanlan.zhihu.com/p/35405071 一.简介 虽然网络性能得到了提高,但随之而来的就 ...

  5. 目标检测YOLO实战应用案例100讲-基于轻量化神经网络的目标检测算法研究与应用

    目录 基于轻量化深度神经网络的目标检测方法研究 基于深度学习的目标检测方法

  6. 轻量化网络:SqueezeNet

    SqueezeNet 发表于ICLR-2017,作者分别来自Berkeley和Stanford,SqueezeNet不是模型压缩技术,而是 "design strategies for CN ...

  7. 轻量化神经网络模型总结:SqueezeNet、Xception、MobileNet、ShuffleNet

    总结今年来的几个轻量化模型:SqueezeNet.Xception.MobileNet.ShuffleNet 下面给出时间轴: 2016.02 伯克利&斯坦福提出 SqueezeNet 201 ...

  8. 轻量化网络—ShuffleNet V1 V2理解

    轻量化网络-ShuffleNetV2理解 ShuffleNetV2原始论文:https://openaccess.thecvf.com/content_ECCV_2018/html/Ningning_ ...

  9. 【深度学习】轻量化CNN网络MobileNet系列详解

    深度学习100问 Author:louwill Machine Learning Lab MobileNet系列作为轻量级网络的代表,使得CNN轻量化和移动端的部署成为可能.MobileNet系列目前 ...

最新文章

  1. Centos下MongoDB的安装与配置
  2. php 字符串 中文位置,怎样查找中文字符的位置呢
  3. 用户NT AUTHORITYNETWORK SERVICE登录失败解决方法
  4. java发邮件_使用MATLAB自动发邮件
  5. Java反射之内部类
  6. Python学习笔记--函数
  7. 谷歌本地不支持websocket_django开发-websocket的实现
  8. sql server 2005 COUNT_BIG (Transact-SQL)
  9. 求100~200间的所有素数
  10. 《北京IT报道》你可以成为下一个《万万没有想到》?
  11. spring整合cxf,轻松编写webService客户端、服务端
  12. python接口调用把执行结果追加到测试用例中
  13. macOS版本大升级,这几项的细节值得你关注
  14. LCD1602显示中文汉字
  15. win10系统Jmeter下载安装详解
  16. matlab相关系数的显著性检验
  17. 不用 qlv 格式转换成 mp4 - 优雅的下载腾讯视(mp4 格式)
  18. windows server 2003 IE升级方法
  19. ts找不到primeng/primeng
  20. Python 3基础语法知识点都在这里了,如果还不能入门就不能怪我了

热门文章

  1. 洛谷P1273 有线电视网
  2. ISE创建Microblaze软核(三)
  3. 冈萨雷斯--数字图像处理(MATLAB版)----书籍相关网站
  4. Mac OS X搭建C#开发环境
  5. MOSS工作流任务权限控制
  6. 数据文件坏删除数据文件
  7. 做csdn图片水印中最亮的崽
  8. Linux下服务器搭建(1)——Linux下搭建FTP服务器 vsftpd服务
  9. mysql 模式名表名不支持_MySQL sql_mode 说明(及处理一起sql_mode引发的问题)
  10. 别被忽悠了!阿里内部人士:我们正悄悄地拆掉中台,你还在建?