《ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design》论文笔记

1. 概述

导读:文章指出现有使用例如FLOPs作为网络计算复杂度度量的方式是不准确的,还应该考虑诸如内存访问开销(MAC)以及平台特性等因素。这篇文章在固定的平台下进行实验分析(度量为速度与延迟),并给出了一些具有使用价值的网络设计指导意见。同时还提出了ShuffleNet的改进版本ShuffleNet v2,在网络性能与精度之间权衡做到了当时的state-of-the-art。

下面是当时的网络在不同平台下的实验结果,从网络的精度、FLOPs、时间消耗上进行分析对比:
在这里插入图片描述
作者从中做出如下总结:

  • 1)文章指出除了FLOPs之外额外的因素需要被考虑进来,比如Memory Access Cost(MAC),特别是在使用分组卷积的时候;此外模型的并行程度也是影响计算时间长短的因素;
  • 2)拥有相同FPLOs的模型会由于平台的关系拥有不同运行时间。在最新的CUDNN库中专门针对3x3的卷积进行了优化,在CNN网络中广泛使用的卷积分解并不会带来对应比例的速度提升;

2. 高效网络实践指导

这里使用MobileNet v2与ShuffleNet v1做为实验分析对象,在GPU(1080Ti)与ARM(高通810)上进行实验,得到这两个模型在两个平台上的运行时间分布对比,见图2所示
在这里插入图片描述
文中通过对比实验分析,得出了如下的网络设计指导意见:

  • 1)相同的channel宽度能最小化MAC。现有的轻量级网络大多采用了深度可分离卷积,其一般的卷积核大小为1x1,其占据了较大的计算量。对于输入为 c 1 c_1 c1输出为 c 2 c_2 c2,特征图宽高为 w , h w,h w,h的卷积,其计算量为 B = h w c 1 c 2 B=hwc_1c_2 B=hwc1c2,对应的内存访问花销为 M A C = h w ( c 1 + c 2 ) + c 1 c 2 MAC=hw(c_1+c_2)+c_1c_2 MAC=hw(c1+c2)+c1c2,它们之间的关系可以表示为:
    M A C ≥ 2 h w B + B h w MAC \ge 2\sqrt{hwB}+\frac{B}{hw} MAC2hwB +hwB
    当且仅当在输入与输出channel数目相同的时候取到下限。当然这只是理论的分析,实际还需要考虑到平台上具体的实现形式。对此呢,文章在保持总的FLOPs不变的情况下变化输出与输出的channel比例得到其时间消耗的关系,见表1所示
    在这里插入图片描述
  • 2)过多的分组卷积会增加MAC。对于分组卷积其卷积的计算量为 B = h w c 1 c 2 g B=\frac{hwc_1c_2}{g} B=ghwc1c2,其中g为分组的数量,则MAC与计算量之间的关系可以表示为:
    M A C = h w ( c 1 + c 2 ) + c 1 c 2 g = h w c 1 + B g c 1 + B h w MAC=hw(c_1+c_2)+\frac{c_1c_2}{g}=hwc_1+\frac{Bg}{c_1}+\frac{B}{hw} MAC=hw(c1+c2)+gc1c2=hwc1+c1Bg+hwB
    从上面的关系可以看出睡着分组的增加MAC也是在增加的,对此进行的实验结果见表2所示
    在这里插入图片描述
    因而谨慎合适地选取分组的数量能够有效减少时间消耗,提升网络速度,这自然要在速度与网络性能上进行权衡。
  • 3)网络的破碎(分支结构)会减少并行化程度。在类似于GoogLeNet与一些自动生成的网络结构里面多分支的结构是被广泛使用的,这样的结构对网络精度的提升是有帮助的,但是它会降低网络的效率,这是由于其对并行程度较高的GPU并不是很友好的。文中对分支结构对网络带来的影响做了实验分析,见表3所示
    在这里插入图片描述
    4)不可忽视的Element-wise操作。这些操作诸如,ReLU、AddTensor、AddBias,虽然带来的计算量比较小,但是其占用的MAC是很大的。特别的,depthwise convolution卷积可以看做是MAC与FLOPs比值较高的例子。表4中对比了移除ReLU与shortcut对网络速度带来的影响,见表4
    在这里插入图片描述

3. 网络设计

Shuffle Unit
在这里插入图片描述
ShuffleNet v2版本网络结构:
在这里插入图片描述

3. 实验结果

首先,将文章提出的网络结构与现有的一些分类网络性能对比:
在这里插入图片描述
大网络性能对比:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值