《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices 》来自face++,发表于CVPR-2017, 其主要采用两个“新”操作对卷积神经网络结构进行修改,达到提高计算效率的目的。

arXiv: https://arxiv.org/pdf/1707.01083.pdf
github: https://github.com/farmingyard/ShuffleNet

创新点:
1. 利用pointwise group convolution 和 channel shuffle 这两个操作来设计卷积神经网络模型, 以达到不怎么损失性能的前提下,减少模型使用的参数数量。

(其中,Pointwise group convolution 和channel shuffle是有一定关系的,channel shuffle 因pointwise group convolution 而起,正如3.1标题: . Channel Shuffle for Group Convolutions;
作者说 Xception和ResNeXt采用了大量的1*1卷积核,从而使得网络参数更少,因此这里采用 pointwise group convolution,但采用了pointwise group convolution 会导致信息流通不当,因此提出了channel shuffle,所以channel shuffle是有前提的,使用的话要注意!)

Group convolution
Group convolution 自Alexnet就有,当时因为硬件限制而采用分组卷积;之后在2016年的ResNeXt中,表明采用group convolution可获得高效的网络;再有Xception和MobileNet均采用depthwise convolution, 这些都是最近出来的一系列轻量化网络模型

group convolution 与depthwise convolution 以及 channel-wise convolution 都是一样的,具体可见MobileNet里有分析depth-wise convolution的卷积方式,也可参考另外一篇博客:http://blog.csdn.net/shuzfan/article/details/77129716;

如下图(a)所示, 为了提升模型效率,采用group convolution,但会有一个副作用,即:“outputs from a certain channel are only derived from a small fraction of input channels.”
于是采用channel shuffle来改善各组间“信息不流通”问题,如下图(b)所示。
具体方法为:把各组的channel平均分为g(下图g=3)份,然后依次序的重新构成feature map

Channel shuffle 的操作非常简单,接下来看看shufflenet,shufflenet借鉴了Resnet的思想,从基本的resnet 的bottleneck unit 逐步演变得到 shufflenet 的bottleneck unit,然后堆叠的使用shufflenet bottleneck unit获得shufflenet;

下图展示了shufflenet unit的演化过程
图(a):是一个带有depthwise convolution的bottleneck unit;
图(b):作者在(a)的基础上进行变化,对1*1 conv 换成 1*1 Gconv,并在第一个1*1 Gconv之后增加一个channel shuffle 操作;
图(c): 在旁路增加了AVG pool,目的是为了减小feature map的分辨率;因为分辨率小了,于是乎最后不采用Add,而是concat,从而“弥补”了分辨率减小而带来的信息损失。

文中提到两次,对于小型网络,多多使用通道,会比较好。
“this is critical for small networks, as tiny networks usually have an insufficient number of channels to process the information”
因此,以后若涉及小型网络,可考虑如何提升通道使用效率!

胡思乱想:
把shuffleNet和mobilenet的创新点放在一起,想了一想,感觉shufflenet的shuffle操作和mobilenet 在depth-wise convolution之后用一个1*1的卷积的目的是一样的啊!

都是为了抵消depth-wise convolution 带来的“信息流通不畅”的问题,只不过shufflenet采用各通道之间交换信息,mobilenet采用1*1卷积进行“融合”;那么是否就depth-wise convolution带来的问题——“信息流通不畅”继续做文章?? 只要把经过depth-wise convolution之后的通道,“搞”到一起,然后起个名字——“搞”Net

