ShuffleNet_v1论文阅读

article/2025/11/10 16:47:12

ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices   2017年

原文地址:https://arxiv.org/pdf/1707.01083.pdf

声明:文章仅作知识整理、分享,如有侵权请联系作者删除博文,谢谢!

主要贡献:

提出:逐点群卷积(pointwise group convolution)和通道混洗(channel shuffle),大量的减少了1*1卷积核的使用。逐点群卷积会大量减少参数,但也会有幅作用,故在此基础上,论文提出通道混洗(channel shuffle)帮助信息流通。ShuffleNet允许使用更多的特征映射通道,在小型网络上有助于编码更多信息。

1、摘要

论文介绍一个效率极高的CNN架构ShuffleNet,专门应用于计算力受限的移动设备。新的架构利用两个操作:逐点群卷积(pointwise group convolution)和通道混洗(channel shuffle),与现有先进模型相比在类似的精度下大大降低计算量。在ImageNet和MS COCO上ShuffleNet表现出比其他先进模型的优越性能。

2、介绍

现许多CNNs模型的发展方向是更大更深,这让深度网络模型难以运行在移动设备上,针对这一问题,许多工作的重点放在对现有预训练模型的修剪、压缩或使用低精度数据表示。

ShuffleNet是探索一个可以满足受限的条件的高效基础架构。论文的Insight是现有的先进basic架构如Xception和ResNeXt在小型网络模型中效率较低,因为大量的1×1卷积耗费很多计算资源,论文提出了逐点群卷积(pointwise group convolution)帮助降低计算复杂度;但是使用逐点群卷积会有幅作用,故在此基础上,论文提出通道混洗(channel shuffle)帮助信息流通。基于这两种技术,我们构建一个名为ShuffleNet的高效架构,相比于其他先进模型,对于给定的计算复杂度预算,ShuffleNet允许使用更多的特征映射通道,在小型网络上有助于编码更多信息。

论文在ImageNet和MS COCO上做了相关实验,展现出ShuffleNet设计原理的有效性和结构优越性。同时论文还探讨了在真实嵌入式设备上运行效率。

3、相关工作

高效模型设计: CNNs在CV任务中取得了极大的成功,在嵌入式设备上运行高质量深度神经网络需求越来越大,这也促进了对高效模型的探究。例如,与单纯的堆叠卷积层,GoogleNet增加了网络的宽度,复杂度降低很多;SqueezeNet在保持精度的同时大大减少参数和计算量;ResNet利用高效的bottleneck结构实现惊人的效果。Xception中提出深度可分卷积概括了Inception序列。MobileNet利用深度可分卷积构建的轻量级模型获得了先进的成果;ShuffleNet的工作是推广群卷积(group convolution)和深度可分卷积(depthwise separable convolution)。

模型加速: 该方向旨在保持预训练模型的精度同时加速推理过程。常见的工作有:通过修剪网络连接或减少通道数减少模型中连接冗余;量化和因式分解减少计算中冗余;不修改参数的前提下,通过FFT和其他方法优化卷积计算消耗;蒸馏将大模型的知识转化为小模型,使得小模型训练更加容易;ShuffleNet的工作专注于设计更好的模型,直接提高性能,而不是加速或转换现有模型。

4、研究方法

针对群卷积的通道混洗(Channel Shuffle for Group Convolutions)

现代卷积神经网络会包含多个重复模块。其中,最先进的网络例如Xception和ResNeXt将有效的深度可分离卷积或群卷积引入构建block中,在表示能力和计算消耗之间取得很好的折中。但是,我们注意到这两个设计都没有充分采用1×1的逐点卷积,因为这需要很大的计算复杂度。例如,在ResNeXt中3×3卷积配有群卷积,逐点卷积占了93.4%的multiplication-adds。

在小型网络中,昂贵的逐点卷积造成有限的通道之间充满约束,这会显著的损失精度。

组卷积(Group Convolutions):为了解决这个问题,一个直接的方法是应用通道稀疏连接,例如组卷积(group convolutions)。通过确保每个卷积操作仅在对应的输入通道组上,组卷积可以显著的降低计算损失。然而,如果多个组卷积堆叠在一起,会有一个副作用: 某个通道输出仅从一小部分输入通道中导出,如下图(a)所示,这样的属性降低了通道组之间的信息流通,降低了信息表示能力。

