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的更多相关文章

  1. 【论文阅读】ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

    ShuffleNet: An Extremely Efficient Convolutional Neural Network for MobileDevices

  2. [论文阅读] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications (MobileNet)

    论文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 本文提出的模型叫Mobi ...

  3. 【论文翻译】MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

    MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 论文链接:https://arxi ...

  4. [论文理解] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

    MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications Intro MobileNet 我 ...

  5. 深度学习论文翻译解析(十七):MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

    论文标题:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 论文作者:Andrew ...

  6. 论文笔记——MobileNets(Efficient Convolutional Neural Networks for Mobile Vision Applications)

    论文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications MobileNet由Go ...

  7. 深度学习论文翻译解析(六):MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Appliications

    论文标题:MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Appliications 论文作者:Andrew ...

  8. 【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 ...

  9. 【网络结构】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 ...

随机推荐

  1. 10.1、LNMT架构

      Java环境安装包下载路径: https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htm ...

  2. 华为ensp问题:云映射本地网卡,直连路由器可以ping通,pc却不行?

    拓扑图:cloud 云映射本机物理网卡:192.168.56.1     R1可以Ping通,所有Pc都不行,路由表也存在路由信息,不知道什么问题?

  3. Windows 聚焦的锁屏壁纸设置为桌面壁纸

    需求: Windows的锁屏壁纸偶尔遇到非常喜欢的壁纸,想设置为桌面壁纸. 步骤如下: 1. “Windows 聚焦”的锁屏壁纸都保存在隐藏文件夹 --- Assets里. a. 打开“资源管理器 b ...

  4. GO (待更新)

    日期20190531,GO AND TOOLS FOR HOME 0  环境搭建 https://golang.org/dl/ Install the Go tools If you are upgr ...

  5. 文本处理工具(cut,sort,tr,grep等)

    命令目录,查看某一个命令可点击直接跳转: 文件查看 cat tac rev more less 按行截取 head tail 转化内容 tr 按列操作 cut paste 分析文本 wc sort u ...

  6. UVALive - 3510 Pixel Shuffle (置换)

    题目链接 有一个n*n的图像和7种置换,以及一个置换序列,求将这个序列重复做几次能得到原图像. 将这些置换序列乘起来可得到一个最终置换,这个置换所有循环节的长度的lcm即为答案. 注意置换是从右往左进 ...

  7. 【BZOJ1176】Mokia

    题目大意:给定一个 N*N 的矩形,有 Q 次操作,每个操作可以是矩形单点修改或查询子矩形的权值和. 题解:CDQ分治适合处理修改操作之间互不影响且支持离线的题目. 满足以上操作条件的显然可以树套树来 ...

  8. 我说CMMI之七:需求管理过程域--转载

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/dylanren/article/deta ...

  9. 【每日一包0001】is-sorted

    github地址:https://github.com/ABCDdouyae... is-sorted 用于判断数组是否被排序了 文档地址:https://www.npmjs.com/package/ ...

  10. 18.configparser模块

    # 创建配置文件 import configparser config = configparser.ConfigParser() # 相当于config = {} 空字典 config[" ...