轻量化网络:ShuffleNet相关推荐

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

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

  2. 突破置换模块计算瓶颈,MSRA开源轻量版HRNet,超越主流轻量化网络!|CVPR2021...

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨happy 审稿丨邓富城 编辑丨极市平台 极市导读 本文从HRNet与轻量化网络ShuffleN ...

  3. 【论文解读】突破置换模块计算瓶颈,MSRA开源轻量版HRNet,超越主流轻量化网络!|CVPR2021...

    作者丨happy 审稿丨邓富城 编辑丨极市平台 极市导读 本文从HRNet与轻量化网络ShuffleNet的组合出发,针对置换模块存在的计算瓶颈问题,提出了一种高效条件通道加权单元替换1x1卷积,并得 ...

  4. 轻量化网络:ShuffleNet V2

    Guideline 1-4: ShuffleNet V2 疑问: ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture ...

  5. 经典网络结构 (八):轻量化网络 (SqueezeNet, MobileNet, ShuffleNet)

    目录 SqueezeNet Fire Module: Squeeze and Expand SqueezeNet SqueezeNet 总结 MobileNet 深度可分离卷积 (Depthwise ...

  6. 模型加速之轻量化网络

    模型加速之轻量化网络 当前物体检测结构大都依赖使用卷积网络进行特征提取,即 Backbone,通常使用 VGGNet.ResNet 等优秀的基础网络,但是这些网络往往计算量巨大,依赖这些基础网络的检测 ...

  7. 实时互动下视频 QoE 端到端轻量化网络建模

    在实时视频互动中,影响观众对视频体验的有较多且复杂的因素,包括:画质.流畅度以及与其耦合的观看设备等.传统客观算法会利用网络传输或编解码参数拟合接收端人的感知体验,或者使用图像质量结合其他相关参数拟合 ...

  8. 深度学习之轻量化网络

    人工智能大力发展的趋势下,移动端和嵌入式设备上部署是迫切需求,由于现如今模型越来越深,越来越大,所以轻量化是有必要的. 轻量化网络要做什么呢?在尽量保持精度的前提下,从体积和速度两方面对网络进行轻量化 ...

  9. 旷世轻量化网络ShuffulNetV2学习笔记

    旷世轻量化网络ShuffulNetV2学习笔记 ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design Ab ...

  10. 【魔改YOLOv5-6.x(上)】结合轻量化网络Shufflenetv2、Mobilenetv3和Ghostnet

    文章目录 前言 一.Shufflenetv2 论文简介 模型概述 加入YOLOv5 二.Mobilenetv3 论文简介 模型概述 深度可分离卷积 逆残差结构 SE通道注意力 h-swish激活函数 ...

最新文章

  1. 无线节能组信标为什么会自动切换? 排查故障的过程真的像谜一样无法解释
  2. Python5:Script
  3. 送女朋友一朵 “电子” 花,手把手教你!
  4. 欧拉心算(反演 + 积性函数筛)
  5. 导入工程时出现错误:Invalid project description http://berdy.iteye.com/blog/1115279...
  6. [转帖]ASP.NET4中不要相信Request.Browser.Cookies,Form验证要用UseCookies
  7. 利用MATLAB编写高斯积分
  8. 基于JAVA医疗器械销售电子商城计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  9. PDF文件修改最常用的方式有哪些?
  10. adb通过局域网连接手机
  11. java候选码计算的替换法_数据库闭包和候选码求解方法
  12. Android实现支付宝AR功能,Android接入支付宝实现支付功能实例
  13. c语言mac地址加冒号,如何通过在Excel中添加冒号来格式化单元格中的mac地址?
  14. TypeError: unhashable type
  15. MySQL中使用UUID()函数生成主键
  16. C# 调用DXGI采集屏幕
  17. python练习题:求10万以内的质数
  18. 牛散村:国内低代码平台有哪些?low code平台整理分享!
  19. 【Java】基础、Java 数据类型
  20. MySQL 关键字模糊匹配按照匹配度排序

热门文章

  1. 最新版spark1.1.0集群安装配置
  2. LeetCode OJ - Reorder List
  3. 4.redis设计与实现--跳跃表
  4. vlc源码分析(四) 调用libts接收TS流
  5. Activiti进阶(七)——排他网关(ExclusiveGateWay)
  6. B2B多商铺初期权限数据库设计
  7. Alyona and copybooks
  8. Java多线程系列--“JUC锁”10之 CyclicBarrier原理和示例
  9. 搭建Hadoop平台(一)之配置用户名及hosts文件
  10. pku3670 Eating Together