论文笔记:ShuffleNet v1

ShuffleNet是一种专为移动设备设计的高效神经网络架构,通过引入组卷积和通道混洗解决资源受限问题,实现在ImageNet分类和MSCOCO目标检测上的高性能。论文对比了多种轻量化模型,展示了ShuffleNet在速度和精度上的优势。

ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

ShuffleNet v1

1、四个问题

  1. 要解决什么问题?
    • 为算力有限的嵌入式场景下专门设计一个高效的神经网络架构。
  2. 用了什么方法解决?
    • 使用了两个新的操作:pointwise group convolution(组卷积)和channel shuffle。
    • 根据这两个操作构建了ShuffleUnit,整个ShuffleNet都是由ShuffleUnit组成。
  3. 效果如何?
    • 在ImageNet分类和MS COCO目标检测任务上取得了比其他轻量化模型更高的准确率,如MobileNet v1。
    • 在ARM设备上,ShuffleNet的速度比AlexNet快了13倍。
  4. 还存在什么问题?
    • 超参数如组卷积的组数以及通道压缩比率等需要根据实际情况决定,不同任务下需要自行调整。
    • 网络实时性并不能单纯以浮点计算量来衡量,还存在memory access cost(MAC)等因素的干扰,并不能仅仅根据计算量就认为ShuffleNet是最快的。

2、论文概述

2.1、简介

  • 作者发现,一些state-of-the-art的模型架构,如Xception、ResNeXt等,使用在小型网络模型中效率都比较低。这是因为使用大量的 1 × 1 1 \times 1 1×1卷积会消耗大量计算资源。为此,提出了pointwise group convolution来减少计算复杂度。
  • 使用组卷积也会带来一些副作用,因为组卷积切断了组内通道与组外通道之间的联系,仅仅能从组内通道提取特征信息。为此,论文中又提出了 channel shuffle,来帮助信息在各通道之间流通。

2.2、相关工作

  • 高效模型设计:
    • GoogLeNet
    • SqueezeNet
    • ResNet
    • SENet
    • NASNet
  • 组卷积(group convolution):
    • 最初由AlexNet提出,应用在2块GPU上并行处理。
    • Xception中提出了深度可分离卷积(depthwise separable convolution)。
    • MobileNet中也使用到了深度可分离卷积。
  • Channel Shuffle
    • 此前的文献中较少提及channel shuffle操作。
  • 模型加速
    • 目标是再保证模型准确率的前提下尽可能加速前向推理过程。
    • 常见方法:
      • 网络剪枝。
      • 量化和分解。
      • 知识蒸馏。

2.3、Channel Shuffle for Group Convolutions

  • 在小型网络中,逐点卷积(pointwise convolution)不仅会占用较多计算资源并且还会让通道之间具有过多复杂的约束,这会显著地降低网络性能。在较大的模型中使用pointwise convolution也许相对好一些,然而小模型并不需要过多复杂的约束,否则容易导致模型难以收敛,并且容易陷入过拟合。
  • 一个解决办法是:通道间稀疏连接(channel sparse connections)。使用组卷积可以一定程度上解决这个问题。
  • 但是,使用组卷积也会带来副作用:信息只会在组内流通,组间不会有信息交互。为此,还需要使用channel shuffle来解决信息不流通的问题。

在这里插入图片描述

  • channel shuffle操作:
    1. 假设一个卷积层上有 g g g组,每组有 n n n个通道,最后输出就有 g × n g \times n g×n个通道。
    2. reshape成 ( g , n ) (g, n) (g,n)
    3. 转置成 ( n , g ) (n, g) (n,g)
    4. 展开(flatten),再分成 g g g组,作为下一层的输入。

2.4、Shuffle Unit

在这里插入图片描述

  • 图(a)是残差卷积模块,标准 3 × 3 3 \times 3 3×3卷积转换为深度可分离卷积与 1 × 1 1 \times 1 1×1卷积的组合。中间加上BN和ReLU,构成基本单元。
  • 图(b)是Shuffle Unit,将图(a)中的第一个 1 × 1 1 \times 1 1×1卷积替换成 1 × 1 1 \times 1 1×1组卷积(GConv)和channel shuffle组成的单元。
  • 图©是用于降采样的Shuffle Unit,深度可分离卷积的步长改为2,为了适配主分支的feature map,在shortcut上加上了步长也为2的平均池化(AVG Pool 3 × 3 3 \times 3 3×3)。
  • 虽然深度可分离卷积可以减少计算量和参数量,但在低功耗设备上,与密集的操作相比,计算/存储访问的效率更差。故在ShuffleNet上只在bottleneck上有使用深度可分离卷积,尽可能的减少开销。

2.5、网络架构

在这里插入图片描述

2.6、实验

  • Pointwise Group Convolutions
    • 从结果来看,有组卷积的一致比没有组卷积(g=1)的效果要好。注意组卷积可获得更多通道间的信息,我们假设性能提高受益于更多的feature map通道数,这也有助于我们对更多信息进行编码。并且,较小的模型的feature map通道也更少,这意味着能更多地从增加feature map上获益。

在这里插入图片描述

  • Channel Shuffle vs. No Shuffle

在这里插入图片描述

  • Comparison with Other Structure Units

在这里插入图片描述

  • Comparison with MobileNets and Other Frameworks

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

  • Actual Speedup Evaluation

在这里插入图片描述

3、参考资料

  1. https://blog.youkuaiyun.com/u011974639/article/details/79200559
  2. https://www.cnblogs.com/heguanyou/p/8087422.html
ShuffleNet V2与ShuffleNet V1各自的优缺点如下: ShuffleNet V1的优点: 1.计算效率高:ShuffleNet V1中引入了通道重排和组卷积等技术,可以在保持较高的模型性能的同时,大大降低模型的计算代价。 2.模型复杂度低:ShuffleNet V1中的网络结构相对较为简单,参数量较小,可以在资源受限的场景下得到较好的应用。 3.实现简单:ShuffleNet V1的网络结构相对简单,实现起来较为容易。 ShuffleNet V1的缺点: 1.模型性能有限:ShuffleNet V1中的网络结构相对简单,导致其在一些复杂任务上的表现不如其他模型。 2.特征表达能力不足:ShuffleNet V1中的网络结构可能会限制其对特征的表达能力,导致其在一些任务上表现不佳。 ShuffleNet V2的优点: 1.模型性能较高:ShuffleNet V2中引入了更加高效的通道重排方式和更多的组卷积层等技术,可以进一步提高模型的性能。 2.特征表达能力更强:ShuffleNet V2中的网络结构相对更加复杂,可以提高其对特征的表达能力。 3.网络结构更加精细:ShuffleNet V2中对网络的设计进行了更加精细的调整,可以提高模型的性能和效率。 ShuffleNet V2的缺点: 1.计算代价较高:ShuffleNet V2中引入了更多的组卷积层等技术,导致其模型的计算代价相对较高。 2.模型复杂度较高:ShuffleNet V2中的网络结构相对较为复杂,参数量较大,可能在资源受限的场景下难以应用。 3.实现复杂:ShuffleNet V2的网络结构相对较为复杂,实现起来较为困难。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值