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. 免费FQ工具

    这里使用免费的`梯子` 下载赛风 选择Windows下载 下载好之后,直接点击打开,它会自动连接,什么也不要设置,下载的就是一个exe文件,连接成功会打开一个网页,不用管

  2. DedeAMPZ配置php的curl扩展

    DedeAMPZ配置php的curl扩展  curl是一个利用URL语法在命令行方式下工作的文件传输工具.它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, ...

  3. pathlib:处理文件路径的瑞士军刀

    pathlib是python3.4中引入的模块,专门用来处理路径的.个人觉得这是一个非常非常强大的模块,可以说是处理路径的一把瑞士军刀,下面我们就来看看它的功能. 在pathlib中有一个Path这个 ...

  4. iQOO5G手机卡槽公布

    华为.中兴.一加.OPPO.vivo各自的5G手机相继拿到了3C强制认证,小米的也在路上,5G手机真的越来越近了. 今天,vivo iQOO还公布了其5G手机所用的卡槽样式,可以看到采用了双卡设计,同 ...

  5. dcoker_ubuntu中安装python2.7

    1.apt-get update 2.apt-get install python2.7 或 1.sudo apt-get update 2.sudo apt-get install python2. ...

  6. Redis和Memcache对比及选择(转载)

    原文地址:http://blog.csdn.net/sunmenggmail/article/details/36176029 没有必要过多的关注性能.由于Redis只使用单核,而Memcached可 ...

  7. loj2589 「NOIP2009」Hankson 的趣味题

    对于质因数分解理解还不到位. 此题可知$lcm$是$x$的倍数,$x$是$lcm$的约数,只要在$lcm$的分解质因数里对每一个质因子讨论种数即可. 具体来说,对于$lcm$的一个质因子$p$,讨论$ ...

  8. mysql 8.0.18 手工安装记录

    mysql 8.0.18 手工安装记录 为了日常方便,特记录如下. 一.安装系统依赖包 #.系统依赖包安装 yum -y install make gcc-c++ cmake bison-devel ...

  9. MAC使用终端DISKUTIL命令给U盘分区(解决window优盘只有200M)

    1.先使用diskutil list命令查看U盘代号 2.然后用下面的命令把它格式化: sudo diskutil eraseDisk FAT32 USB_NAME MBRFormat /dev/di ...

  10. viewport的相关知识点

    主要说一些viewport的基本原理以及使用 ㈠概念 手机浏览器是把页面放在一个虚拟的“窗口”(viewport)中,通常这个虚拟的“窗口”(viewport)比屏幕宽,这样就不用把每个网页挤到很小的 ...