如果我们允许组卷积能够得到不同组的输入数据,即上图(b)所示效果,那么输入和输出通道会是全关联的。具体来说,对于上一层输出的通道,我们可做一个混洗(Shuffle)操作,如上图©所示,再分成几个组,feed到下一层。

对于这个混洗操作,有一个有效高雅(efficiently and elegantly)的实现:

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

  • 1.有g×n个输出通道

  • 2.reshape为(g,n)

  • 3.再转置为(n,g)

  • 4.平坦化,再分回g组作为下一层的输入

示意图如下:

这样操作优点在于是可微的,模型可以保持end-to-end训练。

5、Shuffle单元

前面我们讲了通道混洗的好处了,在实际过程中我们构建了一个ShuffleNet unit,便于构建实际模型。

  • 图(a)是一个残差模块。对于主分支部分,我们可将其中标准卷积3×3拆分成深度分离卷积

  • 图(b)即ShuffleNet unit,将第一个1×1卷积替换为逐点组卷积,再作通道混洗,主分支最后的1×1Conv改为1×1GConv,为了适配和恒等映射做通道融合。配合BN层和ReLU激活函数构成基本单元。

  • 图©即是做降采样的ShuffleNet unit,这主要做了两点修改:

    • 在辅分支加入步长为2的3×3平均池化;

    • 原本做元素相加的操作转为了通道级联,这扩大了通道维度,增加的计算成本却很少。

归功于逐点群卷积和通道混洗,ShuffleNet unit可以高效的计算。相比于其他先进的单元,在相同设置下复杂度较低。

其中g代表组卷积数目。即表示分组数:给定一个计算限制,ShuffleNet可以使用更宽的特征映射。我们发现这对小型网络很重要,因为小型网络没有足够的通道传递信息。

需要注意的是:虽然深度卷积可以减少计算量和参数量,但在低功耗设备上,与密集的操作相比,计算/存储访问的效率更差。故在ShuffleNet上我们只在bottleneck上使用深度卷积,尽可能的减少开销。

6、网络结构

在上面的基本单元基础上,我们提出了ShuffleNet的整体架构:

主要分为三个阶段:

  • 每个阶段的第一个block的步长为2,下一阶段的通道翻倍;
  • 每个阶段内的除步长其他超参数保持不变;
  • 每个ShuffleNet unit的bottleneck通道数为输出的1/4(和ResNet设置一致)。

这里主要是给出一个baseline。在ShuffleNet Unit中,参数g控制逐点卷积的连接稀疏性(即分组数),对于给定的限制下,越大的g会有越多的输出通道,这帮助我们编码信息。

定制模型需要满足指定的预算,我们可以简单的使用放缩因子s控制通道数,ShuffleNets×即表示通道数放缩到s倍。

7、实验

实验在ImageNet的分类集上做评估,大多数遵循ResNeXt的设置,除了两点:

  • 权重衰减从1e-4降低到了4e-5
  • 数据增强使用较少的aggressive scale 增强

这样做的原因是小型网络在训练过程通常会遇到欠拟合而不是过拟合问题。

7.1、On the Importance of Pointwise Group Convolutions

为了评估逐点卷积的重要性,比较相同复杂度下组数从1到8的ShuffleNet模型,同时我们通过放缩因子s控制网络宽度,扩展为3种:

从结果来看,有组卷积的一致比没有组卷积(g=1)的效果要好。注意组卷积可允许获得更多通道的信息,我们假设性能的收益源于更宽的特征映射,这帮助我们编码更多信息。并且,较小的模型的特征映射通道更少,这意味着能多的从特征映射上获取收益。

表2还显示,对于一些模型,随着g增大,性能上有所下降。意味组数增加,每个卷积滤波器的输入通道越来越少,损害了模型表示能力

值得注意的是,对于小型的ShuffleNet 0.25×,组数越大性能越好,这表明对于小模型更宽的特征映射更有效。受此启发,在原结构的阶段3删除两个单元,即表2中的arch2结构,放宽对应的特征映射,明显新的架构效果要好很多。

7.2、Channel Shuffle vs. No Shuffle

Shuffle操作是为了实现多个组之间信息交流,下表表现了有无Shuffle操作的性能差异:

