ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices
1. 摘要
作者介绍了一种计算非常高效的 CNN 结构称之为 ShuffleNet,它是专门为计算资源非常有限的移动设备设计的。
这种新的结构主要用到了两种操作:分组点卷积(pointwise group convolution )和通道打乱(channel shuffle),这可以极大降低计算代价同时保持模型的准确率。
2. 介绍和相关工作
经典的 Xception 和 ResNeXt 结构在网络非常小的时候因为密集的 1×1 卷积而变得低效,因此作者提出用分组点卷积来减小 1×1 卷积的计算代价。为了避免分组卷积带来副作用,作者想出了一个新奇的通道打乱操作来帮助信息在不同的通道之间流动。与其它流行的轻量级网络相比,在同样的计算负担下,ShuffleNet 可以允许特征图的通道数更多,这有利于编码更多的信息,对小模型的效果提升是非常重要的。
分组卷积最早用在 AlexNet 中来将模型分布到不同的 GPU 上,然后在 ResNeXt 中验证了其有效性,而深度可分离卷积在 Xception 和 MobileNet 中取得了不错的效果。因此,作者在这里一种新奇的形式将分组卷积和深度可分离卷积这两个技术进一步结合了起来。
3. 方法
3.1. 为分组卷积设计的通道打乱
在微型网络结构中, 由于 1×1 卷积计算代价很高,在计算资源有限的情况下特征图的通道数就会受限,这会极大地降低模型的准确率。为了解决这个问题,一个简单的方案就是通道之间进行稀疏连接,也就是对 1×1 卷积也进行分组。
如下图左边所示,输出特征图只与一部分输入特征图相连接。但这样就会带来一个副作用,叠加几个卷积层后,输出的特征图都只由输入特征的其中一部分产生,比如图中红色部分的特征就只由输入的红色部分特征得来,而蓝色部分的特征就只由输入的蓝色部分特征得来。这阻止了不同组之间特征的信息流动因此会减弱网络的表示能力。

如果我们允许分组卷积可以获取不同组的特征,那么输入通道和输出通道之间就会完全相关联,如上图中间部分所示。先把每个组内的特征分为几个子组特征,再把每个子组特征分别送到下一层的每个组中去卷积。这个过程可以有效和优雅地通过一个通道打乱操作来实现:假设一层卷积分为了 \(g\) 个组,输出有 \(g×n\) 个通道,那么我们先把输出通道维度变为 \((g, n)\),转置后再展平作为下一层的输入。注意即使两个卷积划分的组数不一样,这个操作也是有效的,而且这个操作也是可微的,也就是说可以嵌入到网络中进行端到端的训练。

第一层卷积分为 3 个组,第二层卷积也分为 3 个组。

第一层卷积分为 2 个组,第二层卷积分为 4 个组。
3.2. ShuffleNet 单元

从最左边的瓶颈结构开始,作者将第一个 1×1 卷积替换为一个 1×1 的分组卷积加上一个通道打乱操作,然后是一个 3×3 的深度卷积,最后一个 1×1 的分组卷积用来保证输入和输出的维度一致。最后没有通道打乱是因为加上的话结果也差不多,注意在深度卷积后面没有激活函数。
针对有步长的情况,作者做了两个改进,一个是跳跃连接改为一个 3×3 的平均池化,然后是对特征进行拼接而不是逐元素的相加。
假设输入大小为 \(c×h×w\),瓶颈层的通道数为 \(m\),那么 ResNet 单元需要 \(hw(2cm+9m^2)\) FLOPs,ResNext 单元需要 \(hw(2cm+9m^2/g)\) FLOPs,而 ShuffleNet 单元只需要 \(hw(2cm/g+9m)\) FLOPs,\(g\) 代表分组卷积的组数。也就是说,在同样的计算负担下,ShuffleNet 可以允许更多的特征通道,这对小型网络处理信息是非常重要的。
除此之外,在 ShuffleNet 中深度卷积只应用在瓶颈层的特征图,因为尽管它理论上复杂度比较低,但是在移动设备上比较难以实现。
3.3. 整体网络结构

