ShuffleNet v2

论文ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design(ECCV 2018)

ShuffleNet v2设计原则

从实际效果触发,确立一些建立高效网络的基本设计原则,在 ShuffleNet v1 【 1 】 ^{【1】} 1 基础上改进

通道比例

FLOPs (floating point of operations):浮点运算次数,衡量算法/模型复杂度
MFLOPs (million floating point of operations)

由下图可知:FLOPs相近的模型精度和运行速度均相差较大,那么FLOPs作为衡量模型速度的指标是不准确的

在这里插入图片描述
FLOPs相同为什么速度却差别较大?
FLOPs 虽然相同,但是内存访问消耗时间 MAC(memory access cost)不一样

例:若输入特征通道数为 c 1 c_1 c1,卷积核尺寸为 1 × 1 1\times 1 1×1,步长为1,输出特征通道数为 c 2 c_2 c2、尺寸为 h × w h\times w h×w ,则该卷积层 FLOPs
B = h w c 1 c 2 B=hwc_1c_2 B=hwc1c2

所需存储空间:输入特征 + 输出特征 + 卷积核
MAC = h w ( c 1 + c 2 ) + c 1 c 2 ≥ h w 2 c 1 c 2 + c 1 c 2 = 2 h w B + B h w \begin{aligned} \text {MAC}&=hw(c_1+c_2)+c_1c_2\\ &\geq hw2\sqrt{c_1c_2}+c_1c_2\\ &= 2\sqrt{hwB}+\frac{B}{hw} \end{aligned} MAC=hw(c1+c2)+c1c2hw2c1c2 +c1c2=2hwB +hwB

给定 FLOPs ,当 c 1 = c 2 c_1=c_2 c1=c2 时,MAC 可取下界

Table1对上述进行验证,给定FLOPs,采用不同的通道比例,当 c 1 : c 2 c_1:c_2 c1:c2 越接近时,速度越快,与上述吻合
在这里插入图片描述

Group数量

分组卷积 【 1 】 ^{【1】} 1可以减少参数和计算量,但是 FLOPs 降低并不意味着速度更快。将前面例子的 1 × 1 1\times 1 1×1 卷积换成分组卷积,组数为 g g g,则该卷积层FLOPs为:
B = h w c 1 c 2 / g B=hwc_1c_2/g B=hwc1c2/g

所需存储空间只有卷积核减少了:
MAC = h w ( c 1 + c 2 ) + c 1 c 2 g = h w c 1 + B g c 1 + B h w \begin{aligned} \text {MAC}&=hw(c_1+c_2)+\frac{c_1c_2}{g}\\ &=hwc_1+\frac{Bg}{c_1}+\frac{B}{hw} \end{aligned} MAC=hw(c1+c2)+gc1c2=hwc1+c1Bg+hwB

由上式可知:当 FLOPs 固定时,group 数量增加 MAC \text {MAC} MAC 也随之增加

Table 2 将 FLOPs 固定, c c c c 1 c_1 c1 c 2 c_2 c2 之和,随着 group 数增加,为保持 FLOPs 基本不变, c c c 也相应增加,但速度随之变慢,这与上述吻合

在这里插入图片描述

分支数量

下表中:2-fragment-series 表示一个block中有2个卷积层串行;2-fragment-parallel表示一个block中有2个卷积层并行。由此可知:支路多对于并行计算不利
在这里插入图片描述

Element-Wise操作

如下图所示:element-wise操作虽然FLOPs不大,但是时间消耗占比却不少,应当少用

在这里插入图片描述
ReLU、Add、AddBias等 element-wise 操作 FLOPs 小,但是 MAC \text {MAC} MAC 大,如下表:取消 Relu 和 Short-cut层的 Add 后,速度有较大提升
在这里插入图片描述

ShuffleNet v2 Unit

由上述可知:设计高效网络应至少注意以下四点:

  • G1:输入输出通道数相等
  • G2:减少使用分组卷积
  • G3:减少分支数量
  • G4:减少element-wise操作

如下图所示:(a)、(b) 为 ShuffleNet v1 Unit:

  • Bottleneck 输入输出维度比例设计违反 G1
  • Group Convolutions违反 G2
  • 使用过多的 Group 增加结构的碎片化违反 G3
  • 在block最后的特征图(宽)上使用 element-wise Relu 和 Add 操作违反 G4
    在这里插入图片描述

图(b)、(c) ShuffleNet v2 Unit 针对 ShuffleNet v1 Unit 改进:

  • Channel Split 操作为变相的Group操作,将输入特征分成两分支,一支为Short-cut,另一支则取消了 1 × 1 1\times1 1×1卷积中的Group操作,因此 Channel Shuffle 移到了最后
  • element-wise Add 操作替换为 concat,并取消了最后的 Relu

下表为 ShuffleNet v2 的整体架构:

在这里插入图片描述

实验

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

参考文献

【1】ShuffleNet v1
【2】MobileNets v1
【3】ShuffleNet v2算法笔记

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值