在三个不同复杂度下带Shuffle的都表现出更优异的性能,尤其是当组更大(arch2,g=8),具有shuffle操作性能提升较多,这表现出Shuffle操作的重要性。

7.3、Comparison with Other Structure Units

我们对比不同unit之间的性能差异,使用表1的结构,用各个unit控制阶段2-4之间的Shuffle unit,调整通道数保证复杂度类似。

可以看到ShuffleNet的表现是比较出色的。有趣的是,我们发现特征映射通道和精度之间是存在直观上的关系,以38MFLOPs为例,VGG-like, ResNet, ResNeXt, Xception-like, ShuffleNet模型在阶段4上的输出通道为50, 192, 192, 288, 576,这是和精度的变化趋势是一致的。我们可以在给定的预算中使用更多的通道,通常可以获得更好的性能。

上述的模型不包括GoogleNet或Inception结构,因为Inception涉及到太多超参数了,做为参考,我们采用了一个类似的轻量级网络PVANET。结果如下:

ShuffleNet模型效果要好点。

7.4、Comparison with MobileNets and Other Frameworks

与MobileNet和其他模型相比:

相比于不同深度的模型对比,可以看到我们的模型要比MobileNet的效果要好,这表明ShuffleNet的有效性主要来源于高效的结构设计,而不是深度。

7.5、Generalization Ability

我们在MS COCO目标检测任务上测试ShuffleNet的泛化和迁移学习能力,以Faster RCNN为例:

ShuffleNet的效果要比同等条件下的MobileNet效果要好,我们认为收益源于ShuffleNet的设计。

7.7、Actual Speedup Evaluation

评估ShuffleNet在ARM平台的移动设备上的推断速度。

三种分辨率输入做测试,由于内存访问和其他开销,原本理论上4倍的加速降低到了2.6倍左右。

8、结论

论文针对现多数有效模型采用的逐点卷积存在的问题,提出了组卷积和通道混洗的处理方法,并在此基础上提出了一个ShuffleNet unit,后续对该单元做了一系列的实验验证,证明ShuffleNet的结构有效性。


http://chatgpt.dhexx.cn/article/kBQA87Zj.shtml

相关文章

shufflenetv1详解

shufflenetv1 知识的搬运工又来了 论文地址:shufflenetv1论文地址 ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices。 shufflenet是一篇关于降低深度学习计算量的论文,其可以运行在手机等移动设备端,发…

ShuffleNet 系列(1): ShuffleNet v1 理论讲解

ShuffleNet V1 概述 论文:ShuffleNet:An Extremely Efficient Convolutional Netural Network for Mobile Devices ShuffleNet跟MobileNet一样也是一种轻量化网络,ShuffleNet V1.0版本中作者有提出Channel shuffle的概念。在ShuffleNet Block当中使用的…

ShuffleNet心得

channel shuffle: 1)利用group ,再组间进行深度卷积。 优点:1)极大减小计算量(FLOPS) 由于每个filter不再是和输入的全部feature map做卷积,而是仅仅和一个group的feature map做卷…

ShuffleNet V2

原文链接: ShuffleNet V2 论文阅读笔记​blog.csdn.net 论文链接: Practical Guidelines for Efficient CNN Architecture Design​arxiv.org 我自己基于 caffe 框架的复现: anlongstory/ShuffleNet_V2-caffe​github.com 本文主要是对目…

【CV】ShuffleNet:通过 GroupConv 和 ChannelShuffle 实现轻量化 CNN 架构

论文名称:ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices 论文下载:https://arxiv.org/abs/1707.01083 论文年份:2017 论文被引:3925(2022/05/11) 论文代码&#xf…

shufflenet_v1

本文使用的是轻量级模型shufflenet,使用keras框架进行训练。 参考链接(模型详解):https://blog.csdn.net/zjn295771349/article/details/89704086 代码如下: 1.data_process.py(数据处理:这里…

ShuffleNet V1

论文:https://arxiv.org/abs/1707.01083 1 问题提出 当前的CNN发展趋势是网络越大,性能越好。但是,在计算能力有限的应用场景下(无人机、机器人及智能手机上),因为内存和计算能力的限制,无法部署大规模的神经网络。虽…

ShuffleNet 算法的介绍