网络中的 ShuffleNet 单元可以划分为三个阶段,每个阶段的第一个单元步长为 2,每经过一个阶段特征图通道数翻倍,瓶颈层的特征图通道数为输出通道数的四分之一。
分组卷积的组数 \(g\) 控制着点卷积的稀疏性,在同一个复杂度下,组数越多,特征图的通道数就可以越大。另外,我们还可以用一个缩放因子 \(s\) 来调整网络每一层的通道数,这样的网络表示为 \(ShuffleNet \space s×\)。
4. 实验结果
在 ImageNet 的分类误差如下所示:

可以看到,分组点卷积一致要比不分组好,而且小的模型从中受益更多,分组后分类误差降低得更多。

可以看到,在分组比较多的情况下,通道打乱操作更有利于模型的性能提升,也进一步验证了不同组之间特征融合的重要性。

与用其它基本单元比如 VGG、ResNet 等组成的网络以及 MobileNet 相比,ShuffleNet 都展示了其优越的性能。
获取更多精彩,请关注「seniusen」!

ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices的更多相关文章
- 【论文阅读】ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices
ShuffleNet: An Extremely Efficient Convolutional Neural Network for MobileDevices
- [论文阅读] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications (MobileNet)
论文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 本文提出的模型叫Mobi ...
- 【论文翻译】MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 论文链接:https://arxi ...
- [论文理解] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications Intro MobileNet 我 ...
- 深度学习论文翻译解析(十七):MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
论文标题:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 论文作者:Andrew ...
- 论文笔记——MobileNets(Efficient Convolutional Neural Networks for Mobile Vision Applications)
论文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications MobileNet由Go ...
- 深度学习论文翻译解析(六):MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Appliications
论文标题:MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Appliications 论文作者:Andrew ...
- 【MobileNet-V1】-2017-CVPR-MobileNets Efficient Convolutional Neural Networks for Mobile Vision Applications-论文阅读
2017-CVPR-MobileNets Efficient Convolutional Neural Networks for Mobile Vision Applications Andrew H ...
- 【网络结构】MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications论文解析
目录 0. Paper link 1. Overview 2. Depthwise Separable Convolution 2.1 architecture 2.2 computational c ...
随机推荐
- 通用mapper将另外一个同名的表生成在同一个实体及mapper中
今天遇见了一个在网上都搜索不到的错误,使用通过mapper生成实体及mapper文件时会将另外一个数据库的同名文件生成在一个实体及mapper中,这样就会造成一个实体和mapper中有两个表的字段,经 ...
- Delphi 子界类型
- AVAYA_Site_administrator软件简单操作
AVAYA_Site_administrator软件简单操作 1.配置软件(第一次登录) 点击File>New>Voice System 在弹出对话框随意输入一个名称 下一步,默认选择 ...
- automake中Makefile.am和configure.ac的格式及编译过程
step1:写Makefile.am step2:执行autoscan,会生成configurae.scan,修改configure.scan内容之后,命名为configure.ac step3:执行 ...
- iptables 设置特定IP访问指定端口
一.添加规则:设置禁止所有IP访问指定端口8075 [root@zabbix_server ~]# iptables -I INPUT -p tcp --dport -j DROP 二.测试telne ...
- 03-spring框架—— AOP 面向切面编程
3.1 动态代理 动态代理是指,程序在整个运行过程中根本就不存在目标类的代理类,目标对象的代理对象只是由代理生成工具(不是真实定义的类)在程序运行时由 JVM 根据反射等机制动态生成的.代理对象与目标 ...
- RMQ最大值最小值
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> using ...
- 【CF1181D】Irrigation
题目大意:给定 M 个城市,每年会选出一个城市举办比赛,现给出前 N 年城市举办比赛的情况.在接下来的年份中,每年会在举办比赛次数最小的城市举办比赛,如果有很多城市举办次数均为最小值,则在编号最小的城 ...
- Newsgroups数据集研究
1.数据集介绍 20newsgroups数据集是用于文本分类.文本挖据和信息检索研究的国际标准数据集之一. 数据集收集了大约20,000左右的新闻组文档,均匀分为20个不同主题的新闻组集合. 一些新闻 ...
- LOJ-6282-数列分块入门6
链接: https://loj.ac/problem/6282 题意: 给出一个长为 的数列,以及 个操作,操作涉及单点插入,单点询问,数据随机生成. 思路: vector 维护每个区间, 当某个区间 ...