引言 ShuffleNet是旷视科技最近提出的一种计算高效的CNN模型,其和MobileNet和SqueezeNet等一样主要是想应用在移动端。所以,ShuffleNet的设计目标也是如何利用有限的计算资源来达到最好的模型精度,这需要很好地在速度和精度之间做平衡。Shuf…

ShuffleNet网络学习笔记

目录 ShuffleNet V1 论文 介绍 Channel Shuffle ShuffleNet v1 单元 ShuffleNet v2 论文 介绍 高效模型的设计准则 ShuffleNet V2结构 ShuffleNet v2和DenseNet 总结 ShuffleNet V1 论文 ShuffleNet: An Extremely Efficient Convolutional Neural Network for M…

shuffleNet系列

目录 分组卷积 分组卷积的矛盾——计算量 分组卷积的矛盾——特征通信 channel shuffle ShuffleNet V1 ShuffleNet基本单元 ShuffleNet网络结构 对比实验 ShuffleNet V2 设计理念 网络结构 对比实验 分组卷积 Group convolution是将输入层的不同特征图进行分组&a…

Shufflenet解读

论文:ShuffleNet: AnExtremely Efficient Convolutional Neural Network for Mobile Devices 论文提到模型加速的方法为: 1) 修剪网络,减少分支(pruningnetwork connections)。 2) 对于一个…

ShuffleNet模型解读

原文链接::https://arxiv.org/abs/1707.01083 Abstract 论文提出了一种计算效率极高的卷积神经网络结构——ShuffleNet,它是专门为计算能力有限的移动平台设计的。这个新结构用来两个新操作——逐渐群卷积(pointwise group convulution)和通…

ShuffleNet

ShuffleNetV2 的构建模块。首先,卷积步长为 1 的瓶颈块中,先将输入特征按通道一分为二,化成两个分支来 代替原先的分组卷积结构,并且每个分支中的卷积层都 是保持输入输出通道数相同。其中一个分支不采取任何操作以减少参数量和计…

轻量级网络——ShuffleNetV2

文章目录 1.ShuffleNetV2的介绍2.ShuffleNetV2的四条实用指南G1) Equal channel width minimizes memory access cost (MAC)G2) Excessive group convolution increases MACG3) Network fragmentation reduces degree of parallelismG4) Element-wise operations are non-negli…

轻量化网络结构——ShuffleNet

论文:《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices》—Face 1.shuffle具体来说是channel shuffle,是将各部分的feature map的channel进行有序的打乱,构成新的feature map,以解决group…

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

文章目录 论文阅读代码实现modeltrainpredict 实验结果 论文阅读 感谢P导 ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices 文章中提出了一个非常有效的Architecture——ShuffleNet,主要使用两种操作,分组PW卷积…

ShuffleNet V1、V2 EfficientNet 迁移学习

一、ShuffleNet V1 ShuffleNet Unit中全是GConv和DWConv。 在左侧的网络结构中,对于输入特征矩阵,有串行的GConv1和GConv2,对于普通的组卷积的计算,只针对该组内的channel的信息进行计算。组卷积虽然能够减少参数和计算量&#xf…

论文阅读笔记:ShuffleNet

1. 背景 由于深度学习模型结构越来越复杂,参数量也越来越大,需要大量的算力去做模型的训练和推理。然而随着移动设备的普及,将深度学习模型部署于计算资源有限基于ARM的移动设备成为了研究的热点。 ShuffleNet[1]是一种专门为计算资源有限的…

轻量级神经网络——shuffleNet

文章目录 轻量级神经网络——shuffleNetshuffleNet1逐点分组卷积(Pointwise group convolution)✨✨✨通道重排(channel shuffle)✨✨✨shuffleNet Unit✨✨✨shuffleNet1的网络结果和效果 轻量级神经网络——shuffleNet shuffleNet1 在之前,已经讨论过一种轻量级神…

【zynq】‘Underfined reference Xil_out 32’报错解决方法

在zynq book Exercise 4A实验中,按照文档流程会报错‘Underfined reference Xil_out 32’。没有找到#include "xil_io.h"。无法直接在”led_controller.h”中加入”xil_io.h”。 可以在"xparameters.h"加入#include“xil_io.h”解决。 插入后l…